Skip to content

Commit 444bbba

Browse files
committed
drm/client: Prevent NULL dereference in drm_client_buffer_delete()
The drm_gem_vunmap() will crash with a NULL dereference if the passed object pointer is NULL. It wasn't a problem before we added the locking support to drm_gem_vunmap function because the mapping argument was always NULL together with the object. Make drm_client_buffer_delete() to check whether GEM is NULL before trying to unmap the GEM, it will happen on framebuffer creation error. Reported-by: Dan Carpenter <[email protected]> Reviewed-by: Christian König <[email protected]> Link: https://lore.kernel.org/dri-devel/Y1kFEGxT8MVlf32V@kili/ Fixes: 79e2cf2 ("drm/gem: Take reservation lock for vmap/vunmap operations") Signed-off-by: Dmitry Osipenko <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected]
1 parent d3292da commit 444bbba

File tree

1 file changed

+3
-3
lines changed

1 file changed

+3
-3
lines changed

drivers/gpu/drm/drm_client.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -235,10 +235,10 @@ static void drm_client_buffer_delete(struct drm_client_buffer *buffer)
235235
{
236236
struct drm_device *dev = buffer->client->dev;
237237

238-
drm_gem_vunmap_unlocked(buffer->gem, &buffer->map);
239-
240-
if (buffer->gem)
238+
if (buffer->gem) {
239+
drm_gem_vunmap_unlocked(buffer->gem, &buffer->map);
241240
drm_gem_object_put(buffer->gem);
241+
}
242242

243243
if (buffer->handle)
244244
drm_mode_destroy_dumb(dev, buffer->handle, buffer->client->file);

0 commit comments

Comments
 (0)