linux/net/ipv4/netfilter
Harald Welte 9bb7bc942d [NETFILTER]: 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>
2005-05-30 15:35:26 -07:00
..
arp_tables.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
arpt_mangle.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
arptable_filter.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_conntrack_amanda.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_conntrack_core.c [NETFILTER]: Do not be clever about SKB ownership in ip_ct_gather_frags(). 2005-05-19 12:36:33 -07:00
ip_conntrack_ftp.c [NETFILTER]: Fix truncated sequence numbers in FTP helper 2005-04-25 12:00:04 -07:00
ip_conntrack_irc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_conntrack_proto_generic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_conntrack_proto_icmp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_conntrack_proto_sctp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_conntrack_proto_tcp.c [NETFILTER]: Don't checksum CHECKSUM_UNNECESSARY skbs in TCP connection tracking 2005-05-03 14:23:50 -07:00
ip_conntrack_proto_udp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_conntrack_standalone.c [NETFILTER]: Drop conntrack reference when packet leaves IP 2005-04-25 12:01:07 -07:00
ip_conntrack_tftp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_amanda.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_core.c [NETFILTER]: Fix NAT sequence number adjustment 2005-04-24 18:41:38 -07:00
ip_nat_ftp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_helper.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_irc.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_proto_icmp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_proto_tcp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_proto_udp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_proto_unknown.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_rule.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_snmp_basic.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_nat_standalone.c [NETFILTER]: Fix NAT sequence number adjustment 2005-04-24 18:41:38 -07:00
ip_nat_tftp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ip_queue.c [NETFILTER]: Fix deadlock with ip_queue and tcp local input path. 2005-05-30 15:35:26 -07:00
ip_tables.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_addrtype.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_ah.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_CLASSIFY.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_CLUSTERIP.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_comment.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_CONNMARK.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_connmark.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_conntrack.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_DSCP.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_dscp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_ECN.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_ecn.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_esp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_hashlimit.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_helper.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_iprange.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_length.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_limit.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_LOG.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_mac.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_mark.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_MARK.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_MASQUERADE.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_multiport.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_NETMAP.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_NOTRACK.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_owner.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_physdev.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_pkttype.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_realm.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_recent.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_REDIRECT.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_REJECT.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_SAME.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_sctp.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_state.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_TCPMSS.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_tcpmss.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_TOS.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_tos.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_ttl.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
ipt_ULOG.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iptable_filter.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iptable_mangle.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
iptable_raw.c [NETFILTER]: Missing owner-field initialization in iptable_raw 2005-05-03 14:23:13 -07:00
Kconfig Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00