Patch Detail
Show a patch.
GET /api/1.1/patches/15050/?format=api
{ "id": 15050, "url": "https://patchwork.libcamera.org/api/1.1/patches/15050/?format=api", "web_url": "https://patchwork.libcamera.org/patch/15050/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20211206140701.19197-1-laurent.pinchart@ideasonboard.com>", "date": "2021-12-06T14:07:01", "name": "[libcamera-devel] libcamera: base: shared_fd: Don't dup() an invalid fd", "commit_ref": "72679c682eb0b9f03948f258a26f78c037d33c48", "pull_url": null, "state": "accepted", "archived": false, "hash": "daef89abbf440990f9ffb19050e842bf6f5cea17", "submitter": { "id": 2, "url": "https://patchwork.libcamera.org/api/1.1/people/2/?format=api", "name": "Laurent Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "delegate": { "id": 14, "url": "https://patchwork.libcamera.org/api/1.1/users/14/?format=api", "username": "pinchartl", "first_name": "Laurent", "last_name": "Pinchart", "email": "laurent.pinchart@ideasonboard.com" }, "mbox": "https://patchwork.libcamera.org/patch/15050/mbox/", "series": [ { "id": 2818, "url": "https://patchwork.libcamera.org/api/1.1/series/2818/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=2818", "date": "2021-12-06T14:07:01", "name": "[libcamera-devel] libcamera: base: shared_fd: Don't dup() an invalid fd", "version": 1, "mbox": "https://patchwork.libcamera.org/series/2818/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/15050/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/15050/checks/", "tags": {}, "headers": { "Return-Path": "<libcamera-devel-bounces@lists.libcamera.org>", "X-Original-To": "parsemail@patchwork.libcamera.org", "Delivered-To": "parsemail@patchwork.libcamera.org", "Received": [ "from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id B007DBF415\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 6 Dec 2021 14:07:38 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D13CE6086C;\n\tMon, 6 Dec 2021 15:07:37 +0100 (CET)", "from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id BABA260725\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 6 Dec 2021 15:07:36 +0100 (CET)", "from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 50679EE\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 6 Dec 2021 15:07:36 +0100 (CET)" ], "Authentication-Results": "lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"LeONpRA7\"; dkim-atps=neutral", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1638799656;\n\tbh=qsC9Tfz6b1BxgGBFaaAP8YFIVD5cXTAwLVj0cfBxxsA=;\n\th=From:To:Subject:Date:From;\n\tb=LeONpRA7Q6Ve1dbAMQXKixjXiMn/ozCQ+fyZdytvKegeYt+X4+6AwSQiZSSk6llIG\n\ti5FMmnB0ro9iTP7KS9t64CjtzvneVoNqcI+vSPEF/e2N4Cg5TtB9pdbw1IJ7XJK/rX\n\tnwSgvrByMDN2X47mbEQUC0CuCiad96OvMPQAkDw4=", "From": "Laurent Pinchart <laurent.pinchart@ideasonboard.com>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Mon, 6 Dec 2021 16:07:01 +0200", "Message-Id": "<20211206140701.19197-1-laurent.pinchart@ideasonboard.com>", "X-Mailer": "git-send-email 2.32.0", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "Subject": "[libcamera-devel] [PATCH] libcamera: base: shared_fd: Don't dup()\n\tan invalid fd", "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>", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "The SharedFD::dup() implementation calls the C library dup() function on\nthe fd. When the SharedFD instance is invalid, this produces an invalid\nfd, which is the correct behaviour, but logs an error message.\n\nFix it by returning an invalid UniqueFD directly when the SharedFD is\ninvalid. This also saves a system call, which is always nice to do.\n\nFixes: fcf98514cb4e (\"libcamera: base: file_descriptor: Return UniqueFD from dup()\")\nSigned-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n---\n src/libcamera/base/shared_fd.cpp | 3 +++\n 1 file changed, 3 insertions(+)\n\n\nbase-commit: f8d2f17a3db5ac490d7b505253a98d6795c2b630", "diff": "diff --git a/src/libcamera/base/shared_fd.cpp b/src/libcamera/base/shared_fd.cpp\nindex bd2ab5aa25b7..c711cf579a04 100644\n--- a/src/libcamera/base/shared_fd.cpp\n+++ b/src/libcamera/base/shared_fd.cpp\n@@ -253,6 +253,9 @@ SharedFD &SharedFD::operator=(SharedFD &&other)\n */\n UniqueFD SharedFD::dup() const\n {\n+\tif (!isValid())\n+\t\treturn {};\n+\n \tUniqueFD dupFd(::dup(get()));\n \tif (!dupFd.isValid()) {\n \t\tint ret = -errno;\n", "prefixes": [ "libcamera-devel" ] }