Re: [PATCH 00/26] Media device lifetime management

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Hans,

Many thanks for the review.

On Fri, Mar 03, 2023 at 10:07:38AM +0100, Hans Verkuil wrote:
> Hi Sakari,
> 
> On 01/02/2023 22:45, Sakari Ailus wrote:
> > Hi folks,
> > 
> > This is a refresh of my 2016 RFC patchset to start addressing object
> > lifetime issues in Media controller. It further allows continuing work to
> > address lifetime management of media entities.
> > 
> > The underlying problem is described in detail in v4 of the previous RFC:
> > <URL:https://lore.kernel.org/linux-media/20161108135438.GO3217@xxxxxxxxxxxxxxxxxxxxxxxxxx/>.
> > In brief, there is currently no connection between releasing media device
> > (and related) memory and IOCTL calls, meaning that there is a time window
> > during which released kernel memory can be accessed, and that access can be
> > triggered from the user space. The only reason why this is not a grave
> > security issue is that it is not triggerable by the user alone but requires
> > unbinding a device. That is still not an excuse for not fixing it.
> > 
> > This set differs from the earlier RFC to address the issue in the
> > following respects:
> > 
> > - Make changes for ipu3-cio2 driver, too.
> > 
> > - Continue to provide best effort attempt to keep the window between device
> >   removal and user space being able to access released memory as small as
> >   possible. This means the problem won't become worse for drivers for which
> >   Media device lifetime management has not been implemented.
> > 
> > The latter is achieved by adding a new object, Media devnode compat
> > reference, which is allocated, refcounted and eventually released by the
> > Media controller framework itself, and where the information on registration
> > and open filehandles is maintained. This is only done if the driver does not
> > manage the lifetime of the media device itself, i.e. its release operation
> > is NULL.
> > 
> > Due to this, Media device file handles will also be introduced by this
> > patchset. I thought the first user of this would be Media device events but
> > it seems we already need them here.
> > 
> > Both ipu3-cio2 and omap3isp drivers are relieved of devm_request_irq() use,
> > as device_release() releases the resources before calling the driver's
> > remove function. While further work will be required also on these drivers
> > to safely stop he hardware at unbind time, I don't see a reason not to merge
> > these patches now.
> > 
> > Some patches are temporarily reverted in order to make reworks easier, then
> > applied later on.
> > 
> > I've tested this on ipu3-cio2 with and without the refcounting patch (media:
> > ipu3-cio2: Release the cio2 device context by media device callback),
> > including failures in a few parts of the driver initialisation process in
> > the MC framework.
> > 
> > Questions and comments are welcome.
> 
> Most of this series looks good.
> 
> You can add my:
> 
> Acked-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx>
> 
> for patches 1-17, 19, 20 and 22.

Thank you!

> 
> As I mentioned in my review of patch 21, I don't think 18 and 21 belong to
> this series.

Yes, some patches I wrote as part of this should be merged earlier. I think
I'll just pick them to my master branch once we have rc1.

> 
> I am also not keen on patch 25 (and thus 23 and 24 that it needs). Perhaps
> take that out for now for more discussion later?
> 
> I would like to see some more drivers to be converted: specifically uvc
> and the test drivers (vidtv, vim2m, vimc, visl, vivid). uvc because it is
> widely used, the test drivers because they function as reference code.

Sounds reasonable. Uvc especially should benefit from this. The conversion
isn't even difficult at all, but still requires testing.

> 
> Finally, I don't think this series addresses another life-cycle problem:
> unbinding subdevices when they are still being used, either by userspace
> or a bridge driver.

That is correct. I wanted to address this for the media device first and
tackle other problems once we have these patches in.

> 
> I have patches for that here:
> 
> https://git.linuxtv.org/hverkuil/media_tree.git/log/?h=subdev-kref
> 
> I think these are pretty much independent from this patch series, but
> I'll wait with posting them until this is merged.

Interesting. I thought in practice addressing the problem for sub-devices
would require addressing media device lifetime management first. In
practice most drivers have one big allocation for everything and that can
be released only once all users are gone.

> 
> Background: we have an fpga that implements subdevices and also
> (depending on the configuration) complete v4l2 platform drivers.
> 
> When the fpga is unloaded when going to standby, subdevices and/or
> platform drivers just disappear, and without correct life-time management
> you get crashes. Basically exactly the same problem as you have with the
> media device.

Yes.

Have you posted the subdev-kref patches to the list yet?

-- 
Kind regards,

Sakari Ailus



[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux