[bug report] drm/gem: Add drm_gem_object_funcs

Dmitry Osipenko dmitry.osipenko at collabora.com
Wed Oct 26 11:24:23 UTC 2022


On 10/26/22 12:59, Dan Carpenter wrote:
> Hello Noralf Trønnes,
> 
> The patch b39b5394fabc: "drm/gem: Add drm_gem_object_funcs" from Nov
> 10, 2018, leads to the following Smatch static checker warning:
> 
> 	drivers/gpu/drm/drm_client.c:240 drm_client_buffer_delete()
> 	warn: variable dereferenced before check 'buffer->gem' (see line 238)
> 
> drivers/gpu/drm/drm_client.c
>     234 static void drm_client_buffer_delete(struct drm_client_buffer *buffer)
>     235 {
>     236         struct drm_device *dev = buffer->client->dev;
>     237 
>     238         drm_gem_vunmap_unlocked(buffer->gem, &buffer->map);
>                                         ^^^^^^^^^^^
> Unchecked dereference inside function call.
> 
>     239 
> --> 240         if (buffer->gem)
>                     ^^^^^^^^^^^
> Too late.  I don't honestly, know why this warning is only showing up
> now four years later.  Perhaps Smatch thought buffer->gem was always
> non-NULL before but now it's not sure.  I've added Dmitry to the CC list
> because he seems to has been working in this area recently and might
> know what's going on.

This is a valid bug. Before my changes drm_gem_vunmap() wasn't touching
buffer->gem when buffer->map=NULL, now it will. I'll prepare the fix,
thank you for the report.

-- 
Best regards,
Dmitry



More information about the dri-devel mailing list