aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarol Herbst <kherbst@redhat.com>2024-05-01 11:16:57 +0200
committerEric Engestrom <eric@engestrom.ch>2024-05-06 19:40:42 +0200
commit02e295cb5c460879a2100abf327c7e05b5967a5b (patch)
tree092bac4c7b872098eb509d67e30516c092cbd28a
parent27cf49205c01097359f681e6a189f5f42bd94873 (diff)
downloadmesa3d-02e295cb5c460879a2100abf327c7e05b5967a5b.tar.gz
nouveau: fix potential double-free in nouveau_drm_screen_create
Fixes: 821f4c8d99a ("nouveau: import libdrm_nouveau") Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29000> (cherry picked from commit d163498dbe1a1777702ef6300df497793abc16ee)
-rw-r--r--.pick_status.json2
-rw-r--r--src/gallium/winsys/nouveau/drm/nouveau.c4
2 files changed, 3 insertions, 3 deletions
diff --git a/.pick_status.json b/.pick_status.json
index a2c3f701a38..9c20c4c7697 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -84,7 +84,7 @@
"description": "nouveau: fix potential double-free in nouveau_drm_screen_create",
"nominated": true,
"nomination_type": 1,
- "resolution": 0,
+ "resolution": 1,
"main_sha": null,
"because_sha": "821f4c8d99a3068758db834a5c219082a9609b3c",
"notes": null
diff --git a/src/gallium/winsys/nouveau/drm/nouveau.c b/src/gallium/winsys/nouveau/drm/nouveau.c
index 06df49931a4..f8f267f4da0 100644
--- a/src/gallium/winsys/nouveau/drm/nouveau.c
+++ b/src/gallium/winsys/nouveau/drm/nouveau.c
@@ -65,11 +65,11 @@ nouveau_drm_new(int fd, struct nouveau_drm **pdrm)
if (!drm)
return -ENOMEM;
drm->fd = fd;
+ *pdrm = drm;
drmVersionPtr ver = drmGetVersion(fd);
if (!ver)
goto out_err;
- *pdrm = drm;
drm->version = (ver->version_major << 24) |
(ver->version_minor << 8) |
@@ -81,7 +81,7 @@ nouveau_drm_new(int fd, struct nouveau_drm **pdrm)
return 0;
out_err:
- nouveau_drm_del(&drm);
+ nouveau_drm_del(pdrm);
return -EINVAL;
}