summaryrefslogtreecommitdiff
path: root/sys/v4l2/gstv4l2.c
diff options
context:
space:
mode:
authorArun Raghavan <git@arunraghavan.net>2015-11-03 22:01:07 +0530
committerArun Raghavan <git@arunraghavan.net>2015-11-03 22:02:38 +0530
commit7b17615da8844080d66c82bd7cc2090681d31aac (patch)
tree64da9f87d55ec8c174b06cdac4cc9573cd428bd4 /sys/v4l2/gstv4l2.c
parent9fee2c7c9f96829a91012f98c75aa176748c1d3c (diff)
v4l2: Set O_CLOEXEC on the device fd
This is needed to make sure that child processes don't inherit the video device fd which can cause problems with some drivers.
Diffstat (limited to 'sys/v4l2/gstv4l2.c')
-rw-r--r--sys/v4l2/gstv4l2.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/v4l2/gstv4l2.c b/sys/v4l2/gstv4l2.c
index 08ff3f582..8333eab41 100644
--- a/sys/v4l2/gstv4l2.c
+++ b/sys/v4l2/gstv4l2.c
@@ -25,6 +25,10 @@
#include "config.h"
#endif
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE /* O_CLOEXEC */
+#endif
+
#include "gst/gst-i18n-plugin.h"
#include <gst/gst.h>
@@ -124,7 +128,8 @@ gst_v4l2_probe_and_register (GstPlugin * plugin)
if (video_fd >= 0)
close (video_fd);
- video_fd = open (it->device_path, O_RDWR);
+ video_fd = open (it->device_path, O_RDWR | O_CLOEXEC);
+
if (video_fd == -1) {
GST_DEBUG ("Failed to open %s: %s", it->device_path, g_strerror (errno));
continue;