Hi! 2022-07-21 at 10:12, Liang He wrote: > In i2c_mux_probe(), we should call of_node_put() when breaking out > of for_each_child_of_node() which will automatically increase and > decrease the refcount. > > Fixes: ac8498f0ce53 ("i2c: i2c-mux-gpmux: new driver") > Signed-off-by: Liang He <windhl@xxxxxxx> > --- > drivers/i2c/muxes/i2c-mux-gpmux.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/i2c/muxes/i2c-mux-gpmux.c b/drivers/i2c/muxes/i2c-mux-gpmux.c > index d3acd8d66c32..30ab2fe88c8d 100644 > --- a/drivers/i2c/muxes/i2c-mux-gpmux.c > +++ b/drivers/i2c/muxes/i2c-mux-gpmux.c > @@ -115,6 +115,7 @@ static int i2c_mux_probe(struct platform_device *pdev) > if (ret < 0) { > dev_err(dev, "no reg property for node '%pOFn'\n", > child); > + of_node_put(child); > goto err_children; > } > Right, but this is obviously incomplete. What about the other two branches in that loop that breaks out? Much better to have the missing of_node_put(child) statement below the err_children: label (i.e. before i2c_mux_del_adapters) so that it is not forgotten in any code flow. child cannot be uninitialized at that point and if it happens to be NULL, of_node_put will be a nop. So that's safe. Cheers, Peter