From 72679c682eb0b9f03948f258a26f78c037d33c48 Mon Sep 17 00:00:00 2001 From: Laurent Pinchart Date: Mon, 6 Dec 2021 14:48:16 +0200 Subject: libcamera: base: shared_fd: Don't dup() an invalid fd 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(+) (limited to 'src') diff --git a/src/libcamera/base/shared_fd.cpp b/src/libcamera/base/shared_fd.cpp index bd2ab5aa..c711cf57 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; -- cgit v1.2.1