Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9b15dfe0 authored by Marek Szyprowski's avatar Marek Szyprowski Committed by Mauro Carvalho Chehab
Browse files

[media] media: s3c-camif: fix deadlock on driver probe()



Commit 0c426c47 ("[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: default avatarMarek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
parent 243d4c02
Loading
Loading
Loading
Loading
+3 −9
Original line number Diff line number Diff line
@@ -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);