RE: [PATCH 1/7] aacraid: Use memdup_user() rather than duplicating its implementation

From: David Carroll
Date: Mon Aug 22 2016 - 15:36:16 EST


> From: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
> Date: Sat, 20 Aug 2016 20:05:24 +0200
>
> Reuse existing functionality from memdup_user() instead of keeping duplicate
> source code.
>
> This issue was detected by using the Coccinelle software.
>
> Signed-off-by: Markus Elfring <elfring@xxxxxxxxxxxxxxxxxxxxx>
> ---
> drivers/scsi/aacraid/commctrl.c | 12 +++---------
> 1 file changed, 3 insertions(+), 9 deletions(-)
>
> diff --git a/drivers/scsi/aacraid/commctrl.c b/drivers/scsi/aacraid/commctrl.c
> index 5648b71..1af3084 100644
> --- a/drivers/scsi/aacraid/commctrl.c
> +++ b/drivers/scsi/aacraid/commctrl.c
> @@ -526,15 +526,9 @@ static int aac_send_raw_srb(struct aac_dev* dev, void
> __user * arg)
> goto cleanup;
> }
>
> - user_srbcmd = kmalloc(fibsize, GFP_KERNEL);
> - if (!user_srbcmd) {
> - dprintk((KERN_DEBUG"aacraid: Could not make a copy of the srb\n"));
> - rcode = -ENOMEM;
> - goto cleanup;
> - }
> - if(copy_from_user(user_srbcmd, user_srb,fibsize)){
> - dprintk((KERN_DEBUG"aacraid: Could not copy srb from user\n"));
> - rcode = -EFAULT;
> + user_srbcmd = memdup_user(user_srb, fibsize);
> + if (IS_ERR(user_srbcmd)) {
> + rcode = PTR_ERR(user_srbcmd);
> goto cleanup;
> }
>
> --

Hi Markus,

Patch 2/7 should precede Patch 1/7, as falling into kfree() would not look pretty.

Thanks, -Dave