1 From 7580f9f7b871328ae3eeef8b111166bb28233081 Mon Sep 17 00:00:00 2001
2 From: Thomas Gleixner <tglx@linutronix.de>
3 Date: Tue, 28 Jun 2011 10:59:58 +0200
4 Subject: [PATCH 019/365] net-flip-lock-dep-thingy.patch
6 =======================================================
7 [ INFO: possible circular locking dependency detected ]
9 -------------------------------------------------------
10 ip/1104 is trying to acquire lock:
11 (local_softirq_lock){+.+...}, at: [<ffffffff81056d12>] __local_lock+0x25/0x68
13 but task is already holding lock:
14 (sk_lock-AF_INET){+.+...}, at: [<ffffffff81433308>] lock_sock+0x10/0x12
16 which lock already depends on the new lock.
19 the existing dependency chain (in reverse order) is:
21 -> #1 (sk_lock-AF_INET){+.+...}:
22 [<ffffffff810836e5>] lock_acquire+0x103/0x12e
23 [<ffffffff813e2781>] lock_sock_nested+0x82/0x92
24 [<ffffffff81433308>] lock_sock+0x10/0x12
25 [<ffffffff81433afa>] tcp_close+0x1b/0x355
26 [<ffffffff81453c99>] inet_release+0xc3/0xcd
27 [<ffffffff813dff3f>] sock_release+0x1f/0x74
28 [<ffffffff813dffbb>] sock_close+0x27/0x2b
29 [<ffffffff81129c63>] fput+0x11d/0x1e3
30 [<ffffffff81126577>] filp_close+0x70/0x7b
31 [<ffffffff8112667a>] sys_close+0xf8/0x13d
32 [<ffffffff814ae882>] system_call_fastpath+0x16/0x1b
34 -> #0 (local_softirq_lock){+.+...}:
35 [<ffffffff81082ecc>] __lock_acquire+0xacc/0xdc8
36 [<ffffffff810836e5>] lock_acquire+0x103/0x12e
37 [<ffffffff814a7e40>] _raw_spin_lock+0x3b/0x4a
38 [<ffffffff81056d12>] __local_lock+0x25/0x68
39 [<ffffffff81056d8b>] local_bh_disable+0x36/0x3b
40 [<ffffffff814a7fc4>] _raw_write_lock_bh+0x16/0x4f
41 [<ffffffff81433c38>] tcp_close+0x159/0x355
42 [<ffffffff81453c99>] inet_release+0xc3/0xcd
43 [<ffffffff813dff3f>] sock_release+0x1f/0x74
44 [<ffffffff813dffbb>] sock_close+0x27/0x2b
45 [<ffffffff81129c63>] fput+0x11d/0x1e3
46 [<ffffffff81126577>] filp_close+0x70/0x7b
47 [<ffffffff8112667a>] sys_close+0xf8/0x13d
48 [<ffffffff814ae882>] system_call_fastpath+0x16/0x1b
50 other info that might help us debug this:
52 Possible unsafe locking scenario:
56 lock(sk_lock-AF_INET);
57 lock(local_softirq_lock);
58 lock(sk_lock-AF_INET);
59 lock(local_softirq_lock);
63 1 lock held by ip/1104:
64 #0: (sk_lock-AF_INET){+.+...}, at: [<ffffffff81433308>] lock_sock+0x10/0x12
67 Pid: 1104, comm: ip Not tainted 3.0.0-rc3+ #26
69 [<ffffffff81081649>] print_circular_bug+0x1f8/0x209
70 [<ffffffff81082ecc>] __lock_acquire+0xacc/0xdc8
71 [<ffffffff81056d12>] ? __local_lock+0x25/0x68
72 [<ffffffff810836e5>] lock_acquire+0x103/0x12e
73 [<ffffffff81056d12>] ? __local_lock+0x25/0x68
74 [<ffffffff81046c75>] ? get_parent_ip+0x11/0x41
75 [<ffffffff814a7e40>] _raw_spin_lock+0x3b/0x4a
76 [<ffffffff81056d12>] ? __local_lock+0x25/0x68
77 [<ffffffff81046c8c>] ? get_parent_ip+0x28/0x41
78 [<ffffffff81056d12>] __local_lock+0x25/0x68
79 [<ffffffff81056d8b>] local_bh_disable+0x36/0x3b
80 [<ffffffff81433308>] ? lock_sock+0x10/0x12
81 [<ffffffff814a7fc4>] _raw_write_lock_bh+0x16/0x4f
82 [<ffffffff81433c38>] tcp_close+0x159/0x355
83 [<ffffffff81453c99>] inet_release+0xc3/0xcd
84 [<ffffffff813dff3f>] sock_release+0x1f/0x74
85 [<ffffffff813dffbb>] sock_close+0x27/0x2b
86 [<ffffffff81129c63>] fput+0x11d/0x1e3
87 [<ffffffff81126577>] filp_close+0x70/0x7b
88 [<ffffffff8112667a>] sys_close+0xf8/0x13d
89 [<ffffffff814ae882>] system_call_fastpath+0x16/0x1b
92 Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
94 net/core/sock.c | 3 +--
95 1 file changed, 1 insertion(+), 2 deletions(-)
97 diff --git a/net/core/sock.c b/net/core/sock.c
98 index f4c0917..03ba648 100644
100 +++ b/net/core/sock.c
101 @@ -2436,12 +2436,11 @@ void lock_sock_nested(struct sock *sk, int subclass)
102 if (sk->sk_lock.owned)
104 sk->sk_lock.owned = 1;
105 - spin_unlock(&sk->sk_lock.slock);
106 + spin_unlock_bh(&sk->sk_lock.slock);
108 * The sk_lock has mutex_lock() semantics here:
110 mutex_acquire(&sk->sk_lock.dep_map, subclass, 0, _RET_IP_);
113 EXPORT_SYMBOL(lock_sock_nested);