On Mon, Oct 21, 2024 at 04:06:30PM +0200, Javier Carrasco wrote: > On 21/10/2024 15:42, Heikki Krogerus wrote: > > Hi, > > > > On Mon, Oct 21, 2024 at 03:55:43PM +0300, Heikki Krogerus wrote: > >> On Sat, Oct 19, 2024 at 10:40:19PM +0200, Javier Carrasco wrote: > >>> The 'altmodes_node' fwnode_handle is never released after it is no > >>> longer required, which leaks the resource. > >>> > >>> Add the required call to fwnode_handle_put() when 'altmodes_node' is no > >>> longer required. > >>> > >>> Cc: stable@xxxxxxxxxxxxxxx > >>> Fixes: 7b458a4c5d73 ("usb: typec: Add typec_port_register_altmodes()") > >>> Signed-off-by: Javier Carrasco <javier.carrasco.cruz@xxxxxxxxx> > >> > >> Reviewed-by: Heikki Krogerus <heikki.krogerus@xxxxxxxxxxxxxxx> > >> > >>> --- > >>> drivers/usb/typec/class.c | 1 + > >>> 1 file changed, 1 insertion(+) > >>> > >>> diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c > >>> index d61b4c74648d..1eb240604cf6 100644 > >>> --- a/drivers/usb/typec/class.c > >>> +++ b/drivers/usb/typec/class.c > >>> @@ -2341,6 +2341,7 @@ void typec_port_register_altmodes(struct typec_port *port, > >>> altmodes[index] = alt; > >>> index++; > >>> } > >>> + fwnode_handle_put(altmodes_node); > >>> } > >>> EXPORT_SYMBOL_GPL(typec_port_register_altmodes); > > > > Sorry to go back to this, but I guess we should actually use those > > scope based helpers with fwnodes in this case. So instead of a > > dedicated fwnode_handle_put() call like that, just introduce > > altmodes_node like this: > > > > ... > > struct fwnode_handle *altmodes_node __free(fwnode_handle) = > > device_get_named_child_node(&port->dev, "altmodes"); > > > > if (IS_ERR(altmodes_node)) > > return; > > > > fwnode_for_each_child_node(altmodes_node, child) { > > ... > > > > thanks, > > > > That would have to be a second patch, because it does not apply to all > affected stable kernels. I can send it separately, though. Great, thanks! -- heikki