From: Harald Welte Date: Mon, 30 May 2005 22:35:26 +0000 (-0700) Subject: [NETFILTER]: Fix deadlock with ip_queue and tcp local input path. X-Git-Tag: v2.6.12-rc6~33^2~5 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9bb7bc942d3da606f184ac6a4dfc7e4d470c831b;p=pandora-kernel.git [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 Signed-off-by: David S. Miller --- Reading git-diff-tree failed