diff options
| author | 2007-10-29 21:28:47 -0700 | |
|---|---|---|
| committer | 2007-10-29 22:37:28 -0700 | |
| commit | 0a7606c121d58c1831805262c5b764e181429e7d (patch) | |
| tree | 4ba68e147c569c83dfedc3b45edf88ce21cde001 /net/socket.c | |
| parent | [TCP] MD5: Remove some more unnecessary casting. (diff) | |
| download | wireguard-linux-0a7606c121d58c1831805262c5b764e181429e7d.tar.xz wireguard-linux-0a7606c121d58c1831805262c5b764e181429e7d.zip | |
[NET]: Fix race between poll_napi() and net_rx_action()
netpoll_poll_lock() synchronizes the ->poll() invocation
code paths, but once we have the lock we have to make
sure that NAPI_STATE_SCHED is still set. Otherwise we
get:
cpu 0 cpu 1
net_rx_action() poll_napi()
netpoll_poll_lock() ... spin on ->poll_lock
->poll()
netif_rx_complete
netpoll_poll_unlock() acquire ->poll_lock()
->poll()
netif_rx_complete()
CRASH
Based upon a bug report from Tina Yang.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/socket.c')
0 files changed, 0 insertions, 0 deletions
