From 5386742e0236f26558729e05f8c1b0a4a0f1abdb Mon Sep 17 00:00:00 2001 From: Julia Lawall Date: Sat, 22 May 2010 10:27:02 +0200 Subject: [PATCH] --- yaml --- r: 205636 b: refs/heads/master c: 37a18632b00f0d1627556c532f719ad5a08b369f h: refs/heads/master v: v3 --- [refs] | 2 +- .../drivers/staging/dream/camera/msm_vfe8x.c | 45 +++++-------------- 2 files changed, 13 insertions(+), 34 deletions(-) diff --git a/[refs] b/[refs] index 91b8530f8145..df61d0050d9d 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 7c0ace54887872ebd99fefdfe85d273295a09426 +refs/heads/master: 37a18632b00f0d1627556c532f719ad5a08b369f diff --git a/trunk/drivers/staging/dream/camera/msm_vfe8x.c b/trunk/drivers/staging/dream/camera/msm_vfe8x.c index e61fdba62838..d87d56f914de 100644 --- a/trunk/drivers/staging/dream/camera/msm_vfe8x.c +++ b/trunk/drivers/staging/dream/camera/msm_vfe8x.c @@ -644,17 +644,10 @@ static int vfe_config(struct msm_vfe_cfg_cmd *cmd, void *data) if (!axid) return -EFAULT; - axio = - kmalloc(sizeof(struct vfe_cmd_axi_output_config), - GFP_ATOMIC); - if (!axio) - return -ENOMEM; - - if (copy_from_user(axio, (void __user *)(vfecmd.value), - sizeof(struct vfe_cmd_axi_output_config))) { - kfree(axio); - return -EFAULT; - } + axio = memdup_user((void __user *)(vfecmd.value), + sizeof(struct vfe_cmd_axi_output_config)); + if (IS_ERR(axio)) + return PTR_ERR(axio); vfe_config_axi(OUTPUT_1, axid, axio); vfe_axi_output_config(axio); @@ -669,17 +662,10 @@ static int vfe_config(struct msm_vfe_cfg_cmd *cmd, void *data) if (!axid) return -EFAULT; - axio = - kmalloc(sizeof(struct vfe_cmd_axi_output_config), - GFP_ATOMIC); - if (!axio) - return -ENOMEM; - - if (copy_from_user(axio, (void __user *)(vfecmd.value), - sizeof(struct vfe_cmd_axi_output_config))) { - kfree(axio); - return -EFAULT; - } + axio = memdup_user((void __user *)(vfecmd.value), + sizeof(struct vfe_cmd_axi_output_config)); + if (IS_ERR(axio)) + return PTR_ERR(axio); vfe_config_axi(OUTPUT_2, axid, axio); @@ -694,17 +680,10 @@ static int vfe_config(struct msm_vfe_cfg_cmd *cmd, void *data) if (!axid) return -EFAULT; - axio = - kmalloc(sizeof(struct vfe_cmd_axi_output_config), - GFP_ATOMIC); - if (!axio) - return -ENOMEM; - - if (copy_from_user(axio, (void __user *)(vfecmd.value), - sizeof(struct vfe_cmd_axi_output_config))) { - kfree(axio); - return -EFAULT; - } + axio = memdup_user((void __user *)(vfecmd.value), + sizeof(struct vfe_cmd_axi_output_config)); + if (IS_ERR(axio)) + return PTR_ERR(axio); vfe_config_axi(OUTPUT_1_AND_2, axid, axio);