Merge "msm: camera: isp: Fix invalid type conversion"

This commit is contained in:
Linux Build Service Account 2019-01-23 05:14:16 -08:00 committed by Gerrit - the friendly Code Review server
commit 2c72b0a902

View file

@ -1,4 +1,4 @@
/* Copyright (c) 2013-2017, The Linux Foundation. All rights reserved. /* Copyright (c) 2013-2017, 2019 The Linux Foundation. All rights reserved.
* *
* This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License version 2 and * it under the terms of the GNU General Public License version 2 and
@ -230,32 +230,34 @@ static long msm_ispif_cmd_ext(struct v4l2_subdev *sd,
long rc = 0; long rc = 0;
struct ispif_device *ispif = struct ispif_device *ispif =
(struct ispif_device *)v4l2_get_subdevdata(sd); (struct ispif_device *)v4l2_get_subdevdata(sd);
struct ispif_cfg_data_ext pcdata; struct ispif_cfg_data_ext pcdata = {0};
struct msm_ispif_param_data_ext *params = NULL; struct msm_ispif_param_data_ext *params = NULL;
if (is_compat_task()) {
#ifdef CONFIG_COMPAT #ifdef CONFIG_COMPAT
struct ispif_cfg_data_ext_32 *pcdata32 = struct ispif_cfg_data_ext_32 *pcdata32 =
(struct ispif_cfg_data_ext_32 *)arg; (struct ispif_cfg_data_ext_32 *)arg;
if (pcdata32 == NULL) { if (pcdata32 == NULL) {
pr_err("Invalid params passed from user\n"); pr_err("Invalid params passed from user\n");
return -EINVAL; return -EINVAL;
} }
pcdata.cfg_type = pcdata32->cfg_type; pcdata.cfg_type = pcdata32->cfg_type;
pcdata.size = pcdata32->size; pcdata.size = pcdata32->size;
pcdata.data = compat_ptr(pcdata32->data); pcdata.data = compat_ptr(pcdata32->data);
#endif
#else } else {
struct ispif_cfg_data_ext *pcdata64 = struct ispif_cfg_data_ext *pcdata64 =
(struct ispif_cfg_data_ext *)arg; (struct ispif_cfg_data_ext *)arg;
if (pcdata64 == NULL) { if (pcdata64 == NULL) {
pr_err("Invalid params passed from user\n"); pr_err("Invalid params passed from user\n");
return -EINVAL; return -EINVAL;
}
pcdata.cfg_type = pcdata64->cfg_type;
pcdata.size = pcdata64->size;
pcdata.data = pcdata64->data;
} }
pcdata.cfg_type = pcdata64->cfg_type;
pcdata.size = pcdata64->size;
pcdata.data = pcdata64->data;
#endif
if (pcdata.size != sizeof(struct msm_ispif_param_data_ext)) { if (pcdata.size != sizeof(struct msm_ispif_param_data_ext)) {
pr_err("%s: payload size mismatch\n", __func__); pr_err("%s: payload size mismatch\n", __func__);
return -EINVAL; return -EINVAL;