diff options
-rw-r--r-- | drivers/char/applicom.c | 11 |
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/char/applicom.c b/drivers/char/applicom.c index 63313a33ba5f..f4ae0e0fb631 100644 --- a/drivers/char/applicom.c +++ b/drivers/char/applicom.c | |||
@@ -703,14 +703,9 @@ static long ac_ioctl(struct file *file, unsigned int cmd, unsigned long arg) | |||
703 | /* In general, the device is only openable by root anyway, so we're not | 703 | /* In general, the device is only openable by root anyway, so we're not |
704 | particularly concerned that bogus ioctls can flood the console. */ | 704 | particularly concerned that bogus ioctls can flood the console. */ |
705 | 705 | ||
706 | adgl = kmalloc(sizeof(struct st_ram_io), GFP_KERNEL); | 706 | adgl = memdup_user(argp, sizeof(struct st_ram_io)); |
707 | if (!adgl) | 707 | if (IS_ERR(adgl)) |
708 | return -ENOMEM; | 708 | return PTR_ERR(adgl); |
709 | |||
710 | if (copy_from_user(adgl, argp, sizeof(struct st_ram_io))) { | ||
711 | kfree(adgl); | ||
712 | return -EFAULT; | ||
713 | } | ||
714 | 709 | ||
715 | lock_kernel(); | 710 | lock_kernel(); |
716 | IndexCard = adgl->num_card-1; | 711 | IndexCard = adgl->num_card-1; |