On Tue, 20 May 2025 15:05:34 +0800 Jinjian Song wrote: > >Synchronization is about ensuring that the condition validating > >by the if() remains true for as long as necessary. > >You need to wrap the read with READ_ONCE() and write with WRITE_ONCE(). > >The rest if fine because netdev unregister sync against NAPIs in flight. > > > > Hi Jakub, > I think I got your point. > I can use the atomic_t usage in struct t7xx_ccmni to synchronization. > > static void t7xx_ccmni_wwan_dellink(...) { > > [...] > > if (WARN_ON(ctlb->ccmni_inst[if_id] != ccmni)) > return; > > unregister_netdevice(dev); > > //Add here use this variable(ccmnii->usage) to synchronization > > if (atomic_read(&ccmni->usage) == 0) > ccmni == NULL; > > } > > How about this modify? Just use READ_ONCE() / WRITE_ONCE() on the pointer as I suggested.