backend/drm: use wlr_drm_backend.name for fd cloning

This also fixes a memleak.
This commit is contained in:
Kirill Primak 2024-01-31 11:04:14 +03:00
parent 8dff1bb9bd
commit 92ff86db23

View file

@ -1820,16 +1820,10 @@ int wlr_drm_backend_get_non_master_fd(struct wlr_backend *backend) {
assert(backend); assert(backend);
struct wlr_drm_backend *drm = get_drm_backend_from_backend(backend); struct wlr_drm_backend *drm = get_drm_backend_from_backend(backend);
char *path = drmGetDeviceNameFromFd2(drm->fd); int fd = open(drm->name, O_RDWR | O_CLOEXEC);
if (!path) {
wlr_log(WLR_ERROR, "Failed to get device name from DRM fd");
return -1;
}
int fd = open(path, O_RDWR | O_CLOEXEC);
if (fd < 0) { if (fd < 0) {
wlr_log_errno(WLR_ERROR, "Unable to clone DRM fd for client fd"); wlr_log_errno(WLR_ERROR, "Unable to clone DRM fd for client fd");
free(path);
return -1; return -1;
} }