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

Milan Zamazal mzamazal at redhat.com
Tue Jan 14 10:10:12 CET 2025


Harvey Yang <chenghaoyang at chromium.org> writes:

> 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>

Reviewed-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)



More information about the libcamera-devel mailing list