backend/drm: use wlr_drm_backend.name for fd cloning

This also fixes a memleak.

(cherry picked from commit 92ff86db23)
This commit is contained in:
Kirill Primak 2024-01-31 11:04:14 +03:00 committed by Simon Zeni
parent e3760fb1b7
commit fc8fd786c0

View file

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