From fa07dcb5885b6ad97217277520913a7dad531eef Mon Sep 17 00:00:00 2001 From: David Heidelberg Date: Wed, 21 Dec 2022 01:57:31 +0100 Subject: [PATCH] radeon: drmGetVersion can return NULL MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Do not crash on scenarios where drmGetVersion returns NULL. Make Radeon driver initialization more robust. Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/476 Reviewed-by: Marek Olšák Signed-off-by: David Heidelberg Part-of: --- src/gallium/drivers/radeonsi/si_pipe.c | 6 +++++- src/gallium/winsys/radeon/drm/radeon_drm_winsys.c | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/gallium/drivers/radeonsi/si_pipe.c b/src/gallium/drivers/radeonsi/si_pipe.c index 1a468747061..54c1672a263 100644 --- a/src/gallium/drivers/radeonsi/si_pipe.c +++ b/src/gallium/drivers/radeonsi/si_pipe.c @@ -1486,8 +1486,12 @@ static struct pipe_screen *radeonsi_screen_create_impl(struct radeon_winsys *ws, struct pipe_screen *radeonsi_screen_create(int fd, const struct pipe_screen_config *config) { - drmVersionPtr version = drmGetVersion(fd); struct radeon_winsys *rw = NULL; + drmVersionPtr version; + + version = drmGetVersion(fd); + if (!version) + return NULL; driParseConfigFiles(config->options, config->options_info, 0, "radeonsi", NULL, NULL, NULL, 0, NULL, 0); diff --git a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c index 26fa21ba809..2dca061003c 100644 --- a/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c +++ b/src/gallium/winsys/radeon/drm/radeon_drm_winsys.c @@ -152,6 +152,9 @@ static bool do_winsys_init(struct radeon_drm_winsys *ws) /* Get DRM version. */ version = drmGetVersion(ws->fd); + if (!version) + return false; + if (version->version_major != 2 || version->version_minor < 50) { fprintf(stderr, "%s: DRM version is %d.%d.%d but this driver is "