Skip to content

Commit

Permalink
mptfusion: use memdup_user
Browse files Browse the repository at this point in the history
Let memdup_user handle the kmalloc, copy_from_user and error checking
kfree code.

Spotted by the following smatch (false positive) warning:

  drivers/message/fusion/mptctl.c:1369 mptctl_getiocinfo() warn:
    possible info leak 'karg'

Signed-off-by: Joe Lawrence <[email protected]>
Acked-by: Sreekanth Reddy <[email protected]>
Signed-off-by: Christoph Hellwig <[email protected]>
  • Loading branch information
Joe Lawrence authored and Christoph Hellwig committed Jul 25, 2014
1 parent 5074b1b commit 3e67c45
Showing 1 changed file with 5 additions and 13 deletions.
18 changes: 5 additions & 13 deletions drivers/message/fusion/mptctl.c
Original file line number Diff line number Diff line change
Expand Up @@ -1261,19 +1261,11 @@ mptctl_getiocinfo (unsigned long arg, unsigned int data_size)
else
return -EFAULT;

karg = kmalloc(data_size, GFP_KERNEL);
if (karg == NULL) {
printk(KERN_ERR MYNAM "%s::mpt_ioctl_iocinfo() @%d - no memory available!\n",
__FILE__, __LINE__);
return -ENOMEM;
}

if (copy_from_user(karg, uarg, data_size)) {
printk(KERN_ERR MYNAM "%s@%d::mptctl_getiocinfo - "
"Unable to read in mpt_ioctl_iocinfo struct @ %p\n",
__FILE__, __LINE__, uarg);
kfree(karg);
return -EFAULT;
karg = memdup_user(uarg, data_size);
if (IS_ERR(karg)) {
printk(KERN_ERR MYNAM "%s@%d::mpt_ioctl_iocinfo() - memdup_user returned error [%ld]\n",
__FILE__, __LINE__, PTR_ERR(karg));
return PTR_ERR(karg);
}

if (((iocnum = mpt_verify_adapter(karg->hdr.iocnum, &ioc)) < 0) ||
Expand Down

0 comments on commit 3e67c45

Please sign in to comment.