Smatch (Semantic Matching Tool) development
 help / color / mirror / Atom feed
* [SMATCH] Can also be NULL false positive
@ 2026-04-07 16:16 Ethan Tidmore
  2026-04-08  6:47 ` Dan Carpenter
  0 siblings, 1 reply; 3+ messages in thread
From: Ethan Tidmore @ 2026-04-07 16:16 UTC (permalink / raw)
  To: Dan Carpenter; +Cc: smatch

Hi Dan,

Smatch gives these two warnings: 

drivers/gpu/drm/i915/display/intel_crtc.c:333 __intel_crtc_init() warn: 'primary' can also be NULL
drivers/gpu/drm/i915/display/intel_crtc.c:348 __intel_crtc_init() warn: 'plane' can also be NULL

	if (DISPLAY_VER(display) >= 9)
		primary = skl_universal_plane_create(display, pipe, PLANE_1);
	else
		primary = intel_primary_plane_create(display, pipe);
	if (IS_ERR(primary)) {
		ret = PTR_ERR(primary);
		goto fail;
	}
	crtc->plane_ids_mask |= BIT(primary->id);

and

		if (DISPLAY_VER(display) >= 9)
			plane = skl_universal_plane_create(display, pipe, PLANE_2 + sprite);
		else
			plane = intel_sprite_plane_create(display, pipe, sprite);
		if (IS_ERR(plane)) {
			ret = PTR_ERR(plane);
			goto fail;
		}
		crtc->plane_ids_mask |= BIT(plane->id);

But, this is a false positive because skl_universal_plane_create() and
intel_sprite_plane_create() never return NULL and always error pointers.

Thanks,

ET

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [SMATCH] Can also be NULL false positive
  2026-04-07 16:16 [SMATCH] Can also be NULL false positive Ethan Tidmore
@ 2026-04-08  6:47 ` Dan Carpenter
  2026-04-08 13:40   ` Ethan Tidmore
  0 siblings, 1 reply; 3+ messages in thread
From: Dan Carpenter @ 2026-04-08  6:47 UTC (permalink / raw)
  To: Ethan Tidmore; +Cc: smatch

On Tue, Apr 07, 2026 at 11:16:45AM -0500, Ethan Tidmore wrote:
> Hi Dan,
> 
> Smatch gives these two warnings: 
> 
> drivers/gpu/drm/i915/display/intel_crtc.c:333 __intel_crtc_init() warn: 'primary' can also be NULL
> drivers/gpu/drm/i915/display/intel_crtc.c:348 __intel_crtc_init() warn: 'plane' can also be NULL
> 
> 	if (DISPLAY_VER(display) >= 9)
> 		primary = skl_universal_plane_create(display, pipe, PLANE_1);
> 	else
> 		primary = intel_primary_plane_create(display, pipe);
> 	if (IS_ERR(primary)) {
> 		ret = PTR_ERR(primary);
> 		goto fail;
> 	}
> 	crtc->plane_ids_mask |= BIT(primary->id);
> 
> and
> 
> 		if (DISPLAY_VER(display) >= 9)
> 			plane = skl_universal_plane_create(display, pipe, PLANE_2 + sprite);
> 		else
> 			plane = intel_sprite_plane_create(display, pipe, sprite);
> 		if (IS_ERR(plane)) {
> 			ret = PTR_ERR(plane);
> 			goto fail;
> 		}
> 		crtc->plane_ids_mask |= BIT(plane->id);
> 
> But, this is a false positive because skl_universal_plane_create() and
> intel_sprite_plane_create() never return NULL and always error pointers.

I don't see that warning on my builds.

One thing that I see is that intel_primary_plane_create() can return NULL
if CONFIG_I915 is disabled.  But I can't see how we would build that
file without CONFIG_I915.  I wondered if it might be a CONFIG_COMPILE_TEST
thing, but I don't see that possibility.

Do you have the cross function DB built?

regards,
dan carpenter


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [SMATCH] Can also be NULL false positive
  2026-04-08  6:47 ` Dan Carpenter
@ 2026-04-08 13:40   ` Ethan Tidmore
  0 siblings, 0 replies; 3+ messages in thread
From: Ethan Tidmore @ 2026-04-08 13:40 UTC (permalink / raw)
  To: Dan Carpenter, Ethan Tidmore; +Cc: smatch

On Wed Apr 8, 2026 at 1:47 AM CDT, Dan Carpenter wrote:
> On Tue, Apr 07, 2026 at 11:16:45AM -0500, Ethan Tidmore wrote:
>> Hi Dan,
>> 
>> Smatch gives these two warnings: 
>> 
>> drivers/gpu/drm/i915/display/intel_crtc.c:333 __intel_crtc_init() warn: 'primary' can also be NULL
>> drivers/gpu/drm/i915/display/intel_crtc.c:348 __intel_crtc_init() warn: 'plane' can also be NULL
>> 
>> 	if (DISPLAY_VER(display) >= 9)
>> 		primary = skl_universal_plane_create(display, pipe, PLANE_1);
>> 	else
>> 		primary = intel_primary_plane_create(display, pipe);
>> 	if (IS_ERR(primary)) {
>> 		ret = PTR_ERR(primary);
>> 		goto fail;
>> 	}
>> 	crtc->plane_ids_mask |= BIT(primary->id);
>> 
>> and
>> 
>> 		if (DISPLAY_VER(display) >= 9)
>> 			plane = skl_universal_plane_create(display, pipe, PLANE_2 + sprite);
>> 		else
>> 			plane = intel_sprite_plane_create(display, pipe, sprite);
>> 		if (IS_ERR(plane)) {
>> 			ret = PTR_ERR(plane);
>> 			goto fail;
>> 		}
>> 		crtc->plane_ids_mask |= BIT(plane->id);
>> 
>> But, this is a false positive because skl_universal_plane_create() and
>> intel_sprite_plane_create() never return NULL and always error pointers.
>
> I don't see that warning on my builds.
>
> One thing that I see is that intel_primary_plane_create() can return NULL
> if CONFIG_I915 is disabled.  But I can't see how we would build that
> file without CONFIG_I915.  I wondered if it might be a CONFIG_COMPILE_TEST
> thing, but I don't see that possibility.
>
> Do you have the cross function DB built?

I'm building with 'allmodconfig' and using these smatch scripts:

./smatch/smatch_scripts/build_kernel_data.sh
./smatch/smatch_scripts/test_kernel.sh --endian

Thanks,

ET

>
> regards,
> dan carpenter


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-04-08 13:40 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-04-07 16:16 [SMATCH] Can also be NULL false positive Ethan Tidmore
2026-04-08  6:47 ` Dan Carpenter
2026-04-08 13:40   ` Ethan Tidmore

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox