At 2022-07-21 17:20:56, "Peter Rosin" <peda@xxxxxxxxxx> wrote: >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 Thanks, Peter, I have forgotten add of_node_put() in other fail path. But your advice is better, I will send a new version soon! Thanks again, Liang