summaryrefslogtreecommitdiffstats
path: root/net/ipv4/udp.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@netfilter.org>2005-05-30 15:35:26 -0700
committerDavid S. Miller <davem@davemloft.net>2005-05-30 15:35:26 -0700
commit9bb7bc942d3da606f184ac6a4dfc7e4d470c831b (patch)
treedc310200df5988d4c71c346baad6a923a4bdeb9d /net/ipv4/udp.c
parent5e485b7975472ba4a408523deb6541e70c451842 (diff)
downloadop-kernel-dev-9bb7bc942d3da606f184ac6a4dfc7e4d470c831b.zip
op-kernel-dev-9bb7bc942d3da606f184ac6a4dfc7e4d470c831b.tar.gz
[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>
Diffstat (limited to 'net/ipv4/udp.c')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud