From b60120608f6ddf4098bc324363197c979ee04cb7 Mon Sep 17 00:00:00 2001 From: David Fries Date: Sat, 10 Dec 2011 11:28:45 -0600 Subject: Set close on exec flag FD_CLOEXEC Set the close on exec flag when opening dri character devices, so they will be closed and free any resouces allocated in exec. Signed-off-by: David Fries Reviewed-by: Adam Jackson Signed-off-by: Dave Airlie --- src/glx/dri2_glx.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'src/glx') diff --git a/src/glx/dri2_glx.c b/src/glx/dri2_glx.c index b09606addde..b6988c3ca60 100644 --- a/src/glx/dri2_glx.c +++ b/src/glx/dri2_glx.c @@ -1045,7 +1045,15 @@ dri2CreateScreen(int screen, struct glx_display * priv) goto handle_error; } - psc->fd = open(deviceName, O_RDWR); +#ifdef O_CLOEXEC + psc->fd = open(deviceName, O_RDWR | O_CLOEXEC); + if (psc->fd == -1 && errno == EINVAL) +#endif + { + psc->fd = open(deviceName, O_RDWR); + if (psc->fd != -1) + fcntl(psc->fd, F_SETFD, fcntl(psc->fd, F_GETFD) | FD_CLOEXEC); + } if (psc->fd < 0) { ErrorMessageF("failed to open drm device: %s\n", strerror(errno)); goto handle_error; -- cgit v1.2.3