diff --git a/xf86drm.c b/xf86drm.c index d4bfec8a..2950637d 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -3499,6 +3499,8 @@ static char *drmGetMinorNameForFD(int fd, int type) const char *dev_name = drmGetDeviceName(type); unsigned int maj, min; int n; + int base = drmGetMinorBase(type); + int renderbase = drmGetMinorBase(DRM_NODE_RENDER); if (fstat(fd, &sbuf)) return NULL; @@ -3512,7 +3514,10 @@ static char *drmGetMinorNameForFD(int fd, int type) if (!dev_name) return NULL; - n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, min); + if (min >= renderbase) + min -= renderbase; + + n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, base + min); if (n == -1 || n >= sizeof(buf)) return NULL;