]> rtime.felk.cvut.cz Git - hercules2020/nv-tegra/linux-4.4.git/blob - rt-patches/0019-net-flip-lock-dep-thingy.patch.patch
WAR:media:i2c:ov5693: add flip and mirror setting
[hercules2020/nv-tegra/linux-4.4.git] / rt-patches / 0019-net-flip-lock-dep-thingy.patch.patch
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
5
6 =======================================================
7 [ INFO: possible circular locking dependency detected ]
8 3.0.0-rc3+ #26
9 -------------------------------------------------------
10 ip/1104 is trying to acquire lock:
11  (local_softirq_lock){+.+...}, at: [<ffffffff81056d12>] __local_lock+0x25/0x68
12
13 but task is already holding lock:
14  (sk_lock-AF_INET){+.+...}, at: [<ffffffff81433308>] lock_sock+0x10/0x12
15
16 which lock already depends on the new lock.
17
18
19 the existing dependency chain (in reverse order) is:
20
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
33
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
49
50 other info that might help us debug this:
51
52  Possible unsafe locking scenario:
53
54        CPU0                    CPU1
55        ----                    ----
56   lock(sk_lock-AF_INET);
57                                lock(local_softirq_lock);
58                                lock(sk_lock-AF_INET);
59   lock(local_softirq_lock);
60
61  *** DEADLOCK ***
62
63 1 lock held by ip/1104:
64  #0:  (sk_lock-AF_INET){+.+...}, at: [<ffffffff81433308>] lock_sock+0x10/0x12
65
66 stack backtrace:
67 Pid: 1104, comm: ip Not tainted 3.0.0-rc3+ #26
68 Call Trace:
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
90
91
92 Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
93 ---
94  net/core/sock.c | 3 +--
95  1 file changed, 1 insertion(+), 2 deletions(-)
96
97 diff --git a/net/core/sock.c b/net/core/sock.c
98 index f4c0917..03ba648 100644
99 --- a/net/core/sock.c
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)
103                 __lock_sock(sk);
104         sk->sk_lock.owned = 1;
105 -       spin_unlock(&sk->sk_lock.slock);
106 +       spin_unlock_bh(&sk->sk_lock.slock);
107         /*
108          * The sk_lock has mutex_lock() semantics here:
109          */
110         mutex_acquire(&sk->sk_lock.dep_map, subclass, 0, _RET_IP_);
111 -       local_bh_enable();
112  }
113  EXPORT_SYMBOL(lock_sock_nested);
114  
115 -- 
116 2.7.4
117