]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
soc: amlogic: canvas: fix device leak on lookup
authorJohan Hovold <johan@kernel.org>
Fri, 26 Sep 2025 14:24:53 +0000 (16:24 +0200)
committerNeil Armstrong <neil.armstrong@linaro.org>
Tue, 21 Oct 2025 12:20:29 +0000 (14:20 +0200)
Make sure to drop the reference taken to the canvas platform device when
looking up its driver data.

Note that holding a reference to a device does not prevent its driver
data from going away so there is no point in keeping the reference.

Also note that commit 28f851e6afa8 ("soc: amlogic: canvas: add missing
put_device() call in meson_canvas_get()") fixed the leak in a lookup
error path, but the reference is still leaking on success.

Fixes: d4983983d987 ("soc: amlogic: add meson-canvas driver")
Cc: stable@vger.kernel.org # 4.20: 28f851e6afa8
Cc: Yu Kuai <yukuai3@huawei.com>
Signed-off-by: Johan Hovold <johan@kernel.org>
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Link: https://patch.msgid.link/20250926142454.5929-2-johan@kernel.org
Signed-off-by: Neil Armstrong <neil.armstrong@linaro.org>
drivers/soc/amlogic/meson-canvas.c

index b6e06c4d2117f6dac1d2ea3a2db86d0a91e1b7b1..0711088da5dcd1e859a955ab96251386efbbe832 100644 (file)
@@ -73,10 +73,9 @@ struct meson_canvas *meson_canvas_get(struct device *dev)
         * current state, this driver probe cannot return -EPROBE_DEFER
         */
        canvas = dev_get_drvdata(&canvas_pdev->dev);
-       if (!canvas) {
-               put_device(&canvas_pdev->dev);
+       put_device(&canvas_pdev->dev);
+       if (!canvas)
                return ERR_PTR(-EINVAL);
-       }
 
        return canvas;
 }