From 469a85f74d631a83e325982d4101909e5e0a7834 Mon Sep 17 00:00:00 2001 From: Paul Elder Date: Tue, 9 Jun 2020 14:38:33 +0900 Subject: v4l2: v4l2_camera_proxy, v4l2_camera: Check return values of read/write 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 ignored. Check the return value, and print an error message. Reported-by: Coverity CID=290743 Reported-by: Coverity CID=290744 Signed-off-by: Paul Elder Reviewed-by: Laurent Pinchart --- src/v4l2/v4l2_camera.cpp | 4 +++- src/v4l2/v4l2_camera_proxy.cpp | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src/v4l2') diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp index 3c369328..9a1ebc84 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 308a8abf..d7f14e67 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)); + int ret = ::read(efd_, &data, sizeof(data)); + if (ret != sizeof(data)) + LOG(V4L2Compat, Error) << "Failed to clear eventfd POLLIN"; return 0; } -- cgit v1.2.1