Hi Sakari, Thank you for the patch. On Wed, Dec 20, 2023 at 12:36:57PM +0200, Sakari Ailus wrote: > Call media_devnode_init() from media_device_init(). This has the effect of > creating a struct device for the media_devnode before it is registered, > making it possible to obtain a reference to it for e.g. video devices. > > Signed-off-by: Sakari Ailus <sakari.ailus@xxxxxxxxxxxxxxx> > Acked-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx> > --- > drivers/media/mc/mc-device.c | 21 +++++++-------------- > 1 file changed, 7 insertions(+), 14 deletions(-) > > diff --git a/drivers/media/mc/mc-device.c b/drivers/media/mc/mc-device.c > index 44685ab6a450..e6ac9b066524 100644 > --- a/drivers/media/mc/mc-device.c > +++ b/drivers/media/mc/mc-device.c > @@ -711,8 +711,8 @@ void media_device_init(struct media_device *mdev) > mutex_init(&mdev->req_queue_mutex); > mutex_init(&mdev->graph_mutex); > ida_init(&mdev->entity_internal_idx); > - > atomic_set(&mdev->request_id, 0); I would add a blank line here. Reviewed-by: Laurent Pinchart <laurent.pinchart@xxxxxxxxxxxxxxxx> > + media_devnode_init(&mdev->devnode); > > if (!*mdev->bus_info) > media_set_bus_info(mdev->bus_info, sizeof(mdev->bus_info), > @@ -729,6 +729,7 @@ void media_device_cleanup(struct media_device *mdev) > media_graph_walk_cleanup(&mdev->pm_count_walk); > mutex_destroy(&mdev->graph_mutex); > mutex_destroy(&mdev->req_queue_mutex); > + put_device(&mdev->devnode.dev); > } > EXPORT_SYMBOL_GPL(media_device_cleanup); > > @@ -744,26 +745,19 @@ int __must_check __media_device_register(struct media_device *mdev, > /* Set version 0 to indicate user-space that the graph is static */ > mdev->topology_version = 0; > > - media_devnode_init(&mdev->devnode); > - > ret = media_devnode_register(&mdev->devnode, owner); > if (ret < 0) > - goto out_put; > + return ret; > > ret = device_create_file(&mdev->devnode.dev, &dev_attr_model); > - if (ret < 0) > - goto out_unregister; > + if (ret < 0) { > + media_devnode_unregister(&mdev->devnode); > + return ret; > + } > > dev_dbg(mdev->dev, "Media device registered\n"); > > return 0; > - > -out_unregister: > - media_devnode_unregister(&mdev->devnode); > -out_put: > - put_device(&mdev->devnode.dev); > - > - return ret; > } > EXPORT_SYMBOL_GPL(__media_device_register); > > @@ -810,7 +804,6 @@ void media_device_unregister(struct media_device *mdev) > device_remove_file(&mdev->devnode.dev, &dev_attr_model); > dev_dbg(mdev->dev, "Media device unregistering\n"); > media_devnode_unregister(&mdev->devnode); > - put_device(&mdev->devnode.dev); > } > EXPORT_SYMBOL_GPL(media_device_unregister); > -- Regards, Laurent Pinchart