]> 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:31:36 +0000 (15:31 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 19 Jan 2026 12:10:09 +0000 (13:10 +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 b19d7c8ddc06b8aad0578cd721c90ee4a4cbe077..63868d1ae0d04cfc76c1f393f5e7ff633e765da0 100644 (file)
@@ -1411,12 +1411,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;