atl1c: Fix work event interrupt/task races
authorTim Gardner <timg@tpi.com>
Wed, 20 Apr 2011 09:00:49 +0000 (09:00 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 22 Apr 2011 04:04:32 +0000 (21:04 -0700)
commitcb771838715b1c470bc5735bdae709b33b18e0ad
tree9de4b9a992aa2a521bfba73b941310dd8e09ea60
parente74fbd030223e29d269f4be17e3dce6de38f4c28
atl1c: Fix work event interrupt/task races

The mechanism used to initiate work events from the interrupt
handler has a classic read/modify/write race between the interrupt
handler that sets the condition, and the worker task that reads and
clears the condition. Close these races by using atomic
bit fields.

Cc: stable@kernel.org
Cc: Jie Yang <jie.yang@atheros.com>
Signed-off-by: Tim Gardner <tim.gardner@canonical.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/atl1c/atl1c.h
drivers/net/atl1c/atl1c_main.c