Commit 85de721c authored by Sakari Ailus's avatar Sakari Ailus Committed by Mauro Carvalho Chehab
Browse files

[media] media: Use a better owner for the media device



mdev->fops->owner is actually the owner of the very same module which
implements media_device_register(), so it can't be unloaded anyway. Instead,
use THIS_MODULE through a macro as does video_register_device().

Signed-off-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
Acked-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarMauro Carvalho Chehab <m.chehab@samsung.com>
parent 743e1837
Loading
Loading
Loading
Loading
+4 −3
Original line number Diff line number Diff line
@@ -372,7 +372,8 @@ static void media_device_release(struct media_devnode *mdev)
 * - dev must point to the parent device
 * - model must be filled with the device model name
 */
int __must_check media_device_register(struct media_device *mdev)
int __must_check __media_device_register(struct media_device *mdev,
					 struct module *owner)
{
	int ret;

@@ -388,7 +389,7 @@ int __must_check media_device_register(struct media_device *mdev)
	mdev->devnode.fops = &media_device_fops;
	mdev->devnode.parent = mdev->dev;
	mdev->devnode.release = media_device_release;
	ret = media_devnode_register(&mdev->devnode);
	ret = media_devnode_register(&mdev->devnode, owner);
	if (ret < 0)
		return ret;

@@ -400,7 +401,7 @@ int __must_check media_device_register(struct media_device *mdev)

	return 0;
}
EXPORT_SYMBOL_GPL(media_device_register);
EXPORT_SYMBOL_GPL(__media_device_register);

/**
 * media_device_unregister - unregister a media device
+3 −2
Original line number Diff line number Diff line
@@ -232,7 +232,8 @@ static const struct file_operations media_devnode_fops = {
 * the media_devnode structure is *not* called, so the caller is responsible for
 * freeing any data.
 */
int __must_check media_devnode_register(struct media_devnode *mdev)
int __must_check media_devnode_register(struct media_devnode *mdev,
					struct module *owner)
{
	int minor;
	int ret;
@@ -253,7 +254,7 @@ int __must_check media_devnode_register(struct media_devnode *mdev)

	/* Part 2: Initialize and register the character device */
	cdev_init(&mdev->cdev, &media_devnode_fops);
	mdev->cdev.owner = mdev->fops->owner;
	mdev->cdev.owner = owner;

	ret = cdev_add(&mdev->cdev, MKDEV(MAJOR(media_dev_t), mdev->minor), 1);
	if (ret < 0) {
+3 −1
Original line number Diff line number Diff line
@@ -87,7 +87,9 @@ struct media_device {
/* media_devnode to media_device */
#define to_media_device(node) container_of(node, struct media_device, devnode)

int __must_check media_device_register(struct media_device *mdev);
int __must_check __media_device_register(struct media_device *mdev,
					 struct module *owner);
#define media_device_register(mdev) __media_device_register(mdev, THIS_MODULE)
void media_device_unregister(struct media_device *mdev);

int __must_check media_device_register_entity(struct media_device *mdev,
+2 −1
Original line number Diff line number Diff line
@@ -82,7 +82,8 @@ struct media_devnode {
/* dev to media_devnode */
#define to_media_devnode(cd) container_of(cd, struct media_devnode, dev)

int __must_check media_devnode_register(struct media_devnode *mdev);
int __must_check media_devnode_register(struct media_devnode *mdev,
					struct module *owner);
void media_devnode_unregister(struct media_devnode *mdev);

static inline struct media_devnode *media_devnode_data(struct file *filp)