From patchwork Mon Dec 6 14:07:01 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 15050 X-Patchwork-Delegate: laurent.pinchart@ideasonboard.com Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id B007DBF415 for ; Mon, 6 Dec 2021 14:07:38 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id D13CE6086C; Mon, 6 Dec 2021 15:07:37 +0100 (CET) Authentication-Results: lancelot.ideasonboard.com; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="LeONpRA7"; dkim-atps=neutral Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id BABA260725 for ; Mon, 6 Dec 2021 15:07:36 +0100 (CET) Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 50679EE for ; Mon, 6 Dec 2021 15:07:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1638799656; bh=qsC9Tfz6b1BxgGBFaaAP8YFIVD5cXTAwLVj0cfBxxsA=; h=From:To:Subject:Date:From; b=LeONpRA7Q6Ve1dbAMQXKixjXiMn/ozCQ+fyZdytvKegeYt+X4+6AwSQiZSSk6llIG i5FMmnB0ro9iTP7KS9t64CjtzvneVoNqcI+vSPEF/e2N4Cg5TtB9pdbw1IJ7XJK/rX nwSgvrByMDN2X47mbEQUC0CuCiad96OvMPQAkDw4= From: Laurent Pinchart 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 Subject: [libcamera-devel] [PATCH] libcamera: base: shared_fd: Don't dup() an invalid fd X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" The SharedFD::dup() implementation calls the C library dup() function on the fd. When the SharedFD instance is invalid, this produces an invalid fd, which is the correct behaviour, but logs an error message. Fix it by returning an invalid UniqueFD directly when the SharedFD is invalid. This also saves a system call, which is always nice to do. Fixes: fcf98514cb4e ("libcamera: base: file_descriptor: Return UniqueFD from dup()") Signed-off-by: Laurent Pinchart Reviewed-by: Kieran Bingham Reviewed-by: Umang Jain --- src/libcamera/base/shared_fd.cpp | 3 +++ 1 file changed, 3 insertions(+) base-commit: f8d2f17a3db5ac490d7b505253a98d6795c2b630 diff --git a/src/libcamera/base/shared_fd.cpp b/src/libcamera/base/shared_fd.cpp index bd2ab5aa25b7..c711cf579a04 100644 --- a/src/libcamera/base/shared_fd.cpp +++ b/src/libcamera/base/shared_fd.cpp @@ -253,6 +253,9 @@ SharedFD &SharedFD::operator=(SharedFD &&other) */ UniqueFD SharedFD::dup() const { + if (!isValid()) + return {}; + UniqueFD dupFd(::dup(get())); if (!dupFd.isValid()) { int ret = -errno;