Re: [syzbot] [usb?] INFO: task hung in i2c_tiny_usb_disconnect

From: Oliver Neukum

Date: Tue Jan 13 2026 - 04:49:18 EST


On 13.01.26 08:52, weipeng wrote:

@@ -287,9 +311,9 @@ static void i2c_tiny_usb_disconnect(struct usb_interface *interface)
{
struct i2c_tiny_usb *dev = usb_get_intfdata(interface);

- i2c_del_adapter(&dev->adapter);
usb_set_intfdata(interface, NULL);
- i2c_tiny_usb_free(dev);
+ WRITE_ONCE(dev->disconnected, true);
+ queue_work(system_long_wq, &dev->release_work);

Hi,

I am sorry, but this fix is looking a bit fishy.
For once what prevents the driver from being unloaded
with a work item queued after disconnect() has run?
How do you make sure that the disconnected flag is ever read?

Regards
Oliver