UPSTREAM: extcon: add missing of_node_put after calling of_parse_phandle
authorPeter Chen <peter.chen@nxp.com>
Fri, 1 Jul 2016 09:41:55 +0000 (18:41 +0900)
committerHuang, Tao <huangtao@rock-chips.com>
Wed, 3 Aug 2016 01:42:39 +0000 (09:42 +0800)
of_node_put needs to be called when the device node which is got
from of_parse_phandle has finished using.

Change-Id: I96ad96b55e6f6c5e5335d12aeb5963c1b06451b3
Signed-off-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Chris Zhong <zyw@rock-chips.com>
(cherry picked from commit 5d5c4c139dd766dff903ba35d72fb3ec90022e91)

drivers/extcon/extcon.c

index 3b1ad4ce098e252c76994841a3f5ddebb367af47..7009687c692bb22c1263f095a789cdf892929810 100644 (file)
@@ -861,10 +861,12 @@ struct extcon_dev *extcon_get_edev_by_phandle(struct device *dev, int index)
        list_for_each_entry(edev, &extcon_dev_list, entry) {
                if (edev->dev.parent && edev->dev.parent->of_node == node) {
                        mutex_unlock(&extcon_dev_list_lock);
        list_for_each_entry(edev, &extcon_dev_list, entry) {
                if (edev->dev.parent && edev->dev.parent->of_node == node) {
                        mutex_unlock(&extcon_dev_list_lock);
+                       of_node_put(node);
                        return edev;
                }
        }
        mutex_unlock(&extcon_dev_list_lock);
                        return edev;
                }
        }
        mutex_unlock(&extcon_dev_list_lock);
+       of_node_put(node);
 
        return ERR_PTR(-EPROBE_DEFER);
 }
 
        return ERR_PTR(-EPROBE_DEFER);
 }