FAILED: patch "[PATCH] pinctrl: samsung: Fix device node refcount leaks in S3C64xx" failed to apply to 4.4-stable tree
Subsystems (4)
[email protected]
maintainerThe patch below does not apply to the 4.4-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 7f028caadf6c37580d0f59c6c094ed09afc04062 Mon Sep 17 00:00:00 2001
From: Krzysztof Kozlowski <[email protected]>
Date: Mon, 5 Aug 2019 18:27:09 +0200
Subject: [PATCH] pinctrl: samsung: Fix device node refcount leaks in S3C64xx
wakeup controller init
In s3c64xx_eint_eint0_init() the for_each_child_of_node() loop is used with a break to find a matching child node. Although each iteration of for_each_child_of_node puts the previous node, but early exit from loop misses it. This leads to leak of device node.
drivers/pinctrl/samsung/pinctrl-s3c64xx.c +5 -1
@@ -704,8 +704,10 @@ static int s3c64xx_eint_eint0_init(struct samsung_pinctrl_drv_data *d)return -ENODEV ; data =devm_kzalloc (dev,sizeof (*data),GFP_KERNEL ); -if (!data) +if (!data) { +of_node_put (eint0_np);return -ENOMEM ; + } data->drvdata = d;for (i =0 ; i <NUM_EINT0_IRQ ; ++i) {
@@ -714,6 +716,7 @@ static int s3c64xx_eint_eint0_init(struct samsung_pinctrl_drv_data *d) irq =irq_of_parse_and_map (eint0_np, i);if (!irq) {dev_err (dev,"failed to get wakeup EINT IRQ %d\n" , i); +of_node_put (eint0_np);return -ENXIO ; }
@@ -721,6 +724,7 @@ static int s3c64xx_eint_eint0_init(struct samsung_pinctrl_drv_data *d) s3c64xx_eint0_handlers[i], data); } +of_node_put (eint0_np); bank = d->pin_banks;for (i =0 ; i < d->nr_banks; ++i, ++bank) {