Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

pinctrl: equilibrium: add missing of_node_put

Fix OF node leaks by calling of_node_put in
for_each_child_of_node when the cycle returns.

Generated by: scripts/coccinelle/iterators/for_each_child.cocci

Signed-off-by: Junlin Yang <yangjunlin@yulong.com>
Link: https://lore.kernel.org/r/20210216080231.1303-1-angkery@163.com
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>

authored by

Junlin Yang and committed by
Linus Walleij
ba434267 a38fd874

+13 -3
+13 -3
drivers/pinctrl/pinctrl-equilibrium.c
··· 628 628 break; 629 629 630 630 default: 631 - return -EINVAL; 631 + of_node_put(np); 632 + return -EINVAL; 632 633 } 633 634 i++; 634 635 } ··· 708 707 group.num_pins = of_property_count_u32_elems(np, "pins"); 709 708 if (group.num_pins < 0) { 710 709 dev_err(dev, "No pins in the group: %s\n", prop->name); 710 + of_node_put(np); 711 711 return -EINVAL; 712 712 } 713 713 group.name = prop->value; 714 714 group.pins = devm_kcalloc(dev, group.num_pins, 715 715 sizeof(*(group.pins)), GFP_KERNEL); 716 - if (!group.pins) 716 + if (!group.pins) { 717 + of_node_put(np); 717 718 return -ENOMEM; 719 + } 718 720 719 721 pinmux = devm_kcalloc(dev, group.num_pins, sizeof(*pinmux), 720 722 GFP_KERNEL); 721 - if (!pinmux) 723 + if (!pinmux) { 724 + of_node_put(np); 722 725 return -ENOMEM; 726 + } 723 727 724 728 for (j = 0; j < group.num_pins; j++) { 725 729 if (of_property_read_u32_index(np, "pins", j, &pin_id)) { 726 730 dev_err(dev, "Group %s: Read intel pins id failed\n", 727 731 group.name); 732 + of_node_put(np); 728 733 return -EINVAL; 729 734 } 730 735 if (pin_id >= drvdata->pctl_desc.npins) { 731 736 dev_err(dev, "Group %s: Invalid pin ID, idx: %d, pin %u\n", 732 737 group.name, j, pin_id); 738 + of_node_put(np); 733 739 return -EINVAL; 734 740 } 735 741 group.pins[j] = pin_id; 736 742 if (of_property_read_u32_index(np, "pinmux", j, &pinmux_id)) { 737 743 dev_err(dev, "Group %s: Read intel pinmux id failed\n", 738 744 group.name); 745 + of_node_put(np); 739 746 return -EINVAL; 740 747 } 741 748 pinmux[j] = pinmux_id; ··· 754 745 pinmux); 755 746 if (err < 0) { 756 747 dev_err(dev, "Failed to register group %s\n", group.name); 748 + of_node_put(np); 757 749 return err; 758 750 } 759 751 memset(&group, 0, sizeof(group));