]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
media: samsung: exynos4-is: fix potential ABBA deadlock on init
authorMarek Szyprowski <m.szyprowski@samsung.com>
Mon, 5 Jan 2026 20:40:38 +0000 (15:40 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:12:05 +0000 (13:12 +0100)
[ Upstream commit 17dc8ccd6dd5ffe30aa9b0d36e2af1389344ce2b ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/media/platform/exynos4-is/media-dev.c

index bd37011fb671e072c9fb7e5164e32b46db36c67f..2ae2a0aada0dfe31c7d420b8196167f51f83461f 100644 (file)
@@ -1409,12 +1409,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;