[libcamera-devel] [PATCH v2] libcamera: camera: Check requests before queueing them

Niklas Söderlund niklas.soderlund at ragnatech.se
Sun Apr 28 11:36:21 CEST 2019


Hi,

On 2019-04-27 12:19:51 +0300, Laurent Pinchart wrote:
> Hi Niklas,
> 
> Thank you for the patch.
> 
> On Fri, Apr 26, 2019 at 04:13:32PM +0200, Niklas Söderlund wrote:
> > Make sure all requests queued to a camera only contain streams which
> > have been configured and belong to the camera.
> > 
> > Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> 
> Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Thanks, pushed to master.

> 
> > ---
> >  src/libcamera/camera.cpp | 9 +++++++++
> >  1 file changed, 9 insertions(+)
> > 
> > diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp
> > index 655996f26224ef49..9cea3fd06238c1cb 100644
> > --- a/src/libcamera/camera.cpp
> > +++ b/src/libcamera/camera.cpp
> > @@ -732,6 +732,7 @@ Request *Camera::createRequest()
> >   * \return 0 on success or a negative error code otherwise
> >   * \retval -ENODEV The camera has been disconnected from the system
> >   * \retval -EACCES The camera is not running so requests can't be queued
> > + * \retval -EINVAL The request is invalid
> >   */
> >  int Camera::queueRequest(Request *request)
> >  {
> > @@ -741,6 +742,14 @@ int Camera::queueRequest(Request *request)
> >  	if (!stateIs(CameraRunning))
> >  		return -EACCES;
> >  
> > +	for (auto const &it : request->buffers()) {
> > +		Stream *stream = it.first;
> > +		if (activeStreams_.find(stream) == activeStreams_.end()) {
> > +			LOG(Camera, Error) << "Invalid request";
> > +			return -EINVAL;
> > +		}
> > +	}
> > +
> >  	int ret = request->prepare();
> >  	if (ret) {
> >  		LOG(Camera, Error) << "Failed to prepare request";
> 
> -- 
> Regards,
> 
> Laurent Pinchart

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list