From 009072a2fcb3bf1dd29771166e0ca9c10a29e243 Mon Sep 17 00:00:00 2001 From: Thomas Meyer Date: Sat, 13 Aug 2011 10:48:57 +0200 Subject: [PATCH] --- yaml --- r: 267621 b: refs/heads/master c: 7ec24db8dd7eb7e59316552bda92d950e31999d1 h: refs/heads/master i: 267619: 75090d837031e24e0646759070e7d189b5cc2c4f v: v3 --- [refs] | 2 +- trunk/drivers/staging/spectra/ffsport.c | 15 ++++----------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/[refs] b/[refs] index c778253954dd..8361305e7dc0 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 71c9c2045cc88f2253603bb7634c2eb523f20dea +refs/heads/master: 7ec24db8dd7eb7e59316552bda92d950e31999d1 diff --git a/trunk/drivers/staging/spectra/ffsport.c b/trunk/drivers/staging/spectra/ffsport.c index 506547b603e1..86d556d6cf98 100644 --- a/trunk/drivers/staging/spectra/ffsport.c +++ b/trunk/drivers/staging/spectra/ffsport.c @@ -227,19 +227,12 @@ static int ioctl_write_page_data(unsigned long arg) if (copy_from_user(&info, (void __user *)arg, sizeof(info))) return -EFAULT; - buf = kmalloc(IdentifyDeviceData.PageDataSize, GFP_ATOMIC); - if (!buf) { - printk(KERN_ERR "ioctl_write_page_data: " - "failed to allocate memory\n"); - return -ENOMEM; - } - - if (copy_from_user(buf, (void __user *)info.data, - IdentifyDeviceData.PageDataSize)) { + buf = memdup_user((void __user *)info.data, + IdentifyDeviceData.PageDataSize); + if (IS_ERR(buf)) { printk(KERN_ERR "ioctl_write_page_data: " "failed to copy user data\n"); - kfree(buf); - return -EFAULT; + return PTR_ERR(buf); } mutex_lock(&spectra_lock);