On Tue, Mar 26, 2024 at 10:23:25AM +0100, Greg KH wrote: > On Tue, Mar 26, 2024 at 10:22:32AM +0100, Greg KH wrote: > > On Fri, Mar 15, 2024 at 01:06:33PM -0400, Alan Stern wrote: > > > The show and store callback routines for the "disable" sysfs attribute > > > file in port.c acquire the device lock for the port's parent hub > > > device. This can cause problems if another process has locked the hub > > > to remove it or change its configuration: > > > > > > Removing the hub or changing its configuration requires the > > > hub interface to be removed, which requires the port device > > > to be removed, and device_del() waits until all outstanding > > > sysfs attribute callbacks for the ports have returned. The > > > lock can't be released until then. > > > > > > But the disable_show() or disable_store() routine can't return > > > until after it has acquired the lock. > > > > > > The resulting deadlock can be avoided by calling > > > sysfs_break_active_protection(). This will cause the sysfs core not > > > to wait for the attribute's callback routine to return, allowing the > > > removal to proceed. The disadvantage is that after making this call, > > > there is no guarantee that the hub structure won't be deallocated at > > > any moment. To prevent this, we have to acquire a reference to it > > > first by calling hub_get(). > > > > > > Signed-off-by: Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> > > > Cc: <stable@xxxxxxxxxxxxxxx> # Needs the previous patch in this series > > > > What "previous patch"? I don't see this as a series even on > > lore.kernel.org. > > Ah, found it, you sent it only to me for some reason, and not the lists. Oops. My apologies... maybe I'm getting rusty at this. That was definitely a mistake, not intentional. Alan Stern