This is an automatic generated email to let you know that the following patch 
were queued:

Subject: media: ipu3-cio2: Fix reference counting when looping over ACPI devices
Author:  Andy Shevchenko <[email protected]>
Date:    Sun Apr 4 20:14:09 2021 +0200

When we continue, due to device is disabled, loop we have to drop
reference count. When we have an array full of devices we have to also
drop the reference count. Note, in this case the
cio2_bridge_unregister_sensors() is called by the caller.

Fixes: 803abec64ef9 ("media: ipu3-cio2: Add cio2-bridge to ipu3-cio2 driver")
Signed-off-by: Andy Shevchenko <[email protected]>
Reviewed-by: Daniel Scally <[email protected]>
Signed-off-by: Sakari Ailus <[email protected]>
Signed-off-by: Mauro Carvalho Chehab <[email protected]>

 drivers/media/pci/intel/ipu3/cio2-bridge.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

---

diff --git a/drivers/media/pci/intel/ipu3/cio2-bridge.c 
b/drivers/media/pci/intel/ipu3/cio2-bridge.c
index e8511787c1e4..4657e99df033 100644
--- a/drivers/media/pci/intel/ipu3/cio2-bridge.c
+++ b/drivers/media/pci/intel/ipu3/cio2-bridge.c
@@ -173,14 +173,15 @@ static int cio2_bridge_connect_sensor(const struct 
cio2_sensor_config *cfg,
        int ret;
 
        for_each_acpi_dev_match(adev, cfg->hid, NULL, -1) {
-               if (!adev->status.enabled)
+               if (!adev->status.enabled) {
+                       acpi_dev_put(adev);
                        continue;
+               }
 
                if (bridge->n_sensors >= CIO2_NUM_PORTS) {
+                       acpi_dev_put(adev);
                        dev_err(&cio2->dev, "Exceeded available CIO2 ports\n");
-                       cio2_bridge_unregister_sensors(bridge);
-                       ret = -EINVAL;
-                       goto err_out;
+                       return -EINVAL;
                }
 
                sensor = &bridge->sensors[bridge->n_sensors];
@@ -228,7 +229,6 @@ err_free_swnodes:
        software_node_unregister_nodes(sensor->swnodes);
 err_put_adev:
        acpi_dev_put(sensor->adev);
-err_out:
        return ret;
 }
 

_______________________________________________
linuxtv-commits mailing list
[email protected]
https://www.linuxtv.org/cgi-bin/mailman/listinfo/linuxtv-commits

Reply via email to