[PATCH 2/3] libcamera: shared_mem_object: Prevent memfd from shrinking or growing

Kieran Bingham kieran.bingham at ideasonboard.com
Wed Jul 31 10:40:11 CEST 2024


Quoting Milan Zamazal (2024-07-31 08:24:29)
> Hi Laurent,
> 
> thank you for the patch.
> 
> Laurent Pinchart <laurent.pinchart at ideasonboard.com> writes:
> 
> > The memfd underlying the SharedMem object must not shrink, or memory
> > corruption will happen. Prevent this by setting the shrink seal on the
> > file. As there's no valid use case for growing the memory either, set
> > the grow seal as well.
> 
> Makes sense to me.
> 
> Reviewed-by: Milan Zamazal <mzamazal at redhat.com>

Haha, I was going to ask about this in the previous patch - then I
discovered this ;-)

But should we - with the same logic also add MemFd::Seal::Grow to the
allocFromUDmaBuf() implementation too?


Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>

> 
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
> >  src/libcamera/shared_mem_object.cpp | 3 ++-
> >  1 file changed, 2 insertions(+), 1 deletion(-)
> >
> > diff --git a/src/libcamera/shared_mem_object.cpp b/src/libcamera/shared_mem_object.cpp
> > index 022645e71a35..d4c7991ad16a 100644
> > --- a/src/libcamera/shared_mem_object.cpp
> > +++ b/src/libcamera/shared_mem_object.cpp
> > @@ -58,7 +58,8 @@ SharedMem::SharedMem() = default;
> >   */
> >  SharedMem::SharedMem(const std::string &name, std::size_t size)
> >  {
> > -     UniqueFD memfd = MemFd::create(name.c_str(), size);
> > +     UniqueFD memfd = MemFd::create(name.c_str(), size, MemFd::Seal::Shrink |
> > +                                    MemFd::Seal::Grow);
> >       if (!memfd.isValid())
> >               return;
>


More information about the libcamera-devel mailing list