iio: adc: berlin2-adc: Add missing of_node_put() in error path
authorXiongfeng Wang <wangxiongfeng2@huawei.com>
Tue, 29 Nov 2022 02:03:16 +0000 (10:03 +0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 9 Feb 2023 10:26:42 +0000 (11:26 +0100)
commit cbd3a0153cd18a2cbef6bf3cf31bb406c3fc9f55 upstream.

of_get_parent() will return a device_node pointer with refcount
incremented. We need to use of_node_put() on it when done. Add the
missing of_node_put() in the error path of berlin2_adc_probe();

Fixes: 70f1937911ca ("iio: adc: add support for Berlin")
Signed-off-by: Xiongfeng Wang <wangxiongfeng2@huawei.com>
Link: https://lore.kernel.org/r/20221129020316.191731-1-wangxiongfeng2@huawei.com
Cc: <Stable@vger.kernel.org>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/iio/adc/berlin2-adc.c

index 8b04b95b7b7ae033e8e3f1be1350b4dd4f793b4a..fa2c87946e16fb07b5058cece55586efe9ca9c33 100644 (file)
@@ -289,8 +289,10 @@ static int berlin2_adc_probe(struct platform_device *pdev)
        int ret;
 
        indio_dev = devm_iio_device_alloc(&pdev->dev, sizeof(*priv));
-       if (!indio_dev)
+       if (!indio_dev) {
+               of_node_put(parent_np);
                return -ENOMEM;
+       }
 
        priv = iio_priv(indio_dev);
        platform_set_drvdata(pdev, indio_dev);