media: v4l2-subdev: handle module refcounting here
authorHans Verkuil <hverkuil-cisco@xs4all.nl>
Fri, 1 Mar 2019 11:11:27 +0000 (06:11 -0500)
committerMauro Carvalho Chehab <mchehab+samsung@kernel.org>
Tue, 19 Mar 2019 17:29:37 +0000 (13:29 -0400)
commit218bf10e39ed5fb22a48dee40bfd2bbcb91693ba
treefae09b667509e0ed99447119c42b359186350360
parent0e43734d4c46e156785bb1d2acc5b3c10b7d5dd5
media: v4l2-subdev: handle module refcounting here

The module ownership refcounting was done in media_entity_get/put,
but that was very confusing and it did not work either in case an
application had a v4l-subdevX device open and the module was
unbound. When the v4l-subdevX device was closed the media_entity_put
was never called and the module refcount was left one too high, making
it impossible to unload it.

Since v4l2-subdev.c was the only place where media_entity_get/put was
called, just move the functionality to v4l2-subdev.c and drop those
confusing entity functions.

Store the module in subdev_fh so module_put no longer depends on
the media_entity struct.

Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org>
drivers/media/media-entity.c
drivers/media/v4l2-core/v4l2-subdev.c
include/media/media-entity.h
include/media/v4l2-subdev.h