On Tue, Aug 20, 2024 at 10:01:07AM -0700, Stephen Boyd wrote: > Quoting Andy Shevchenko (2024-08-20 03:16:09) > > On Mon, Aug 19, 2024 at 03:38:19PM -0700, Stephen Boyd wrote: > > > + ptr = devres_alloc(devm_typec_switch_unregister, sizeof(*ptr), GFP_KERNEL); > > > + if (!ptr) > > > + return ERR_PTR(-ENOMEM); > > > + > > > + switch_dev = typec_switch_register(parent ,desc); (Side note: wrong location of the white space) > > > + if (!IS_ERR(switch_dev)) { (Side note: positive conditional is okay) > > > + *ptr = switch_dev; > > > + devres_add(parent, ptr); > > > + } else { > > > + devres_free(ptr); > > > + } > > > > devm_add_action_or_reset() ? > > No. We don't want to call the 'action' devm_typec_switch_unregister() > when it fails because that would unregister a switch that has never been > registered. Hmm... With devm_add_action_or_reset() we first do things and then try to add them to the managed resources. In that case it won't be like you described. What do I miss? -- With Best Regards, Andy Shevchenko