Commit 646d90c3 authored by Nishka Dasgupta's avatar Nishka Dasgupta Committed by Linus Walleij
Browse files

pinctrl: freescale: mxs: Add of_node_put() before return



Each iteration of for_each_child_of_node puts the previous node, but in
the case of a return from the middle of the loop, there is no put, thus
causing a memory leak. Hence add an of_node_put before the return in
three places.
Issue found with Coccinelle.

Signed-off-by: default avatarNishka Dasgupta <nishkadg.linux@gmail.com>
Link: https://lore.kernel.org/r/20190804160420.5309-1-nishkadg.linux@gmail.com


Signed-off-by: default avatarLinus Walleij <linus.walleij@linaro.org>
parent f4524447
Loading
Loading
Loading
Loading
+9 −3
Original line number Diff line number Diff line
@@ -488,8 +488,10 @@ static int mxs_pinctrl_probe_dt(struct platform_device *pdev,
		if (of_property_read_u32(child, "reg", &val)) {
			ret = mxs_pinctrl_parse_group(pdev, child,
						      idxg++, NULL);
			if (ret)
			if (ret) {
				of_node_put(child);
				return ret;
			}
			continue;
		}

@@ -499,16 +501,20 @@ static int mxs_pinctrl_probe_dt(struct platform_device *pdev,
						 f->ngroups,
						 sizeof(*f->groups),
						 GFP_KERNEL);
			if (!f->groups)
			if (!f->groups) {
				of_node_put(child);
				return -ENOMEM;
			}
			fn = child->name;
			i = 0;
		}
		ret = mxs_pinctrl_parse_group(pdev, child, idxg++,
					      &f->groups[i++]);
		if (ret)
		if (ret) {
			of_node_put(child);
			return ret;
		}
	}

	return 0;
}