Hi Am 10.07.23 um 09:02 schrieb suijingfeng:
Hi, Thanks for testing, What do you means about tell me this? I means that would you like to help fixing this warning?
The code in drm_atomic_get_new_plane_state() dereferences the state parameter. Later in your function, you test for state to be non-NULL.
That's what the warning is about.You should be able to silence this warning by removing the state test from your function (and also delete that else branch). There should always be an atomic state present and the atomic-check callbacks should not be called without a state. If not, the driver most likely failed to initialize correctly.
Best regards Thomas
Or otherwise, I will fix this someday. On 2023/7/10 14:29, Dan Carpenter wrote:tree: git://anongit.freedesktop.org/drm/drm-misc drm-misc-next head: 8d1077cf2e43b15fefd76ebec2b71541eb27ef2ccommit: f39db26c54281da6a785259498ca74b5e470476f [2/3] drm: Add kms driver for loongson display controller config: i386-randconfig-m021-20230710 (https://download.01.org/0day-ci/archive/20230710/202307100423.rV7D05Uq-lkp@xxxxxxxxx/config)compiler: gcc-12 (Debian 12.2.0-14) 12.2.0reproduce: (https://download.01.org/0day-ci/archive/20230710/202307100423.rV7D05Uq-lkp@xxxxxxxxx/reproduce)If you fix the issue in a separate patch/commit (i.e. not just a new version ofthe same patch/commit), kindly add following tags | Reported-by: kernel test robot <lkp@xxxxxxxxx> | Reported-by: Dan Carpenter <dan.carpenter@xxxxxxxxxx> | Closes: https://lore.kernel.org/r/202307100423.rV7D05Uq-lkp@xxxxxxxxx/ smatch warnings:drivers/gpu/drm/loongson/lsdc_plane.c:199 lsdc_cursor_plane_atomic_async_check() warn: variable dereferenced before check 'state' (see line 180)vim +/state +199 drivers/gpu/drm/loongson/lsdc_plane.cf39db26c54281d Sui Jingfeng 2023-06-15 174 static int lsdc_cursor_plane_atomic_async_check(struct drm_plane *plane, f39db26c54281d Sui Jingfeng 2023-06-15 175 struct drm_atomic_state *state)f39db26c54281d Sui Jingfeng 2023-06-15 176 {f39db26c54281d Sui Jingfeng 2023-06-15 177 struct drm_plane_state *new_state; f39db26c54281d Sui Jingfeng 2023-06-15 178 struct drm_crtc_state *crtc_state;f39db26c54281d Sui Jingfeng 2023-06-15 179f39db26c54281d Sui Jingfeng 2023-06-15 @180 new_state = drm_atomic_get_new_plane_state(state, plane);^^^^^ state is dereferenced inside this function f39db26c54281d Sui Jingfeng 2023-06-15 181f39db26c54281d Sui Jingfeng 2023-06-15 182 if (!plane->state || !plane->state->fb) { f39db26c54281d Sui Jingfeng 2023-06-15 183 drm_dbg(plane->dev, "%s: state is NULL\n", plane->name);f39db26c54281d Sui Jingfeng 2023-06-15 184 return -EINVAL; f39db26c54281d Sui Jingfeng 2023-06-15 185 } f39db26c54281d Sui Jingfeng 2023-06-15 186f39db26c54281d Sui Jingfeng 2023-06-15 187 if (new_state->crtc_w != new_state->crtc_h) { f39db26c54281d Sui Jingfeng 2023-06-15 188 drm_dbg(plane->dev, "unsupported cursor size: %ux%u\n", f39db26c54281d Sui Jingfeng 2023-06-15 189 new_state->crtc_w, new_state->crtc_h);f39db26c54281d Sui Jingfeng 2023-06-15 190 return -EINVAL; f39db26c54281d Sui Jingfeng 2023-06-15 191 } f39db26c54281d Sui Jingfeng 2023-06-15 192f39db26c54281d Sui Jingfeng 2023-06-15 193 if (new_state->crtc_w != 64 && new_state->crtc_w != 32) { f39db26c54281d Sui Jingfeng 2023-06-15 194 drm_dbg(plane->dev, "unsupported cursor size: %ux%u\n", f39db26c54281d Sui Jingfeng 2023-06-15 195 new_state->crtc_w, new_state->crtc_h);f39db26c54281d Sui Jingfeng 2023-06-15 196 return -EINVAL; f39db26c54281d Sui Jingfeng 2023-06-15 197 } f39db26c54281d Sui Jingfeng 2023-06-15 198 f39db26c54281d Sui Jingfeng 2023-06-15 @199 if (state) { ^^^^^ Checked too latef39db26c54281d Sui Jingfeng 2023-06-15 200 crtc_state = drm_atomic_get_existing_crtc_state(state, new_state->crtc);f39db26c54281d Sui Jingfeng 2023-06-15 201 } else {f39db26c54281d Sui Jingfeng 2023-06-15 202 crtc_state = plane->crtc->state; f39db26c54281d Sui Jingfeng 2023-06-15 203 drm_dbg(plane->dev, "%s: atomic state is NULL\n", plane->name);f39db26c54281d Sui Jingfeng 2023-06-15 204 } f39db26c54281d Sui Jingfeng 2023-06-15 205 f39db26c54281d Sui Jingfeng 2023-06-15 206 if (!crtc_state->active) f39db26c54281d Sui Jingfeng 2023-06-15 207 return -EINVAL; f39db26c54281d Sui Jingfeng 2023-06-15 208f39db26c54281d Sui Jingfeng 2023-06-15 209 if (plane->state->crtc != new_state->crtc || f39db26c54281d Sui Jingfeng 2023-06-15 210 plane->state->src_w != new_state->src_w || f39db26c54281d Sui Jingfeng 2023-06-15 211 plane->state->src_h != new_state->src_h || f39db26c54281d Sui Jingfeng 2023-06-15 212 plane->state->crtc_w != new_state->crtc_w || f39db26c54281d Sui Jingfeng 2023-06-15 213 plane->state->crtc_h != new_state->crtc_h)f39db26c54281d Sui Jingfeng 2023-06-15 214 return -EINVAL; f39db26c54281d Sui Jingfeng 2023-06-15 215f39db26c54281d Sui Jingfeng 2023-06-15 216 if (new_state->visible != plane->state->visible)f39db26c54281d Sui Jingfeng 2023-06-15 217 return -EINVAL; f39db26c54281d Sui Jingfeng 2023-06-15 218f39db26c54281d Sui Jingfeng 2023-06-15 219 return drm_atomic_helper_check_plane_state(plane->state, f39db26c54281d Sui Jingfeng 2023-06-15 220 crtc_state, f39db26c54281d Sui Jingfeng 2023-06-15 221 DRM_PLANE_NO_SCALING, f39db26c54281d Sui Jingfeng 2023-06-15 222 DRM_PLANE_NO_SCALING, f39db26c54281d Sui Jingfeng 2023-06-15 223 true, true);f39db26c54281d Sui Jingfeng 2023-06-15 224 }
-- Thomas Zimmermann Graphics Driver Developer SUSE Software Solutions Germany GmbH Frankenstrasse 146, 90461 Nuernberg, Germany GF: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman HRB 36809 (AG Nuernberg)
Attachment:
OpenPGP_signature
Description: OpenPGP digital signature