linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [RFC 00/16] Make use of kref in media device, grab references as needed
@ 2016-07-14 22:34 Sakari Ailus
  2016-07-14 22:34 ` [RFC 01/16] Revert "[media] media: fix media devnode ioctl/syscall and unregister race" Sakari Ailus
                   ` (16 more replies)
  0 siblings, 17 replies; 23+ messages in thread
From: Sakari Ailus @ 2016-07-14 22:34 UTC (permalink / raw)
  To: linux-media; +Cc: mchehab, shuahkh, laurent.pinchart, hverkuil

Hi folks,

I've been working on this for some time now but only got the full patchset
working some moments ago. The patchset properly, I believe, fixes the
issue of removing a device whilst streaming.

Media device is refcounted and its memory is only released once the last
reference is gone: unregistering is simply unregistering, it no longer
should release memory which could be further accessed.

A video node or a sub-device node also gets a reference to the media
device, i.e. the release function of the video device node will release
its reference to the media device. The same goes for file handles to the
media device.

As a side effect of refcounting the media device, it is allocate together
with the media devnode. The driver may also rely its own resources to the
media device. Alternatively there's also a priv field to hold drivers
private pointer (for container_of() is an option in this case).

I've tested this by manually unbinding the omap3isp platform device while
streaming. Driver changes are required for this to work; by not using
dynamic allocation (i.e. media_device_alloc()) the old behaviour is still
supported. This is still unlikely to be a grave problem as there are not
that many device drivers that support physically removable devices. We've
had this problem for other devices for many years without paying much
notice --- that doesn't mean I don't think at least drivers for removable
devices shouldn't be changed as part of the set later on, I'd just like to
get review comments on the approach first.

The three patches that originally partially resolved some of these issues
are reverted in the beginning of the set. I'm still posting this as an RFC
mainly since the testing is somewhat limited so far.

-- 
Kind regards,
Sakari


^ permalink raw reply	[flat|nested] 23+ messages in thread

end of thread, other threads:[~2016-08-05 10:59 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-07-14 22:34 [RFC 00/16] Make use of kref in media device, grab references as needed Sakari Ailus
2016-07-14 22:34 ` [RFC 01/16] Revert "[media] media: fix media devnode ioctl/syscall and unregister race" Sakari Ailus
2016-07-14 22:34 ` [RFC 02/16] Revert "[media] media: fix use-after-free in cdev_put() when app exits after driver unbind" Sakari Ailus
2016-07-14 22:34 ` [RFC 03/16] Revert "[media] media-device: dynamically allocate struct media_devnode" Sakari Ailus
2016-07-14 22:34 ` [RFC 04/16] media: Remove useless curly braces and parentheses Sakari Ailus
2016-07-14 22:35 ` [RFC 05/16] media: devnode: Refcount the media devnode Sakari Ailus
2016-08-02 12:12   ` Hans Verkuil
2016-08-05 10:59     ` Sakari Ailus
2016-07-14 22:35 ` [RFC 06/16] media: Dynamically allocate the media device Sakari Ailus
2016-07-14 22:35 ` [RFC 07/16] media-device: struct media_device requires struct device Sakari Ailus
2016-07-14 22:35 ` [RFC 08/16] media: Provide a way to the driver to set a private pointer Sakari Ailus
2016-07-14 22:35 ` [RFC 09/16] media: Add release callback for media device Sakari Ailus
2016-07-14 22:35 ` [RFC 10/16] media: Document media device allocation API Sakari Ailus
2016-07-14 22:35 ` [RFC 11/16] v4l: Acquire a reference to the media device for every video device Sakari Ailus
2016-07-14 22:35 ` [RFC 12/16] media: Shuffle functions around Sakari Ailus
2016-07-14 22:35 ` [RFC 13/16] media-device: Postpone graph object removal until free Sakari Ailus
2016-07-14 22:35 ` [RFC 14/16] omap3isp: Allocate the media device dynamically Sakari Ailus
2016-07-14 22:35 ` [RFC 15/16] omap3isp: Release the isp device struct by media device callback Sakari Ailus
2016-07-14 22:35 ` [RFC 16/16] omap3isp: Don't rely on devm for memory resource management Sakari Ailus
2016-07-15 10:19 ` [RFC 00/16] Make use of kref in media device, grab references as needed Mauro Carvalho Chehab
2016-07-19  7:27   ` Sakari Ailus
2016-07-19  7:52     ` Sakari Ailus
2016-07-19 11:50     ` Mauro Carvalho Chehab

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).