|
@@ -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);
|