{"id":4041,"url":"https://patchwork.libcamera.org/api/1.1/patches/4041/?format=json","web_url":"https://patchwork.libcamera.org/patch/4041/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20200616105434.57451-1-paul.elder@ideasonboard.com>","date":"2020-06-16T10:54:34","name":"[libcamera-devel] v4l2: v4l2_camera_proxy, v4l2_camera: Check return values of read/write","commit_ref":null,"pull_url":null,"state":"accepted","archived":false,"hash":"d8df61fda89c2a83480738531d9b92ac82f1580d","submitter":{"id":17,"url":"https://patchwork.libcamera.org/api/1.1/people/17/?format=json","name":"Paul Elder","email":"paul.elder@ideasonboard.com"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/4041/mbox/","series":[{"id":1004,"url":"https://patchwork.libcamera.org/api/1.1/series/1004/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1004","date":"2020-06-16T10:54:34","name":"[libcamera-devel] v4l2: v4l2_camera_proxy, v4l2_camera: Check return values of read/write","version":1,"mbox":"https://patchwork.libcamera.org/series/1004/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/4041/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/4041/checks/","tags":{},"headers":{"Return-Path":"<paul.elder@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id AB0A360103\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 16 Jun 2020 12:54:48 +0200 (CEST)","from jade.flets-east.jp (unknown\n\t[IPv6:2400:4051:61:600:2807:bdfa:f6a:8e53])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 38CBFF9;\n\tTue, 16 Jun 2020 12:54:46 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=ideasonboard.com\n\theader.i=@ideasonboard.com\n\theader.b=\"IuHc+Qg8\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1592304888;\n\tbh=csO003quMkKrRQuDv2njtRlhXleo+4XGIjTjVUkd3Eo=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=IuHc+Qg8EyGIYPTrNjoL4Sz5oTOEWe4aasShTRCWcWcHKmcmJJBlPSmI2DDblW+HK\n\tTf7apnPuDN5QENt2P1h+TNc7wMzJ99lmhqFKRyPRANgC7ttIclTbj/cxGXY6kVgHU6\n\t6W1xq3m5MG6vXaneSj5tsH2Ln4GGysr+0MZeBhg4=","From":"Paul Elder <paul.elder@ideasonboard.com>","To":"libcamera-devel@lists.libcamera.org","Date":"Tue, 16 Jun 2020 19:54:34 +0900","Message-Id":"<20200616105434.57451-1-paul.elder@ideasonboard.com>","X-Mailer":"git-send-email 2.27.0","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","Subject":"[libcamera-devel] [PATCH] v4l2: v4l2_camera_proxy,\n\tv4l2_camera: Check return values of read/write","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Tue, 16 Jun 2020 10:54:48 -0000"},"content":"The return value of the write to the eventfd (to signal POLLIN) from\nV4L2Camera and the read from the eventfd (to clear POLLIN) from\nV4L2CameraProxy was not ignored. Check the return value, and print an\nerror message.\n\nReported-by: Coverity CID=290743\nReported-by: Coverity CID=290744\nSigned-off-by: Paul Elder <paul.elder@ideasonboard.com>\n---\n src/v4l2/v4l2_camera.cpp       | 4 +++-\n src/v4l2/v4l2_camera_proxy.cpp | 4 +++-\n 2 files changed, 6 insertions(+), 2 deletions(-)","diff":"diff --git a/src/v4l2/v4l2_camera.cpp b/src/v4l2/v4l2_camera.cpp\nindex 3c36932..9a1ebc8 100644\n--- a/src/v4l2/v4l2_camera.cpp\n+++ b/src/v4l2/v4l2_camera.cpp\n@@ -91,7 +91,9 @@ void V4L2Camera::requestComplete(Request *request)\n \tbufferLock_.unlock();\n \n \tuint64_t data = 1;\n-\t::write(efd_, &data, sizeof(data));\n+\tint ret = ::write(efd_, &data, sizeof(data));\n+\tif (ret != sizeof(data))\n+\t\tLOG(V4L2Compat, Error) << \"Failed to signal eventfd POLLIN\";\n \n \tbufferSema_.release();\n }\ndiff --git a/src/v4l2/v4l2_camera_proxy.cpp b/src/v4l2/v4l2_camera_proxy.cpp\nindex 308a8ab..17477ab 100644\n--- a/src/v4l2/v4l2_camera_proxy.cpp\n+++ b/src/v4l2/v4l2_camera_proxy.cpp\n@@ -454,7 +454,9 @@ int V4L2CameraProxy::vidioc_dqbuf(struct v4l2_buffer *arg)\n \tcurrentBuf_ = (currentBuf_ + 1) % bufferCount_;\n \n \tuint64_t data;\n-\t::read(efd_, &data, sizeof(data));\n+\tret = ::read(efd_, &data, sizeof(data));\n+\tif (ret != sizeof(data))\n+\t\tLOG(V4L2Compat, Error) << \"Failed to clear eventfd POLLIN\";\n \n \treturn 0;\n }\n","prefixes":["libcamera-devel"]}