Message ID | 20191206092654.24340-1-paul.elder@ideasonboard.com |
---|---|
State | Superseded |
Headers | show |
Series |
|
Related | show |
Hi Paul, On Fri, Dec 06, 2019 at 04:26:53AM -0500, Paul Elder wrote: > We are preparing to integrate the V4L2 adaptation layer, which will > intercept open() calls (among others) via LD_PRELOAD. To prevent > libcamera's own open() calls from being intercepted, replace them will a > direct syscall. > > Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org> Thanks j > --- > src/libcamera/v4l2_device.cpp | 3 ++- > src/libcamera/v4l2_videodevice.cpp | 3 ++- > 2 files changed, 4 insertions(+), 2 deletions(-) > > diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp > index 0452f801..f16931a3 100644 > --- a/src/libcamera/v4l2_device.cpp > +++ b/src/libcamera/v4l2_device.cpp > @@ -11,6 +11,7 @@ > #include <iomanip> > #include <string.h> > #include <sys/ioctl.h> > +#include <sys/syscall.h> > #include <unistd.h> > > #include "log.h" > @@ -75,7 +76,7 @@ int V4L2Device::open(unsigned int flags) > return -EBUSY; > } > > - int ret = ::open(deviceNode_.c_str(), flags); > + int ret = syscall(SYS_open, deviceNode_.c_str(), flags); > if (ret < 0) { > ret = -errno; > LOG(V4L2, Error) << "Failed to open V4L2 device: " > diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp > index 99213075..2dff3d3c 100644 > --- a/src/libcamera/v4l2_videodevice.cpp > +++ b/src/libcamera/v4l2_videodevice.cpp > @@ -13,6 +13,7 @@ > #include <string.h> > #include <sys/ioctl.h> > #include <sys/mman.h> > +#include <sys/syscall.h> > #include <sys/time.h> > #include <unistd.h> > #include <vector> > @@ -1427,7 +1428,7 @@ int V4L2M2MDevice::open() > * as the V4L2VideoDevice::open() retains a handle by duplicating the > * fd passed in. > */ > - fd = ::open(deviceNode_.c_str(), O_RDWR | O_NONBLOCK); > + fd = syscall(SYS_open, deviceNode_.c_str(), O_RDWR | O_NONBLOCK); > if (fd < 0) { > ret = -errno; > LOG(V4L2, Error) > -- > 2.23.0 > > _______________________________________________ > libcamera-devel mailing list > libcamera-devel@lists.libcamera.org > https://lists.libcamera.org/listinfo/libcamera-devel
diff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp index 0452f801..f16931a3 100644 --- a/src/libcamera/v4l2_device.cpp +++ b/src/libcamera/v4l2_device.cpp @@ -11,6 +11,7 @@ #include <iomanip> #include <string.h> #include <sys/ioctl.h> +#include <sys/syscall.h> #include <unistd.h> #include "log.h" @@ -75,7 +76,7 @@ int V4L2Device::open(unsigned int flags) return -EBUSY; } - int ret = ::open(deviceNode_.c_str(), flags); + int ret = syscall(SYS_open, deviceNode_.c_str(), flags); if (ret < 0) { ret = -errno; LOG(V4L2, Error) << "Failed to open V4L2 device: " diff --git a/src/libcamera/v4l2_videodevice.cpp b/src/libcamera/v4l2_videodevice.cpp index 99213075..2dff3d3c 100644 --- a/src/libcamera/v4l2_videodevice.cpp +++ b/src/libcamera/v4l2_videodevice.cpp @@ -13,6 +13,7 @@ #include <string.h> #include <sys/ioctl.h> #include <sys/mman.h> +#include <sys/syscall.h> #include <sys/time.h> #include <unistd.h> #include <vector> @@ -1427,7 +1428,7 @@ int V4L2M2MDevice::open() * as the V4L2VideoDevice::open() retains a handle by duplicating the * fd passed in. */ - fd = ::open(deviceNode_.c_str(), O_RDWR | O_NONBLOCK); + fd = syscall(SYS_open, deviceNode_.c_str(), O_RDWR | O_NONBLOCK); if (fd < 0) { ret = -errno; LOG(V4L2, Error)
We are preparing to integrate the V4L2 adaptation layer, which will intercept open() calls (among others) via LD_PRELOAD. To prevent libcamera's own open() calls from being intercepted, replace them will a direct syscall. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> --- src/libcamera/v4l2_device.cpp | 3 ++- src/libcamera/v4l2_videodevice.cpp | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-)