On 04/28/16 12:25, Marek Szyprowski wrote: > Commit 0c426c472b5585ed6e59160359c979506d45ae49 ("[media] media: Always > keep a graph walk large enough around") changed > media_device_register_entity() function to take mdev->graph_mutex. This > causes deadlock in driver probe, which calls (indirectly) this function > with ->graph_mutex taken. This patch removes taking ->graph_mutex in > driver probe to avoid deadlock. Other drivers don't take ->graph_mutex > for entity registration, so this change should be safe. > > Signed-off-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx> Reviewed-by: Hans Verkuil <hans.verkuil@xxxxxxxxx> Thanks! Hans > --- > drivers/media/platform/s3c-camif/camif-core.c | 12 +++--------- > 1 file changed, 3 insertions(+), 9 deletions(-) > > diff --git a/drivers/media/platform/s3c-camif/camif-core.c b/drivers/media/platform/s3c-camif/camif-core.c > index 0b44b9accf50..af237af204e2 100644 > --- a/drivers/media/platform/s3c-camif/camif-core.c > +++ b/drivers/media/platform/s3c-camif/camif-core.c > @@ -493,21 +493,17 @@ static int s3c_camif_probe(struct platform_device *pdev) > if (ret < 0) > goto err_sens; > > - mutex_lock(&camif->media_dev.graph_mutex); > - > ret = v4l2_device_register_subdev_nodes(&camif->v4l2_dev); > if (ret < 0) > - goto err_unlock; > + goto err_sens; > > ret = camif_register_video_nodes(camif); > if (ret < 0) > - goto err_unlock; > + goto err_sens; > > ret = camif_create_media_links(camif); > if (ret < 0) > - goto err_unlock; > - > - mutex_unlock(&camif->media_dev.graph_mutex); > + goto err_sens; > > ret = media_device_register(&camif->media_dev); > if (ret < 0) > @@ -516,8 +512,6 @@ static int s3c_camif_probe(struct platform_device *pdev) > pm_runtime_put(dev); > return 0; > > -err_unlock: > - mutex_unlock(&camif->media_dev.graph_mutex); > err_sens: > v4l2_device_unregister(&camif->v4l2_dev); > media_device_unregister(&camif->media_dev); > -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html