Hello José Expósito, Commit 600df32dac40 ("drm/vkms: Allow to configure multiple CRTCs") from Feb 18, 2025 (linux-next), leads to the following Smatch static checker warning:
drivers/gpu/drm/vkms/tests/vkms_config_test.c:220 vkms_config_test_get_planes() error: 'plane_cfg1' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:258 vkms_config_test_get_crtcs() error: 'crtc_cfg2' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:300 vkms_config_test_get_encoders() error: 'encoder_cfg2' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:345 vkms_config_test_get_connectors() error: 'connector_cfg2' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:672 vkms_config_test_plane_attach_crtc() error: 'overlay_cfg' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:674 vkms_config_test_plane_attach_crtc() error: 'primary_cfg' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:676 vkms_config_test_plane_attach_crtc() error: 'cursor_cfg' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:685 vkms_config_test_plane_attach_crtc() error: 'crtc_cfg' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:746 vkms_config_test_plane_get_possible_crtcs() error: 'crtc_cfg1' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:746 vkms_config_test_plane_get_possible_crtcs() error: 'plane_cfg1' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:748 vkms_config_test_plane_get_possible_crtcs() error: 'crtc_cfg2' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:810 vkms_config_test_encoder_get_possible_crtcs() error: 'crtc_cfg1' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:810 vkms_config_test_encoder_get_possible_crtcs() error: 'encoder_cfg1' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:812 vkms_config_test_encoder_get_possible_crtcs() error: 'crtc_cfg2' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:876 vkms_config_test_connector_get_possible_encoders() error: 'connector_cfg1' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:876 vkms_config_test_connector_get_possible_encoders() error: 'encoder_cfg1' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c:878 vkms_config_test_connector_get_possible_encoders() error: 'encoder_cfg2' dereferencing possible ERR_PTR() drivers/gpu/drm/vkms/tests/vkms_config_test.c 231 static void vkms_config_test_get_crtcs(struct kunit *test) 232 { 233 struct vkms_config *config; 234 struct vkms_config_crtc *crtc_cfg; 235 struct vkms_config_crtc *crtc_cfg1, *crtc_cfg2; 236 237 config = vkms_config_create("test"); 238 KUNIT_ASSERT_NOT_ERR_OR_NULL(test, config); 239 240 KUNIT_ASSERT_EQ(test, vkms_config_get_num_crtcs(config), 0); 241 vkms_config_for_each_crtc(config, crtc_cfg) 242 KUNIT_FAIL(test, "Unexpected CRTC"); 243 244 crtc_cfg1 = vkms_config_create_crtc(config); ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ This file has no error checking. I didn't send an email about it at first because this is just test code so who cares, but I was recently burned by ignoring errors so now I'm going through a bunch of old warnings to say that, "Hey, if the author ignores the error checking that's fine, but I'm in the clear." 245 KUNIT_ASSERT_EQ(test, vkms_config_get_num_crtcs(config), 1); 246 vkms_config_for_each_crtc(config, crtc_cfg) { 247 if (crtc_cfg != crtc_cfg1) 248 KUNIT_FAIL(test, "Unexpected CRTC"); 249 } 250 251 crtc_cfg2 = vkms_config_create_crtc(config); 252 KUNIT_ASSERT_EQ(test, vkms_config_get_num_crtcs(config), 2); 253 vkms_config_for_each_crtc(config, crtc_cfg) { 254 if (crtc_cfg != crtc_cfg1 && crtc_cfg != crtc_cfg2) 255 KUNIT_FAIL(test, "Unexpected CRTC"); 256 } 257 --> 258 vkms_config_destroy_crtc(config, crtc_cfg2); 259 KUNIT_ASSERT_EQ(test, vkms_config_get_num_crtcs(config), 1); 260 vkms_config_for_each_crtc(config, crtc_cfg) { 261 if (crtc_cfg != crtc_cfg1) 262 KUNIT_FAIL(test, "Unexpected CRTC"); 263 } 264 265 vkms_config_destroy(config); 266 } regards, dan carpenter