On Fri, Aug 16, 2019 at 1:45 PM Heikki Krogerus <[email protected]> wrote: > > The primary purpose for this node will be to allow linking > the users of the switch to it. The users will be for example > USB Type-C connectors. By supplying a reference to this > node in the software nodes representing the USB Type-C > controllers or connectors, the drivers for those devices can > access the switch.
> + ret = software_node_register(&intel_xhci_usb_node); > + if (ret) > + return ret; > + > + sw_desc.set = intel_xhci_usb_set_role, > + sw_desc.get = intel_xhci_usb_get_role, > + sw_desc.allow_userspace_control = true, > + sw_desc.fwnode = software_node_fwnode(&intel_xhci_usb_node); > + > data->role_sw = usb_role_switch_register(dev, &sw_desc); > if (IS_ERR(data->role_sw)) > return PTR_ERR(data->role_sw); Sounds to me like more fwnode_handle_put() calls are missed. > @@ -164,6 +173,8 @@ static int intel_xhci_usb_remove(struct platform_device > *pdev) > pm_runtime_disable(&pdev->dev); > > usb_role_switch_unregister(data->role_sw); > + fwnode_handle_put(software_node_fwnode(&intel_xhci_usb_node)); -- With Best Regards, Andy Shevchenko

