On Sun, May 19, 2024 at 10:38:25AM GMT, Markus Elfring wrote: > [Some people who received this message don't often get email from markus.elfring@xxxxxx. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ] > > … > > +++ b/drivers/a2b/a2b.c > > @@ -0,0 +1,1252 @@ > … > > +static int a2b_bus_of_add_node(struct a2b_bus *bus, struct device_node *np, > > + unsigned int addr) > > +{ > … > > + node = kzalloc(sizeof(*node), GFP_KERNEL); > > + if (IS_ERR(node)) > > + return -ENOMEM; > > Please improve the distinction for checks according to the handling of error/null pointers. Right, I think it returns NULL on error. Thanks! > > > … > > + ret = device_register(&node->dev); > > + if (ret) > > + goto err_put_device; > > + > > + return 0; > > + > > +err_put_device: > > + put_device(&node->dev); > > + > > + return ret; > > +} > > Did you overlook to release the node memory after a failed function call > at such a source code place? I think this is correct, per the comment to device_register(): | * NOTE: _Never_ directly free @dev after calling this function, even | * if it returned an error! Always use put_device() to give up the | * reference initialized in this function instead. or?