[libcamera-devel] [PATCH] pipeline: rpi: ipa_base: Parse config files after platformRegister()

Jacopo Mondi jacopo.mondi at ideasonboard.com
Wed May 24 17:00:40 CEST 2023


On Wed, May 24, 2023 at 02:00:37PM +0100, David Plowman via libcamera-devel wrote:
> Hi Naush
>
> Thanks for the patch!
>
> On Tue, 23 May 2023 at 13:03, Naushir Patuck via libcamera-devel
> <libcamera-devel at lists.libcamera.org> wrote:
> >
> > If a user uses a pipeline handler config file where a custom timeout
> > value is specified, it would lead to a segmentation fault when
> > loadPipelineConfiguration() tried to access the as yet uninitialised
> > V4L2VideoDevice object.
> >
> > To fix this, parse the pipeline handler config file only after fully
> > initialising and registering the pipeline handler and V4L2VideoDevice
> > objects.
> >
> > Fixes: 6c71ee1f15305 ("pipeline: raspberrypi: Introduce PipelineHandlerBase class")
> > Signed-off-by: Naushir Patuck <naush at raspberrypi.com>
>
> Looks good to me. (Actually, I think "the as yet" is probably OK...)

Ah sorry, thought it was a typo.. I didn't mean to correct a native
speaker :)

>
> Reviewed-by: David Plowman <david.plowman at raspberrypi.com>
>
> Thanks
> David
>
> > ---
> >  src/libcamera/pipeline/rpi/common/pipeline_base.cpp | 8 ++++----
> >  1 file changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
> > index ba1797bcfef0..3bb5ec531e4f 100644
> > --- a/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
> > +++ b/src/libcamera/pipeline/rpi/common/pipeline_base.cpp
> > @@ -888,16 +888,16 @@ int PipelineHandlerBase::registerCamera(std::unique_ptr<RPi::CameraData> &camera
> >         }
> >         data->nativeBayerOrder_ = bayerFormat.order;
> >
> > +       ret = platformRegister(cameraData, frontend, backend);
> > +       if (ret)
> > +               return ret;
> > +
> >         ret = data->loadPipelineConfiguration();
> >         if (ret) {
> >                 LOG(RPI, Error) << "Unable to load pipeline configuration";
> >                 return ret;
> >         }
> >
> > -       ret = platformRegister(cameraData, frontend, backend);
> > -       if (ret)
> > -               return ret;
> > -
> >         /* Setup the general IPA signal handlers. */
> >         data->frontendDevice()->dequeueTimeout.connect(data, &RPi::CameraData::cameraTimeout);
> >         data->frontendDevice()->frameStart.connect(data, &RPi::CameraData::frameStarted);
> > --
> > 2.34.1
> >


More information about the libcamera-devel mailing list