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