Message ID | 20250120141657.95664-1-pobrn@protonmail.com |
---|---|
State | New |
Headers | show |
Series |
|
Related | show |
Hi Barnabás, Thank you for the patch. On Mon, Jan 20, 2025 at 02:16:59PM +0000, Barnabás Pőcze wrote: > Check if the buffer has a fence before making any modifications because > otherwise it is possible for `Request::addBuffer()` to return an error code > while at the same time the buffer - for all intents and purposes - is added > to the request. > > Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > --- > src/libcamera/request.cpp | 18 +++++++++--------- > 1 file changed, 9 insertions(+), 9 deletions(-) > > diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp > index 5cfafea89..e7eb1c0c8 100644 > --- a/src/libcamera/request.cpp > +++ b/src/libcamera/request.cpp > @@ -466,6 +466,15 @@ int Request::addBuffer(const Stream *stream, FrameBuffer *buffer, > return -EINVAL; > } > > + /* > + * Make sure the fence has been extracted from the buffer > + * to avoid waiting on a stale fence. > + */ > + if (buffer->_d()->fence()) { > + LOG(Request, Error) << "Can't add buffer that still references a fence"; > + return -EEXIST; > + } > + > auto it = bufferMap_.find(stream); > if (it != bufferMap_.end()) { > LOG(Request, Error) << "FrameBuffer already set for stream"; > @@ -476,15 +485,6 @@ int Request::addBuffer(const Stream *stream, FrameBuffer *buffer, > _d()->pending_.insert(buffer); > bufferMap_[stream] = buffer; > > - /* > - * Make sure the fence has been extracted from the buffer > - * to avoid waiting on a stale fence. > - */ > - if (buffer->_d()->fence()) { > - LOG(Request, Error) << "Can't add buffer that still references a fence"; > - return -EEXIST; > - } > - > if (fence && fence->isValid()) > buffer->_d()->setFence(std::move(fence)); >
diff --git a/src/libcamera/request.cpp b/src/libcamera/request.cpp index 5cfafea89..e7eb1c0c8 100644 --- a/src/libcamera/request.cpp +++ b/src/libcamera/request.cpp @@ -466,6 +466,15 @@ int Request::addBuffer(const Stream *stream, FrameBuffer *buffer, return -EINVAL; } + /* + * Make sure the fence has been extracted from the buffer + * to avoid waiting on a stale fence. + */ + if (buffer->_d()->fence()) { + LOG(Request, Error) << "Can't add buffer that still references a fence"; + return -EEXIST; + } + auto it = bufferMap_.find(stream); if (it != bufferMap_.end()) { LOG(Request, Error) << "FrameBuffer already set for stream"; @@ -476,15 +485,6 @@ int Request::addBuffer(const Stream *stream, FrameBuffer *buffer, _d()->pending_.insert(buffer); bufferMap_[stream] = buffer; - /* - * Make sure the fence has been extracted from the buffer - * to avoid waiting on a stale fence. - */ - if (buffer->_d()->fence()) { - LOG(Request, Error) << "Can't add buffer that still references a fence"; - return -EEXIST; - } - if (fence && fence->isValid()) buffer->_d()->setFence(std::move(fence));
Check if the buffer has a fence before making any modifications because otherwise it is possible for `Request::addBuffer()` to return an error code while at the same time the buffer - for all intents and purposes - is added to the request. Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com> --- src/libcamera/request.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-)