[PATCH v2] DmaBufAllocator: Avoid syncing with an invalid file descriptor

Harvey Yang chenghaoyang at chromium.org
Mon Jan 13 21:28:38 CET 2025


As DmaSyncer disables the copy c'tor, the move c'tor will be used
instead. This leaves some DmaSyncers with invalid SharedFDs. They should
avoid syncing with invalid file descriptors in the d'tor.

Fixes: 545046a41e17 ("DmaBufAllocator: Make DmaSyncer non-copyable")
Signed-off-by: Harvey Yang <chenghaoyang at chromium.org>
Tested-by: Milan Zamazal <mzamazal at redhat.com>
---
 src/libcamera/dma_buf_allocator.cpp | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/libcamera/dma_buf_allocator.cpp b/src/libcamera/dma_buf_allocator.cpp
index a014c3b4263c..d8c62dd67a96 100644
--- a/src/libcamera/dma_buf_allocator.cpp
+++ b/src/libcamera/dma_buf_allocator.cpp
@@ -325,7 +325,12 @@ DmaSyncer::DmaSyncer(SharedFD fd, SyncType type)
 
 DmaSyncer::~DmaSyncer()
 {
-	sync(DMA_BUF_SYNC_END);
+	/*
+	 * DmaSyncer might be moved and left with an empty SharedFD.
+	 * Avoid syncing with an invalid file descriptor in this case.
+	 */
+	if (fd_.isValid())
+		sync(DMA_BUF_SYNC_END);
 }
 
 void DmaSyncer::sync(uint64_t step)
-- 
2.47.1.688.g23fc6f90ad-goog



More information about the libcamera-devel mailing list