]> git.itanic.dy.fi Git - linux-stable/commitdiff
media: ipu-bridge: Add missing acpi_dev_put() in ipu_bridge_get_ivsc_acpi_dev()
authorGeert Uytterhoeven <geert+renesas@glider.be>
Fri, 29 Sep 2023 09:31:33 +0000 (11:31 +0200)
committerHans Verkuil <hverkuil-cisco@xs4all.nl>
Wed, 11 Oct 2023 13:26:16 +0000 (15:26 +0200)
In ipu_bridge_get_ivsc_acpi_dev(), the "ivsc_adev" acpi_device pointer
from the outer loop is handed over to the caller, which takes proper
care of its reference count.
However, the "consumer" acpi_device pointer from the inner loop is lost,
without decrementing its reference count.

Fix this by adding the missing call to acpi_dev_put().

Fixes: c66821f381ae ("media: pci: intel: Add IVSC support for IPU bridge driver")
Signed-off-by: Geert Uytterhoeven <geert+renesas@glider.be>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl>
drivers/media/pci/intel/ipu-bridge.c

index 1bde8b6e0b1121a82f80af5e7f072f94628d5f72..e38198e259c03ce9444571d2a3902499492c6e45 100644 (file)
@@ -107,8 +107,10 @@ static struct acpi_device *ipu_bridge_get_ivsc_acpi_dev(struct acpi_device *adev
                for_each_acpi_dev_match(ivsc_adev, acpi_id->id, NULL, -1)
                        /* camera sensor depends on IVSC in DSDT if exist */
                        for_each_acpi_consumer_dev(ivsc_adev, consumer)
-                               if (consumer->handle == handle)
+                               if (consumer->handle == handle) {
+                                       acpi_dev_put(consumer);
                                        return ivsc_adev;
+                               }
        }
 
        return NULL;