From 293b95e81531dbfc1327cbaae125cc13e7fb074d Mon Sep 17 00:00:00 2001 From: Jonathan Gray Date: Mon, 13 May 2019 02:52:04 +1000 Subject: xf86drm: open correct render node on non-linux drm render nodes have the same major as drm primary devices but offset the minor by a base of 128. I expected the name of the device to have numbering starting at 0 when these non-linux codepaths were added (before OpenBSD had render nodes). Signed-off-by: Jonathan Gray Acked-by: Eric Engestrom --- xf86drm.c | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) (limited to 'xf86drm.c') diff --git a/xf86drm.c b/xf86drm.c index 39a82063..33624305 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -2904,7 +2904,7 @@ static char *drmGetMinorNameForFD(int fd, int type) char buf[PATH_MAX + 1]; const char *dev_name; unsigned int maj, min; - int n, base; + int n; if (fstat(fd, &sbuf)) return NULL; @@ -2929,11 +2929,7 @@ static char *drmGetMinorNameForFD(int fd, int type) return NULL; }; - base = drmGetMinorBase(type); - if (base < 0) - return NULL; - - n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, min - base); + n = snprintf(buf, sizeof(buf), dev_name, DRM_DIR_NAME, min); if (n == -1 || n >= sizeof(buf)) return NULL; @@ -3827,7 +3823,7 @@ drm_public int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device) char node[PATH_MAX + 1]; const char *dev_name; int node_type, subsystem_type; - int maj, min, n, ret, base; + int maj, min, n, ret; if (fd == -1 || device == NULL) return -EINVAL; @@ -3859,11 +3855,7 @@ drm_public int drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device) return -EINVAL; }; - base = drmGetMinorBase(node_type); - if (base < 0) - return -EINVAL; - - n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min - base); + n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min); if (n == -1 || n >= PATH_MAX) return -errno; if (stat(node, &sbuf)) @@ -4083,7 +4075,7 @@ drm_public char *drmGetDeviceNameFromFd2(int fd) char node[PATH_MAX + 1]; const char *dev_name; int node_type; - int maj, min, n, base; + int maj, min, n; if (fstat(fd, &sbuf)) return NULL; @@ -4112,11 +4104,7 @@ drm_public char *drmGetDeviceNameFromFd2(int fd) return NULL; }; - base = drmGetMinorBase(node_type); - if (base < 0) - return NULL; - - n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min - base); + n = snprintf(node, PATH_MAX, dev_name, DRM_DIR_NAME, min); if (n == -1 || n >= PATH_MAX) return NULL; -- cgit v1.2.1