]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
media: samsung: exynos4-is: fix potential ABBA deadlock on init
authorMarek Szyprowski <m.szyprowski@samsung.com>
Tue, 14 Oct 2025 10:46:43 +0000 (12:46 +0200)
committerHans Verkuil <hverkuil+cisco@kernel.org>
Mon, 3 Nov 2025 14:58:41 +0000 (15:58 +0100)
v4l2_device_register_subdev_nodes() must called without taking
media_dev->graph_mutex to avoid potential AB-BA deadlock on further
subdevice driver initialization.

Fixes: fa91f1056f17 ("[media] exynos4-is: Add support for asynchronous subdevices registration")
Cc: stable@vger.kernel.org
Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Acked-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Hans Verkuil <hverkuil+cisco@kernel.org>
drivers/media/platform/samsung/exynos4-is/media-dev.c

index d6f7601de597e3d3517ef9195d728deb578e74f1..bc7087eb761a60b79062f764b1dcc1cdb6afd629 100644 (file)
@@ -1399,12 +1399,14 @@ static int subdev_notifier_complete(struct v4l2_async_notifier *notifier)
        mutex_lock(&fmd->media_dev.graph_mutex);
 
        ret = fimc_md_create_links(fmd);
-       if (ret < 0)
-               goto unlock;
+       if (ret < 0) {
+               mutex_unlock(&fmd->media_dev.graph_mutex);
+               return ret;
+       }
 
-       ret = v4l2_device_register_subdev_nodes(&fmd->v4l2_dev);
-unlock:
        mutex_unlock(&fmd->media_dev.graph_mutex);
+
+       ret = v4l2_device_register_subdev_nodes(&fmd->v4l2_dev);
        if (ret < 0)
                return ret;