summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHarvey Yang <chenghaoyang@chromium.org>2025-01-13 20:28:38 +0000
committerKieran Bingham <kieran.bingham@ideasonboard.com>2025-01-14 22:17:33 +0000
commit4dad8ece72c0c1c6c9e0101f4c31937bd739d001 (patch)
tree6d0878b8c4fbb05119ad7ab164bb5191577eec35
parent8b35ce475364f91909492d7bbaf9ec89b15c2511 (diff)
DmaBufAllocator: Avoid syncing with an invalid file descriptorHEADmaster
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@chromium.org> Tested-by: Milan Zamazal <mzamazal@redhat.com> Reviewed-by: Milan Zamazal <mzamazal@redhat.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-rw-r--r--src/libcamera/dma_buf_allocator.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/libcamera/dma_buf_allocator.cpp b/src/libcamera/dma_buf_allocator.cpp
index a014c3b4..d8c62dd6 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)