projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
9e98c67
)
drm/vgem: fix use-after-free when drm_gem_handle_create() fails
author
Eric Biggers
<
[email protected]
>
Tue, 26 Feb 2019 21:44:51 +0000
(13:44 -0800)
committer
Maxime Ripard
<
[email protected]
>
Mon, 18 Mar 2019 07:45:57 +0000
(08:45 +0100)
If drm_gem_handle_create() fails in vgem_gem_create(), then the
drm_vgem_gem_object is freed twice: once when the reference is dropped
by drm_gem_object_put_unlocked(), and again by __vgem_gem_destroy().
This was hit by syzkaller using fault injection.
Fix it by skipping the second free.
Reported-by:
[email protected]
Fixes: af33a9190d02 ("drm/vgem: Enable dmabuf import interfaces")
Reviewed-by: Chris Wilson <
[email protected]
>
Cc: Laura Abbott <
[email protected]
>
Cc: Daniel Vetter <
[email protected]
>
Cc:
[email protected]
Signed-off-by: Eric Biggers <
[email protected]
>
Acked-by: Laura Abbott <
[email protected]
>
Signed-off-by: Rodrigo Siqueira <
[email protected]
>
Link:
https://patchwork.freedesktop.org/patch/msgid/
[email protected]
Signed-off-by: Maxime Ripard <
[email protected]
>
drivers/gpu/drm/vgem/vgem_drv.c
patch
|
blob
|
history
diff --git
a/drivers/gpu/drm/vgem/vgem_drv.c
b/drivers/gpu/drm/vgem/vgem_drv.c
index 5930facd6d2d85cca81cb9c1f5247a6be3632546..11a8f99ba18c5f007734abef1003cc44d5e778a1 100644
(file)
--- a/
drivers/gpu/drm/vgem/vgem_drv.c
+++ b/
drivers/gpu/drm/vgem/vgem_drv.c
@@
-191,13
+191,9
@@
static struct drm_gem_object *vgem_gem_create(struct drm_device *dev,
ret = drm_gem_handle_create(file, &obj->base, handle);
drm_gem_object_put_unlocked(&obj->base);
if (ret)
-
goto err
;
+
return ERR_PTR(ret)
;
return &obj->base;
-
-err:
- __vgem_gem_destroy(obj);
- return ERR_PTR(ret);
}
static int vgem_gem_dumb_create(struct drm_file *file, struct drm_device *dev,