2023-09-24 09:30:26

by Haoran Liu

[permalink] [raw]
Subject: [PATCH] drm/msm/mdp4: Add error handling in mdp4_lvds_connector_init()

This patch adds error-handling for the drm_connector_init() and
drm_connector_attach_encoder inside the mdp4_lvds_connector_init().

Signed-off-by: liuhaoran <[email protected]>
---
.../gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c | 14 +++++++++++---
1 file changed, 11 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c
index 7444b75c4215..62eb363ba90f 100644
--- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c
+++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c
@@ -96,6 +96,7 @@ struct drm_connector *mdp4_lvds_connector_init(struct drm_device *dev,
{
struct drm_connector *connector = NULL;
struct mdp4_lvds_connector *mdp4_lvds_connector;
+ int ret;

mdp4_lvds_connector = kzalloc(sizeof(*mdp4_lvds_connector), GFP_KERNEL);
if (!mdp4_lvds_connector)
@@ -106,8 +107,12 @@ struct drm_connector *mdp4_lvds_connector_init(struct drm_device *dev,

connector = &mdp4_lvds_connector->base;

- drm_connector_init(dev, connector, &mdp4_lvds_connector_funcs,
- DRM_MODE_CONNECTOR_LVDS);
+ ret = drm_connector_init(dev, connector, &mdp4_lvds_connector_funcs,
+ DRM_MODE_CONNECTOR_LVDS);
+
+ if (ret)
+ return ret;
+
drm_connector_helper_add(connector, &mdp4_lvds_connector_helper_funcs);

connector->polled = 0;
@@ -115,7 +120,10 @@ struct drm_connector *mdp4_lvds_connector_init(struct drm_device *dev,
connector->interlace_allowed = 0;
connector->doublescan_allowed = 0;

- drm_connector_attach_encoder(connector, encoder);
+ ret = drm_connector_attach_encoder(connector, encoder);
+
+ if (ret)
+ return ret;

return connector;
}
--
2.17.1


2023-09-24 10:50:55

by Dmitry Baryshkov

[permalink] [raw]
Subject: Re: [PATCH] drm/msm/mdp4: Add error handling in mdp4_lvds_connector_init()

On Sun, 24 Sept 2023 at 09:42, liuhaoran <[email protected]> wrote:
>
> This patch adds error-handling for the drm_connector_init() and
> drm_connector_attach_encoder inside the mdp4_lvds_connector_init().
>
> Signed-off-by: liuhaoran <[email protected]>

As pointed out by the kernel robot, this was not even compile tested.
So NAK. Please use proper casts for error returns.

> ---
> .../gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c
> index 7444b75c4215..62eb363ba90f 100644
> --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c
> +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c
> @@ -96,6 +96,7 @@ struct drm_connector *mdp4_lvds_connector_init(struct drm_device *dev,
> {
> struct drm_connector *connector = NULL;
> struct mdp4_lvds_connector *mdp4_lvds_connector;
> + int ret;
>
> mdp4_lvds_connector = kzalloc(sizeof(*mdp4_lvds_connector), GFP_KERNEL);
> if (!mdp4_lvds_connector)
> @@ -106,8 +107,12 @@ struct drm_connector *mdp4_lvds_connector_init(struct drm_device *dev,
>
> connector = &mdp4_lvds_connector->base;
>
> - drm_connector_init(dev, connector, &mdp4_lvds_connector_funcs,
> - DRM_MODE_CONNECTOR_LVDS);
> + ret = drm_connector_init(dev, connector, &mdp4_lvds_connector_funcs,
> + DRM_MODE_CONNECTOR_LVDS);
> +
> + if (ret)
> + return ret;
> +
> drm_connector_helper_add(connector, &mdp4_lvds_connector_helper_funcs);
>
> connector->polled = 0;
> @@ -115,7 +120,10 @@ struct drm_connector *mdp4_lvds_connector_init(struct drm_device *dev,
> connector->interlace_allowed = 0;
> connector->doublescan_allowed = 0;
>
> - drm_connector_attach_encoder(connector, encoder);
> + ret = drm_connector_attach_encoder(connector, encoder);
> +
> + if (ret)
> + return ret;
>
> return connector;
> }
> --
> 2.17.1
>


--
With best wishes
Dmitry

2023-09-24 14:31:13

by kernel test robot

[permalink] [raw]
Subject: Re: [PATCH] drm/msm/mdp4: Add error handling in mdp4_lvds_connector_init()

Hi liuhaoran,

kernel test robot noticed the following build warnings:

[auto build test WARNING on drm-misc/drm-misc-next]
[also build test WARNING on linus/master v6.6-rc2 next-20230921]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/liuhaoran/drm-msm-mdp4-Add-error-handling-in-mdp4_lvds_connector_init/20230924-144326
base: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next
patch link: https://lore.kernel.org/r/20230924064159.14739-1-liuhaoran14%40163.com
patch subject: [PATCH] drm/msm/mdp4: Add error handling in mdp4_lvds_connector_init()
config: arm-defconfig (https://download.01.org/0day-ci/archive/20230924/[email protected]/config)
compiler: arm-linux-gnueabi-gcc (GCC) 13.2.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20230924/[email protected]/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <[email protected]>
| Closes: https://lore.kernel.org/oe-kbuild-all/[email protected]/

All warnings (new ones prefixed by >>):

drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c: In function 'mdp4_lvds_connector_init':
>> drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c:114:24: warning: returning 'int' from a function with return type 'struct drm_connector *' makes pointer from integer without a cast [-Wint-conversion]
114 | return ret;
| ^~~
drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c:126:24: warning: returning 'int' from a function with return type 'struct drm_connector *' makes pointer from integer without a cast [-Wint-conversion]
126 | return ret;
| ^~~


vim +114 drivers/gpu/drm/msm/disp/mdp4/mdp4_lvds_connector.c

92
93 /* initialize connector */
94 struct drm_connector *mdp4_lvds_connector_init(struct drm_device *dev,
95 struct device_node *panel_node, struct drm_encoder *encoder)
96 {
97 struct drm_connector *connector = NULL;
98 struct mdp4_lvds_connector *mdp4_lvds_connector;
99 int ret;
100
101 mdp4_lvds_connector = kzalloc(sizeof(*mdp4_lvds_connector), GFP_KERNEL);
102 if (!mdp4_lvds_connector)
103 return ERR_PTR(-ENOMEM);
104
105 mdp4_lvds_connector->encoder = encoder;
106 mdp4_lvds_connector->panel_node = panel_node;
107
108 connector = &mdp4_lvds_connector->base;
109
110 ret = drm_connector_init(dev, connector, &mdp4_lvds_connector_funcs,
111 DRM_MODE_CONNECTOR_LVDS);
112
113 if (ret)
> 114 return ret;

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki