[libcamera-devel] [PATCH] v4l2: v4l2_camera_proxy, v4l2_camera: Check return values of read/write
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Jun 17 02:31:39 CEST 2020
Hi Paul,
Thank you for the patch.
On Tue, Jun 16, 2020 at 07:54:34PM +0900, Paul Elder wrote:
> The return value of the write to the eventfd (to signal POLLIN) from
> V4L2Camera and the read from the eventfd (to clear POLLIN) from
> V4L2CameraProxy was not ignored. Check the return value, and print an
As pointed out by Umang, "was not ignored" doesn't seem right.
Apart from that,
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> error message.
>
> Reported-by: Coverity CID=290743
> Reported-by: Coverity CID=290744
> Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> ---
> src/v4l2/v4l2_camera.cpp | 4 +++-
> src/v4l2/v4l2_camera_proxy.cpp | 4 +++-
> 2 files changed, 6 insertions(+), 2 deletions(-)
>
> diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp
> index 3c36932..9a1ebc8 100644
> --- a/src/v4l2/v4l2_camera.cpp
> +++ b/src/v4l2/v4l2_camera.cpp
> @@ -91,7 +91,9 @@ void V4L2Camera::requestComplete(Request *request)
> bufferLock_.unlock();
>
> uint64_t data = 1;
> - ::write(efd_, &data, sizeof(data));
> + int ret = ::write(efd_, &data, sizeof(data));
> + if (ret != sizeof(data))
> + LOG(V4L2Compat, Error) << "Failed to signal eventfd POLLIN";
>
> bufferSema_.release();
> }
> diff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp
> index 308a8ab..17477ab 100644
> --- a/src/v4l2/v4l2_camera_proxy.cpp
> +++ b/src/v4l2/v4l2_camera_proxy.cpp
> @@ -454,7 +454,9 @@ int V4L2CameraProxy::vidioc_dqbuf(struct v4l2_buffer *arg)
> currentBuf_ = (currentBuf_ + 1) % bufferCount_;
>
> uint64_t data;
> - ::read(efd_, &data, sizeof(data));
> + ret = ::read(efd_, &data, sizeof(data));
> + if (ret != sizeof(data))
> + LOG(V4L2Compat, Error) << "Failed to clear eventfd POLLIN";
>
> return 0;
> }
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list