#include <nvif/cl0080.h>
#include <nvif/class.h>
+#include "util/os_file.h"
#include "util/os_misc.h"
struct nouveau_ws_device *
uint64_t device_id = 0;
struct nouveau_drm *drm;
struct nouveau_device *dev;
+ int dup_fd = os_dupfd_cloexec(fd);
- if (nouveau_drm_new(fd, &drm)) {
+ if (nouveau_drm_new(dup_fd, &drm)) {
return NULL;
}
device->base.is_integrated = dev->vram_size == 0;
device->drm = drm;
device->dev = dev;
- device->fd = fd;
+ device->fd = dup_fd;
return &device->base;
nouveau_device_del(&dev);
out_drm:
nouveau_drm_del(&drm);
+ close(dup_fd);
return NULL;
}