Decrement the reference count on port while returning out of the loop. Signed-off-by: Himadri Pandya <himadri18.07@xxxxxxxxx> --- net/dsa/dsa2.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/net/dsa/dsa2.c b/net/dsa/dsa2.c index a1917025e155..396e7433dd8f 100644 --- a/net/dsa/dsa2.c +++ b/net/dsa/dsa2.c @@ -624,19 +624,25 @@ static int dsa_switch_parse_ports_of(struct dsa_switch *ds, for_each_available_child_of_node(ports, port) { err = of_property_read_u32(port, "reg", ®); if (err) - return err; + goto put_port; - if (reg >= ds->num_ports) - return -EINVAL; + if (reg >= ds->num_ports) { + err = -EINVAL; + goto put_port; + } dp = &ds->ports[reg]; err = dsa_port_parse_of(dp, port); if (err) - return err; + goto put_port; } return 0; + +put_port: + of_node_put(port); + return err; } static int dsa_switch_parse_member_of(struct dsa_switch *ds, -- 2.17.1 _______________________________________________ devel mailing list devel@xxxxxxxxxxxxxxxxxxxxxx http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel