The notifier must be cleaned up whenever parsing endpoints fails. Do that
to avoid a memory leak in that case.

Signed-off-by: Sakari Ailus <sakari.ai...@linux.intel.com>
---
 drivers/media/pci/intel/ipu3/ipu3-cio2.c | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/drivers/media/pci/intel/ipu3/ipu3-cio2.c 
b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
index c1d133e17e4b..373970f812f4 100644
--- a/drivers/media/pci/intel/ipu3/ipu3-cio2.c
+++ b/drivers/media/pci/intel/ipu3/ipu3-cio2.c
@@ -1504,7 +1504,7 @@ static int cio2_notifier_init(struct cio2_device *cio2)
                sizeof(struct sensor_async_subdev),
                cio2_fwnode_parse);
        if (ret < 0)
-               return ret;
+               goto out;
 
        if (list_empty(&cio2->notifier.asd_list))
                return -ENODEV; /* no endpoint */
@@ -1514,9 +1514,13 @@ static int cio2_notifier_init(struct cio2_device *cio2)
        if (ret) {
                dev_err(&cio2->pci_dev->dev,
                        "failed to register async notifier : %d\n", ret);
-               v4l2_async_notifier_cleanup(&cio2->notifier);
+               goto out;
        }
 
+out:
+       if (ret)
+               v4l2_async_notifier_cleanup(&cio2->notifier);
+
        return ret;
 }
 
-- 
2.11.0

Reply via email to