summaryrefslogtreecommitdiff
path: root/drivers/infiniband/core/ucm.c
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2010-05-30 09:12:16 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2010-05-30 09:12:16 -0700
commit3e9345edd8562dc4f9bbca88a598c91c8779a9c4 (patch)
tree01d91aee420251b164e54f850e24ae12aceccab9 /drivers/infiniband/core/ucm.c
parentd28619f1563140526e2f84eae436f39206f40a69 (diff)
parent767dcd42e51c69be88f83683eda7883e522618fa (diff)
downloadlwn-3e9345edd8562dc4f9bbca88a598c91c8779a9c4.tar.gz
lwn-3e9345edd8562dc4f9bbca88a598c91c8779a9c4.zip
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband: IB/qib: Remove DCA support until feature is finished IB/qib: Use a single txselect module parameter for serdes tuning IB/qib: Don't rely on (undefined) order of function parameter evaluation IB/ucm: Use memdup_user() IB/qib: Fix undefined symbol error when CONFIG_PCI_MSI=n
Diffstat (limited to 'drivers/infiniband/core/ucm.c')
-rw-r--r--drivers/infiniband/core/ucm.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c
index 46474842cfe9..08f948df8fa9 100644
--- a/drivers/infiniband/core/ucm.c
+++ b/drivers/infiniband/core/ucm.c
@@ -706,14 +706,9 @@ static int ib_ucm_alloc_data(const void **dest, u64 src, u32 len)
if (!len)
return 0;
- data = kmalloc(len, GFP_KERNEL);
- if (!data)
- return -ENOMEM;
-
- if (copy_from_user(data, (void __user *)(unsigned long)src, len)) {
- kfree(data);
- return -EFAULT;
- }
+ data = memdup_user((void __user *)(unsigned long)src, len);
+ if (IS_ERR(data))
+ return PTR_ERR(data);
*dest = data;
return 0;