Subject: Re: [PATCH] net: usbnet: Avoid potential RCU stall on LINK_CHANGE event

From: Jakub Kicinski <[email-masked]>
Date: Tue, 15 Jul 2025 06:54:03 -0700

On Tue, 15 Jul 2025 07:15:51 +0000 John Ernberg wrote:
> > I'm worried that this is still racy.
> > Since usbnet_bh checks if carrier is ok and __handle_link_change()
> > checks the opposite something must be out of sync if both run.
> > Most likely something restored the carrier while we're still handling
> > the previous carrier loss.  
> 
> There could definitely be other factors, I'll try to dig some in 
> cdc_ether and see if something there could be causing problems for the 
> usbnet core.
> I honestly kinda stopped digging when I found unlink_urbs() being 
> wrapped with a pause/unpause at another place tied to a commit seeing a 
> similar issue.

Looking at cdc_ether:

static void usbnet_cdc_zte_status(struct usbnet *dev, struct urb *urb)
[...]
        if (event->wValue &&                                                    
            netif_carrier_ok(dev->net))                                         
                netif_carrier_off(dev->net);  

This looks sus. Is the Gemalto Cinterion PLS83-W ZTE based?