libcamera: v4l2_videodevice: Use O_CLOEXEC when exporting DMA buffers
Files opened internally in libcamera without the O_CLOEXEC file will remain open upon a call to one of the exec(3) functions. As exec() doesn't destroy local or global objects, this can lead to various side effects. Avoid this by opening file descriptors with O_CLOEXEC for all internal files. The O_CLOEXEC flag should also be set when obtaining file handles from the V4L2 VIDIOC_EXPBUF operation, but was missed during the updates to bothd942bdc913
("libcamera: v4l2_device: openat(2) with O_CLOEXEC to cleanup after exec(3)") and436b38fd89
("libcamera: Open files with O_CLOEXEC"). Set the O_CLOEXEC flag on calls to ioctl(VIDIOC_EXPBUF). Fixes:436b38fd89
("libcamera: Open files with O_CLOEXEC") Signed-off-by: Elias Naur <mail@eliasnaur.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
This commit is contained in:
parent
1c512d4065
commit
4c71ec00c2
1 changed files with 1 additions and 1 deletions
|
@ -1471,7 +1471,7 @@ UniqueFD V4L2VideoDevice::exportDmabufFd(unsigned int index,
|
|||
expbuf.type = bufferType_;
|
||||
expbuf.index = index;
|
||||
expbuf.plane = plane;
|
||||
expbuf.flags = O_RDWR;
|
||||
expbuf.flags = O_CLOEXEC | O_RDWR;
|
||||
|
||||
ret = ioctl(VIDIOC_EXPBUF, &expbuf);
|
||||
if (ret < 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue