From 4ebddb7c17c4549f04741c7faf8e4ced62391d20 Mon Sep 17 00:00:00 2001 From: Sakari Ailus Date: Fri, 12 Mar 2021 10:05:44 +0100 Subject: [PATCH] media: entity: Add lockdep check to media graph walk It was always assumed that walking the media graph would require holding the media_device graph_mutex but this was not documented nor checked for. Add a lockdep check to graph walk init and iter, and document the need for acquiring the graph_mutex. Signed-off-by: Sakari Ailus Signed-off-by: Mauro Carvalho Chehab --- drivers/media/mc/mc-entity.c | 1 + include/media/media-entity.h | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/drivers/media/mc/mc-entity.c b/drivers/media/mc/mc-entity.c index 12b45e6..678b997 100644 --- a/drivers/media/mc/mc-entity.c +++ b/drivers/media/mc/mc-entity.c @@ -340,6 +340,7 @@ static void media_graph_walk_iter(struct media_graph *graph) stack_push(graph, next); dev_dbg(entity->graph_obj.mdev->dev, "walk: pushing '%s' on stack\n", next->name); + lockdep_assert_held(&entity->graph_obj.mdev->graph_mutex); } struct media_entity *media_graph_walk_next(struct media_graph *graph) diff --git a/include/media/media-entity.h b/include/media/media-entity.h index a90e2bf..09737b4 100644 --- a/include/media/media-entity.h +++ b/include/media/media-entity.h @@ -885,6 +885,11 @@ int media_entity_get_fwnode_pad(struct media_entity *entity, * * @graph: Media graph structure that will be used to walk the graph * @mdev: Pointer to the &media_device that contains the object + * + * The caller is required to hold the media_device graph_mutex during the graph + * walk until the graph state is released. + * + * Returns zero on success or a negative error code otherwise. */ __must_check int media_graph_walk_init( struct media_graph *graph, struct media_device *mdev); -- 2.7.4