diff options
-rw-r--r-- | drivers/char/synclinkmp.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/drivers/char/synclinkmp.c b/drivers/char/synclinkmp.c index d55dbf1f9e18..eb31a3b865df 100644 --- a/drivers/char/synclinkmp.c +++ b/drivers/char/synclinkmp.c | |||
@@ -2748,6 +2748,8 @@ static int startup(SLMP_INFO * info) | |||
2748 | 2748 | ||
2749 | info->pending_bh = 0; | 2749 | info->pending_bh = 0; |
2750 | 2750 | ||
2751 | memset(&info->icount, 0, sizeof(info->icount)); | ||
2752 | |||
2751 | /* program hardware for current parameters */ | 2753 | /* program hardware for current parameters */ |
2752 | reset_port(info); | 2754 | reset_port(info); |
2753 | 2755 | ||
@@ -2951,12 +2953,12 @@ static int get_stats(SLMP_INFO * info, struct mgsl_icount __user *user_icount) | |||
2951 | printk("%s(%d):%s get_params()\n", | 2953 | printk("%s(%d):%s get_params()\n", |
2952 | __FILE__,__LINE__, info->device_name); | 2954 | __FILE__,__LINE__, info->device_name); |
2953 | 2955 | ||
2954 | COPY_TO_USER(err,user_icount, &info->icount, sizeof(struct mgsl_icount)); | 2956 | if (!user_icount) { |
2955 | if (err) { | 2957 | memset(&info->icount, 0, sizeof(info->icount)); |
2956 | if ( debug_level >= DEBUG_LEVEL_INFO ) | 2958 | } else { |
2957 | printk( "%s(%d):%s get_stats() user buffer copy failed\n", | 2959 | COPY_TO_USER(err, user_icount, &info->icount, sizeof(struct mgsl_icount)); |
2958 | __FILE__,__LINE__,info->device_name); | 2960 | if (err) |
2959 | return -EFAULT; | 2961 | return -EFAULT; |
2960 | } | 2962 | } |
2961 | 2963 | ||
2962 | return 0; | 2964 | return 0; |