amdgpu: make sure to set CLOEXEC on duplicated FDs

Otherwise we leak file descriptors into child processes.

Signed-off-by: Christian König <christian.koenig@amd.com>
Reviewed-and-Tested-by: Junwei Zhang <Jerry.Zhang@amd.com>
Reviewed-by: Michel Dänzer <michel.daenzer@amd.com>
This commit is contained in:
Christian König 2018-07-17 11:04:31 +02:00 committed by Michel Dänzer
parent 7e4501027c
commit 4fa33e45e6

View file

@ -34,6 +34,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <fcntl.h>
#include "xf86drm.h" #include "xf86drm.h"
#include "amdgpu_drm.h" #include "amdgpu_drm.h"
@ -205,7 +206,7 @@ int amdgpu_device_initialize(int fd,
return r; return r;
} }
if ((flag_auth) && (!flag_authexist)) { if ((flag_auth) && (!flag_authexist)) {
dev->flink_fd = dup(fd); dev->flink_fd = fcntl(fd, F_DUPFD_CLOEXEC, 0);
} }
*major_version = dev->major_version; *major_version = dev->major_version;
*minor_version = dev->minor_version; *minor_version = dev->minor_version;
@ -239,7 +240,7 @@ int amdgpu_device_initialize(int fd,
goto cleanup; goto cleanup;
} }
dev->fd = dup(fd); dev->fd = fcntl(fd, F_DUPFD_CLOEXEC, 0);
dev->flink_fd = dev->fd; dev->flink_fd = dev->fd;
dev->major_version = version->version_major; dev->major_version = version->version_major;
dev->minor_version = version->version_minor; dev->minor_version = version->version_minor;