Re: Locking Between User Context and Soft IRQs in 2.4.0

Andi Kleen
2000-11-04T10:19:39Z

On Sat, Nov 04, 2000 at 04:45:33AM -0500, Jeff Garzik wrote:
>
> > * What about dev->open and dev->stop ?
>
> Sleep all you want, we'll leave the light on for ya.

... but make sure you have no module unload races (or at least not too
huge holes, some are probably unavoidable with the current network
driver interface, e.g. without moving module count management a bit up).
This means you should do MOD_INC_USE_COUNT very early at least to
minimize the windows (and DEC_USE_COUNT very late)

> dev->do_ioctl:
> Locking: Inside rtnl_lock() semaphore.
> Sleeping: OK

Just make sure you lock against your interrupt and xmit threads.

> Locking: Inside dev->xmit_lock spinlock.
> Sleeping: NO[1]
>
>
> NOTE [1]: On principle, you should not sleep when a spinlock is held.
> However, since this spinlock is per-net-device, we only block ourselves
> if we sleep, so the effect is mitigated.

Sounds like dangerous advice.

-Andi