linux/net/dccp
Eric Dumazet 918eb39962 net: add missing bh_unlock_sock() calls
Simon Kirby reported lockdep warnings and following messages :

[104661.897577] huh, entered softirq 3 NET_RX ffffffff81613740
preempt_count 00000101, exited with 00000102?

[104661.923653] huh, entered softirq 3 NET_RX ffffffff81613740
preempt_count 00000101, exited with 00000102?

Problem comes from commit 0e734419
(ipv4: Use inet_csk_route_child_sock() in DCCP and TCP.)

If inet_csk_route_child_sock() returns NULL, we should release socket
lock before freeing it.

Another lock imbalance exists if __inet_inherit_port() returns an error
since commit 093d282321 ( tproxy: fix hash locking issue when using
port redirection in __inet_inherit_port()) a backport is also needed for
>= 2.6.37 kernels.

Reported-by: Simon Kirby <sim@hostway.ca>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Tested-by: Eric Dumazet <eric.dumazet@gmail.com>
CC: Balazs Scheidler <bazsi@balabit.hu>
CC: KOVACS Krisztian <hidden@balabit.hu>
Reviewed-by: Thomas Gleixner <tglx@linutronix.de>
Tested-by: Simon Kirby <sim@hostway.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
2011-11-03 18:06:18 -04:00
..
ccids dccp ccid-2: check Ack Ratio when reducing cwnd 2011-08-01 07:52:36 -06:00
ackvec.c dccp ccid-2: whitespace fix-up 2010-11-18 09:37:07 -08:00
ackvec.h dccp ccid-2: Separate option parsing from CCID processing 2010-11-15 07:12:01 +01:00
ccid.c dccp: cosmetics of info message 2011-07-04 12:37:13 -06:00
ccid.h dccp: Return-value convention of hc_tx_send_packet() 2010-10-28 10:27:00 -07:00
dccp.h dccp: support for the exchange of NN options in established state 1/2 2011-08-01 07:52:34 -06:00
diag.c dccp_diag: LISTEN sockets don't have CCIDs 2008-12-17 16:08:01 -08:00
feat.c dccp: send Confirm options only once 2011-08-01 07:52:35 -06:00
feat.h dccp: support for the exchange of NN options in established state 1/2 2011-08-01 07:52:34 -06:00
input.c dccp: Clean up slow-path input processing 2011-07-04 12:36:33 -06:00
ipv4.c net: add missing bh_unlock_sock() calls 2011-11-03 18:06:18 -04:00
ipv6.c ipv6: tcp: fix TCLASS value in ACK messages sent from TIME_WAIT 2011-10-27 00:44:35 -04:00
ipv6.h Remove obsolete #include <linux/config.h> 2006-06-30 19:25:36 +02:00
Kconfig Docs/Kconfig: Update: osdl.org -> linuxfoundation.org 2010-11-15 23:50:13 +01:00
Makefile dccp: Policy-based packet dequeueing infrastructure 2010-12-07 13:47:12 +01:00
minisocks.c dccp: fix the adjustments to AWL and SWL 2010-10-12 06:57:40 +02:00
options.c dccp: handle invalid feature options length 2011-05-06 13:05:50 -07:00
output.c dccp: combine the functionality of enqeueing and cloning 2011-07-04 12:36:47 -06:00
probe.c llseek: automatically add .llseek fop 2010-10-15 15:53:27 +02:00
proto.c dccp ccid-2: use feature-negotiation to report Ack Ratio changes 2011-08-01 07:52:35 -06:00
qpolicy.c dccp qpolicy: Parameter checking of cmsg qpolicy parameters 2010-12-07 13:47:12 +01:00
sysctl.c dccp: make upper bound for seq_window consistent on 32/64 bit 2011-01-07 12:22:44 +01:00
timer.c dccp: Refine the wait-for-ccid mechanism 2010-10-28 10:27:01 -07:00