Mesa (main): nouveau: fix race in nouveau_screen_get_name

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon May 10 12:30:25 UTC 2021


Module: Mesa
Branch: main
Commit: b7d2add5e04a302a92b0d54fdce31f782c716e11
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=b7d2add5e04a302a92b0d54fdce31f782c716e11

Author: Karol Herbst <kherbst at redhat.com>
Date:   Tue Jan 26 15:36:05 2021 +0100

nouveau: fix race in nouveau_screen_get_name

Signed-off-by: Karol Herbst <kherbst at redhat.com>
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Reviewed-by: Pierre Moreau <dev at pmoreau.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8765>

---

 src/gallium/drivers/nouveau/nouveau_screen.c | 8 +++-----
 src/gallium/drivers/nouveau/nouveau_screen.h | 2 ++
 2 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/nouveau/nouveau_screen.c b/src/gallium/drivers/nouveau/nouveau_screen.c
index 80ef7a12c44..192044c7fb4 100644
--- a/src/gallium/drivers/nouveau/nouveau_screen.c
+++ b/src/gallium/drivers/nouveau/nouveau_screen.c
@@ -40,11 +40,8 @@ int nouveau_mesa_debug = 0;
 static const char *
 nouveau_screen_get_name(struct pipe_screen *pscreen)
 {
-   struct nouveau_device *dev = nouveau_screen(pscreen)->device;
-   static char buffer[128];
-
-   snprintf(buffer, sizeof(buffer), "NV%02X", dev->chipset);
-   return buffer;
+   struct nouveau_screen *screen = nouveau_screen(pscreen);
+   return screen->chipset_name;
 }
 
 static const char *
@@ -318,6 +315,7 @@ nouveau_screen_init(struct nouveau_screen *screen, struct nouveau_device *dev)
    if (!ret)
       screen->cpu_gpu_time_delta = time - screen->cpu_gpu_time_delta * 1000;
 
+   snprintf(screen->chipset_name, sizeof(screen->chipset_name), "NV%02X", dev->chipset);
    pscreen->get_name = nouveau_screen_get_name;
    pscreen->get_vendor = nouveau_screen_get_vendor;
    pscreen->get_device_vendor = nouveau_screen_get_device_vendor;
diff --git a/src/gallium/drivers/nouveau/nouveau_screen.h b/src/gallium/drivers/nouveau/nouveau_screen.h
index 1176c54db3d..9460152eff1 100644
--- a/src/gallium/drivers/nouveau/nouveau_screen.h
+++ b/src/gallium/drivers/nouveau/nouveau_screen.h
@@ -28,6 +28,8 @@ struct nouveau_screen {
    struct nouveau_client *client;
    struct nouveau_pushbuf *pushbuf;
 
+   char chipset_name[8];
+
    int refcount;
 
    unsigned transfer_pushbuf_threshold;



More information about the mesa-commit mailing list