summaryrefslogtreecommitdiff
path: root/include/linux/sysdev.h
diff options
context:
space:
mode:
authorHarald Welte <laforge@netfilter.org>2005-05-30 15:38:14 -0700
committerChris Wright <chrisw@osdl.org>2005-06-11 19:45:22 -0700
commit839c2379a6ed8ea9dd669d4c3206b85c5dff674e (patch)
treefb7cb1c304f0f5f5d14412ee533ca9a2a30d46f3 /include/linux/sysdev.h
parent43cdfc5ea9a5c7b7904dd040370f6655951412f0 (diff)
[PATCH] Fix deadlock with ip_queue and tcp local input path.
When we have ip_queue being used from LOCAL_IN, then we end up with a situation where the verdicts coming back from userspace traverse the TCP input path from syscall context. While this seems to work most of the time, there's an ugly deadlock: syscall context is interrupted by the timer interrupt. When the timer interrupt leaves, the timer softirq get's scheduled and calls tcp_delack_timer() and alike. They themselves do bh_lock_sock(sk), which is already held from somewhere else -> boom. I've now tested the suggested solution by Patrick McHardy and Herbert Xu to simply use local_bh_{en,dis}able(). Signed-off-by: Harald Welte <laforge@netfilter.org> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Chris Wright <chrisw@osdl.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'include/linux/sysdev.h')
0 files changed, 0 insertions, 0 deletions