Re: [PATCH net-next v1] dev: remove netdev_lock() and netdev_lock_ops() in register_netdevice().

From: Jakub Kicinski
Date: Sat Mar 08 2025 - 17:42:10 EST


On Sat, 8 Mar 2025 13:18:13 -0800 Jakub Kicinski wrote:
> On Sun, 9 Mar 2025 05:37:18 +0900 Kohei Enju wrote:
> > Both netdev_lock() and netdev_lock_ops() are called before
> > list_netdevice() in register_netdevice().
> > No other context can access the struct net_device, so we don't need these
> > locks in this context.
>
> Doesn't sysfs get registered earlier?
> I'm afraid not being able to take the lock from the registration
> path ties our hands too much. Maybe we need to make a more serious
> attempt at letting the caller take the lock?

Looking closer at the report - we are violating the contract that only
drivers which opted in get their ops called under the instance lock.
iavf had a similar problem but it had to opt in. WiFi doesn't.

Maybe we can bring the address semaphore back?
We just need to take it before the ops lock in do_setlink.
A bit ugly but would work?