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 "