]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
soc: qcom: cmd-db: Use devm_memremap() to fix memory leak in cmd_db_dev_probe
authorHaotian Zhang <vulab@iscas.ac.cn>
Tue, 16 Dec 2025 01:39:32 +0000 (09:39 +0800)
committerBjorn Andersson <andersson@kernel.org>
Wed, 7 Jan 2026 18:42:30 +0000 (12:42 -0600)
If cmd_db_magic_matches() fails after memremap() succeeds, the function
returns -EINVAL without unmapping the memory region, causing a
potential resource leak.

Switch to devm_memremap to automatically manage the map resource.

Fixes: 312416d9171a ("drivers: qcom: add command DB driver")
Suggested-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
Signed-off-by: Haotian Zhang <vulab@iscas.ac.cn>
Link: https://lore.kernel.org/r/20251216013933.773-1-vulab@iscas.ac.cn
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
drivers/soc/qcom/cmd-db.c

index ae66c2623d250dc02afbeba5dde12045a9d7ce76..84a75d8c4b70205be10d1faa75750ef431d609f6 100644 (file)
@@ -349,15 +349,16 @@ static int cmd_db_dev_probe(struct platform_device *pdev)
                return -EINVAL;
        }
 
-       cmd_db_header = memremap(rmem->base, rmem->size, MEMREMAP_WC);
-       if (!cmd_db_header) {
-               ret = -ENOMEM;
+       cmd_db_header = devm_memremap(&pdev->dev, rmem->base, rmem->size, MEMREMAP_WC);
+       if (IS_ERR(cmd_db_header)) {
+               ret = PTR_ERR(cmd_db_header);
                cmd_db_header = NULL;
                return ret;
        }
 
        if (!cmd_db_magic_matches(cmd_db_header)) {
                dev_err(&pdev->dev, "Invalid Command DB Magic\n");
+               cmd_db_header = NULL;
                return -EINVAL;
        }