linux-stable/net/ipv4
Harald Welte 839c2379a6 [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>
2005-06-11 19:45:22 -07:00
..
ipvs 2.6.11 import 2005-05-12 09:59:06 -07:00
netfilter [PATCH] Fix deadlock with ip_queue and tcp local input path. 2005-06-11 19:45:22 -07:00
Kconfig 2.6.11 import 2005-05-12 09:59:06 -07:00
Makefile 2.6.11 import 2005-05-12 09:59:06 -07:00
af_inet.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ah4.c 2.6.11 import 2005-05-12 09:59:06 -07:00
arp.c 2.6.11 import 2005-05-12 09:59:06 -07:00
datagram.c 2.6.11 import 2005-05-12 09:59:06 -07:00
devinet.c 2.6.11 import 2005-05-12 09:59:06 -07:00
esp4.c 2.6.11 import 2005-05-12 09:59:06 -07:00
fib_frontend.c 2.6.11 import 2005-05-12 09:59:06 -07:00
fib_hash.c [PATCH] Fix crash while reading /proc/net/route 2005-05-12 10:00:13 -07:00
fib_lookup.h 2.6.11 import 2005-05-12 09:59:06 -07:00
fib_rules.c 2.6.11 import 2005-05-12 09:59:06 -07:00
fib_semantics.c 2.6.11 import 2005-05-12 09:59:06 -07:00
icmp.c 2.6.11 import 2005-05-12 09:59:06 -07:00
igmp.c 2.6.11 import 2005-05-12 09:59:06 -07:00
inetpeer.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ip_forward.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ip_fragment.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ip_gre.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ip_input.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ip_options.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ip_output.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ip_sockglue.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ipcomp.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ipconfig.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ipip.c 2.6.11 import 2005-05-12 09:59:06 -07:00
ipmr.c 2.6.11 import 2005-05-12 09:59:06 -07:00
proc.c 2.6.11 import 2005-05-12 09:59:06 -07:00
protocol.c 2.6.11 import 2005-05-12 09:59:06 -07:00
raw.c 2.6.11 import 2005-05-12 09:59:06 -07:00
route.c 2.6.11 import 2005-05-12 09:59:06 -07:00
syncookies.c 2.6.11 import 2005-05-12 09:59:06 -07:00
sysctl_net_ipv4.c 2.6.11 import 2005-05-12 09:59:06 -07:00
tcp.c 2.6.11 import 2005-05-12 09:59:06 -07:00
tcp_diag.c 2.6.11 import 2005-05-12 09:59:06 -07:00
tcp_input.c [PATCH] Fix BIC congestion avoidance algorithm error 2005-05-12 10:00:20 -07:00
tcp_ipv4.c 2.6.11 import 2005-05-12 09:59:06 -07:00
tcp_minisocks.c 2.6.11 import 2005-05-12 09:59:06 -07:00
tcp_output.c 2.6.11 import 2005-05-12 09:59:06 -07:00
tcp_timer.c [PATCH] Put back tcp_timer_bug_msg[] symbol export. 2005-05-12 10:00:09 -07:00
udp.c 2.6.11 import 2005-05-12 09:59:06 -07:00
utils.c 2.6.11 import 2005-05-12 09:59:06 -07:00
xfrm4_input.c 2.6.11 import 2005-05-12 09:59:06 -07:00
xfrm4_output.c [PATCH] Do not hold state lock while checking size 2005-05-12 10:00:19 -07:00
xfrm4_policy.c 2.6.11 import 2005-05-12 09:59:06 -07:00
xfrm4_state.c 2.6.11 import 2005-05-12 09:59:06 -07:00
xfrm4_tunnel.c 2.6.11 import 2005-05-12 09:59:06 -07:00