* Re: 3.11-rc7:BUG: soft lockup
[not found] <522055D7.70002@gmail.com>
@ 2013-08-30 12:18 ` Cong Wang
2013-08-31 3:25 ` Hillf Danton
0 siblings, 1 reply; 8+ messages in thread
From: Cong Wang @ 2013-08-30 12:18 UTC (permalink / raw)
To: Baoquan He; +Cc: LKML, Linux Kernel Network Developers
Cc'ing netdev
On Fri, Aug 30, 2013 at 4:20 PM, Baoquan He <baoquan.he@gmail.com> wrote:
> Hi,
>
> I tried the 3.11.0-rc7+ on x86_64, and after bootup, the soft lockup bug
> happened.
>
> [ 48.895000] BUG: soft lockup - CPU#1 stuck for 22s! [ebtables:444]
> [ 48.901191] Modules linked in: bnep(F) bluetooth(F) ebtables(F)
> ip6table_filter(F) ip6_tables(F) rfkill(F) snd_hda_intel(F+)
> snd_hda_codec(F) snd_hwdep(F) snd_seq(F) sn)
> [ 48.950034] CPU: 1 PID: 444 Comm: ebtables Tainted: GF D
> 3.11.0-rc7+ #1
> [ 48.957433] Hardware name: Hewlett-Packard HP Z420 Workstation/1589,
> BIOS J61 v01.02 03/09/2012
> [ 48.966131] task: ffff88040c2dc650 ti: ffff8804187d2000 task.ti:
> ffff8804187d2000
> [ 48.973610] RIP: 0010:[<ffffffff812e57a7>] [<ffffffff812e57a7>]
> strcmp+0x27/0x40
> [ 48.981119] RSP: 0018:ffff8804187d3db8 EFLAGS: 00000246
> [ 48.986430] RAX: 0000000000000000 RBX: 00007fffda942730 RCX:
> ffff8804187d3fd8
> [ 48.993566] RDX: 0000000000000000 RSI: ffff8804187d3e01 RDI:
> ffffffff81cb8a39
> [ 49.000707] RBP: ffff8804187d3db8 R08: 00000000fffffff2 R09:
> 0000000000000000
> [ 49.007841] R10: 0000000000000163 R11: 0000000000000000 R12:
> ffffffff8128300c
> [ 49.014972] R13: ffff8804187d3d98 R14: ffff8804187d3ef4 R15:
> 0000000000000004
> [ 49.022112] FS: 00007faab6589740(0000) GS:ffff88042fc80000(0000)
> knlGS:0000000000000000
> [ 49.030194] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 49.035942] CR2: 0000003f0d810414 CR3: 000000040d2cc000 CR4:
> 00000000000407e0
> [ 49.043077] Stack:
> [ 49.045096] ffff8804187d3de8 ffffffffa0249674 0000000000000080
> ffffffff81cb8180
> [ 49.052559] 00007fffda942730 ffff8804187d3ef4 ffff8804187d3ea0
> ffffffffa02497a9
> [ 49.060020] 0000000000000000 00007265746c6966 0000003f0d7b92c0
> 00007fffda942850
> [ 49.067487] Call Trace:
> [ 49.069949] [<ffffffffa0249674>]
> find_inlist_lock.constprop.16+0x54/0x100 [ebtables]
> [ 49.077779] [<ffffffffa02497a9>] do_ebt_get_ctl+0x89/0x1d0 [ebtables]
> [ 49.084306] [<ffffffff81551ca8>] nf_getsockopt+0x68/0x90
> [ 49.089717] [<ffffffff81560d40>] ip_getsockopt+0x80/0xa0
> [ 49.095113] [<ffffffff815835c5>] raw_getsockopt+0x25/0x50
> [ 49.100588] [<ffffffff8150ddd4>] sock_common_getsockopt+0x14/0x20
> [ 49.106766] [<ffffffff8150d208>] SyS_getsockopt+0x68/0xd0
> [ 49.112257] [<ffffffff8162c682>] system_call_fastpath+0x16/0x1b
> [ 49.118260] Code: 00 00 00 00 55 48 89 e5 eb 0e 66 2e 0f 1f 84 00 00
> 00 00 00 84 c0 74 1c 48 83 c7 01 0f b6 47 ff 48 83 c6 01 3a 46 ff 74 eb
> 19 c0 <83> c8 01 5d c3 0f 1
> [ 76.925880] BUG: soft lockup - CPU#1 stuck for 22s! [ebtables:444]
> [ 76.932069] Modules linked in: bnep(F) bluetooth(F) ebtables(F)
> ip6table_filter(F) ip6_tables(F) rfkill(F) snd_hda_intel(F+)
> snd_hda_codec(F) snd_hwdep(F) snd_seq(F) sn)
> [ 76.980847] CPU: 1 PID: 444 Comm: ebtables Tainted: GF D
> 3.11.0-rc7+ #1
> [ 76.988245] Hardware name: Hewlett-Packard HP Z420 Workstation/1589,
> BIOS J61 v01.02 03/09/2012
> [ 76.996940] task: ffff88040c2dc650 ti: ffff8804187d2000 task.ti:
> ffff8804187d2000
> [ 77.004426] RIP: 0010:[<ffffffff812e5784>] [<ffffffff812e5784>]
> strcmp+0x4/0x40
> [ 77.011849] RSP: 0018:ffff8804187d3db8 EFLAGS: 00000212
> [ 77.017163] RAX: 0000000000000001 RBX: 00007fffda942730 RCX:
> ffff8804187d3fd8
> [ 77.024304] RDX: 0000000000000000 RSI: ffff8804187d3e00 RDI:
> ffffffff81cb8a38
> [ 77.031434] RBP: ffff8804187d3db8 R08: 00000000fffffff2 R09:
> 0000000000000000
> [ 77.038566] R10: 0000000000000163 R11: 0000000000000000 R12:
> ffffffff8128300c
> [ 77.045699] R13: ffff8804187d3d98 R14: ffff8804187d3ef4 R15:
> 0000000000000004
> [ 77.052842] FS: 00007faab6589740(0000) GS:ffff88042fc80000(0000)
> knlGS:0000000000000000
> [ 77.060934] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
> [ 77.066668] CR2: 0000003f0d810414 CR3: 000000040d2cc000 CR4:
> 00000000000407e0
> [ 77.073799] Stack:
> [ 77.075818] ffff8804187d3de8 ffffffffa0249674 0000000000000080
> ffffffff81cb8180
> [ 77.083287] 00007fffda942730 ffff8804187d3ef4 ffff8804187d3ea0
> ffffffffa02497a9
> [ 77.090749] 0000000000000000 00007265746c6966 0000003f0d7b92c0
> 00007fffda942850
> [ 77.098215] Call Trace:
> [ 77.100668] [<ffffffffa0249674>]
> find_inlist_lock.constprop.16+0x54/0x100 [ebtables]
> [ 77.108500] [<ffffffffa02497a9>] do_ebt_get_ctl+0x89/0x1d0 [ebtables]
> [ 77.115035] [<ffffffff81551ca8>] nf_getsockopt+0x68/0x90
> [ 77.120438] [<ffffffff81560d40>] ip_getsockopt+0x80/0xa0
> [ 77.125845] [<ffffffff815835c5>] raw_getsockopt+0x25/0x50
> [ 77.131328] [<ffffffff8150ddd4>] sock_common_getsockopt+0x14/0x20
> [ 77.137515] [<ffffffff8150d208>] SyS_getsockopt+0x68/0xd0
> [ 77.143011] [<ffffffff8162c682>] system_call_fastpath+0x16/0x1b
> [ 77.149019] Code: 0f 1f 80 00 00 00 00 48 83 c6 01 0f b6 4e ff 48 83
> c2 01 84 c9 88 4a ff 75 ed 5d c3 66 66 2e 0f 1f 84 00 00 00 00 00 55 48
> 89 e5 <eb> 0e 66 2e 0f 1f 8
Does the following patch help?
diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
index ac78024..4a0ec8f 100644
--- a/net/bridge/netfilter/ebtables.c
+++ b/net/bridge/netfilter/ebtables.c
@@ -1503,6 +1503,10 @@ static int do_ebt_get_ctl(struct sock *sk, int
cmd, void __user *user, int *len)
if (copy_from_user(&tmp, user, sizeof(tmp)))
return -EFAULT;
+ if (memscan(tmp.name, '\0', EBT_TABLE_MAXNAMELEN) ==
+ (tmp.name + EBT_TABLE_MAXNAMELEN))
+ return -EINVAL;
+
t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
if (!t)
return ret;
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: 3.11-rc7:BUG: soft lockup
2013-08-30 12:18 ` 3.11-rc7:BUG: soft lockup Cong Wang
@ 2013-08-31 3:25 ` Hillf Danton
2013-09-02 6:06 ` Baoquan He
0 siblings, 1 reply; 8+ messages in thread
From: Hillf Danton @ 2013-08-31 3:25 UTC (permalink / raw)
To: Cong Wang; +Cc: Baoquan He, LKML, Linux Kernel Network Developers
On Fri, Aug 30, 2013 at 8:18 PM, Cong Wang <xiyou.wangcong@gmail.com> wrote:
> Cc'ing netdev
>
> On Fri, Aug 30, 2013 at 4:20 PM, Baoquan He <baoquan.he@gmail.com> wrote:
>> Hi,
>>
>> I tried the 3.11.0-rc7+ on x86_64, and after bootup, the soft lockup bug
>> happened.
>>
>> [ 48.895000] BUG: soft lockup - CPU#1 stuck for 22s! [ebtables:444]
>> [ 48.901191] Modules linked in: bnep(F) bluetooth(F) ebtables(F)
>> ip6table_filter(F) ip6_tables(F) rfkill(F) snd_hda_intel(F+)
>> snd_hda_codec(F) snd_hwdep(F) snd_seq(F) sn)
>> [ 48.950034] CPU: 1 PID: 444 Comm: ebtables Tainted: GF D
>> 3.11.0-rc7+ #1
>> [ 48.957433] Hardware name: Hewlett-Packard HP Z420 Workstation/1589,
>> BIOS J61 v01.02 03/09/2012
>> [ 48.966131] task: ffff88040c2dc650 ti: ffff8804187d2000 task.ti:
>> ffff8804187d2000
>> [ 48.973610] RIP: 0010:[<ffffffff812e57a7>] [<ffffffff812e57a7>]
>> strcmp+0x27/0x40
>> [ 48.981119] RSP: 0018:ffff8804187d3db8 EFLAGS: 00000246
>> [ 48.986430] RAX: 0000000000000000 RBX: 00007fffda942730 RCX:
>> ffff8804187d3fd8
>> [ 48.993566] RDX: 0000000000000000 RSI: ffff8804187d3e01 RDI:
>> ffffffff81cb8a39
>> [ 49.000707] RBP: ffff8804187d3db8 R08: 00000000fffffff2 R09:
>> 0000000000000000
>> [ 49.007841] R10: 0000000000000163 R11: 0000000000000000 R12:
>> ffffffff8128300c
>> [ 49.014972] R13: ffff8804187d3d98 R14: ffff8804187d3ef4 R15:
>> 0000000000000004
>> [ 49.022112] FS: 00007faab6589740(0000) GS:ffff88042fc80000(0000)
>> knlGS:0000000000000000
>> [ 49.030194] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> [ 49.035942] CR2: 0000003f0d810414 CR3: 000000040d2cc000 CR4:
>> 00000000000407e0
>> [ 49.043077] Stack:
>> [ 49.045096] ffff8804187d3de8 ffffffffa0249674 0000000000000080
>> ffffffff81cb8180
>> [ 49.052559] 00007fffda942730 ffff8804187d3ef4 ffff8804187d3ea0
>> ffffffffa02497a9
>> [ 49.060020] 0000000000000000 00007265746c6966 0000003f0d7b92c0
>> 00007fffda942850
>> [ 49.067487] Call Trace:
>> [ 49.069949] [<ffffffffa0249674>]
>> find_inlist_lock.constprop.16+0x54/0x100 [ebtables]
>> [ 49.077779] [<ffffffffa02497a9>] do_ebt_get_ctl+0x89/0x1d0 [ebtables]
>> [ 49.084306] [<ffffffff81551ca8>] nf_getsockopt+0x68/0x90
>> [ 49.089717] [<ffffffff81560d40>] ip_getsockopt+0x80/0xa0
>> [ 49.095113] [<ffffffff815835c5>] raw_getsockopt+0x25/0x50
>> [ 49.100588] [<ffffffff8150ddd4>] sock_common_getsockopt+0x14/0x20
>> [ 49.106766] [<ffffffff8150d208>] SyS_getsockopt+0x68/0xd0
>> [ 49.112257] [<ffffffff8162c682>] system_call_fastpath+0x16/0x1b
>> [ 49.118260] Code: 00 00 00 00 55 48 89 e5 eb 0e 66 2e 0f 1f 84 00 00
>> 00 00 00 84 c0 74 1c 48 83 c7 01 0f b6 47 ff 48 83 c6 01 3a 46 ff 74 eb
>> 19 c0 <83> c8 01 5d c3 0f 1
>> [ 76.925880] BUG: soft lockup - CPU#1 stuck for 22s! [ebtables:444]
>> [ 76.932069] Modules linked in: bnep(F) bluetooth(F) ebtables(F)
>> ip6table_filter(F) ip6_tables(F) rfkill(F) snd_hda_intel(F+)
>> snd_hda_codec(F) snd_hwdep(F) snd_seq(F) sn)
>> [ 76.980847] CPU: 1 PID: 444 Comm: ebtables Tainted: GF D
>> 3.11.0-rc7+ #1
>> [ 76.988245] Hardware name: Hewlett-Packard HP Z420 Workstation/1589,
>> BIOS J61 v01.02 03/09/2012
>> [ 76.996940] task: ffff88040c2dc650 ti: ffff8804187d2000 task.ti:
>> ffff8804187d2000
>> [ 77.004426] RIP: 0010:[<ffffffff812e5784>] [<ffffffff812e5784>]
>> strcmp+0x4/0x40
>> [ 77.011849] RSP: 0018:ffff8804187d3db8 EFLAGS: 00000212
>> [ 77.017163] RAX: 0000000000000001 RBX: 00007fffda942730 RCX:
>> ffff8804187d3fd8
>> [ 77.024304] RDX: 0000000000000000 RSI: ffff8804187d3e00 RDI:
>> ffffffff81cb8a38
>> [ 77.031434] RBP: ffff8804187d3db8 R08: 00000000fffffff2 R09:
>> 0000000000000000
>> [ 77.038566] R10: 0000000000000163 R11: 0000000000000000 R12:
>> ffffffff8128300c
>> [ 77.045699] R13: ffff8804187d3d98 R14: ffff8804187d3ef4 R15:
>> 0000000000000004
>> [ 77.052842] FS: 00007faab6589740(0000) GS:ffff88042fc80000(0000)
>> knlGS:0000000000000000
>> [ 77.060934] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>> [ 77.066668] CR2: 0000003f0d810414 CR3: 000000040d2cc000 CR4:
>> 00000000000407e0
>> [ 77.073799] Stack:
>> [ 77.075818] ffff8804187d3de8 ffffffffa0249674 0000000000000080
>> ffffffff81cb8180
>> [ 77.083287] 00007fffda942730 ffff8804187d3ef4 ffff8804187d3ea0
>> ffffffffa02497a9
>> [ 77.090749] 0000000000000000 00007265746c6966 0000003f0d7b92c0
>> 00007fffda942850
>> [ 77.098215] Call Trace:
>> [ 77.100668] [<ffffffffa0249674>]
>> find_inlist_lock.constprop.16+0x54/0x100 [ebtables]
>> [ 77.108500] [<ffffffffa02497a9>] do_ebt_get_ctl+0x89/0x1d0 [ebtables]
>> [ 77.115035] [<ffffffff81551ca8>] nf_getsockopt+0x68/0x90
>> [ 77.120438] [<ffffffff81560d40>] ip_getsockopt+0x80/0xa0
>> [ 77.125845] [<ffffffff815835c5>] raw_getsockopt+0x25/0x50
>> [ 77.131328] [<ffffffff8150ddd4>] sock_common_getsockopt+0x14/0x20
>> [ 77.137515] [<ffffffff8150d208>] SyS_getsockopt+0x68/0xd0
>> [ 77.143011] [<ffffffff8162c682>] system_call_fastpath+0x16/0x1b
>> [ 77.149019] Code: 0f 1f 80 00 00 00 00 48 83 c6 01 0f b6 4e ff 48 83
>> c2 01 84 c9 88 4a ff 75 ed 5d c3 66 66 2e 0f 1f 84 00 00 00 00 00 55 48
>> 89 e5 <eb> 0e 66 2e 0f 1f 8
>
>
> Does the following patch help?
>
>
> diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
> index ac78024..4a0ec8f 100644
> --- a/net/bridge/netfilter/ebtables.c
> +++ b/net/bridge/netfilter/ebtables.c
> @@ -1503,6 +1503,10 @@ static int do_ebt_get_ctl(struct sock *sk, int
> cmd, void __user *user, int *len)
> if (copy_from_user(&tmp, user, sizeof(tmp)))
> return -EFAULT;
>
> + if (memscan(tmp.name, '\0', EBT_TABLE_MAXNAMELEN) ==
> + (tmp.name + EBT_TABLE_MAXNAMELEN))
> + return -EINVAL;
> +
> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
> if (!t)
> return ret;
> --
>
release lock!!
--- a/net/bridge/netfilter/ebtables.c Sat Aug 31 11:12:54 2013
+++ b/net/bridge/netfilter/ebtables.c Sat Aug 31 11:15:24 2013
@@ -332,8 +332,10 @@ find_inlist_lock_noload(struct list_head
return NULL;
list_for_each_entry(e, head, list) {
- if (strcmp(e->name, name) == 0)
+ if (strcmp(e->name, name) == 0) {
+ mutex_unlock(mutex);
return e;
+ }
}
*error = -ENOENT;
mutex_unlock(mutex);
--
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 3.11-rc7:BUG: soft lockup
2013-08-31 3:25 ` Hillf Danton
@ 2013-09-02 6:06 ` Baoquan He
2013-09-02 6:57 ` Ding Tianhong
2013-09-02 7:44 ` Ding Tianhong
0 siblings, 2 replies; 8+ messages in thread
From: Baoquan He @ 2013-09-02 6:06 UTC (permalink / raw)
To: Hillf Danton; +Cc: Cong Wang, LKML, Linux Kernel Network Developers
Hi both,
Thanks for your patches. I tried to test your patches, first the 2nd
one, namely Hillf's patch, it's OK. Then when I wanted to reproduce and
test Cong's patch, it failed to happen again.
I remember this bug happened randomly at the very beginning,
just after kernel compiling it always happened one day.
So maybe when it happened again, I will test your patch separately.
Baoquan
Thanks
On 08/31/2013 11:25 AM, Hillf Danton wrote:
> On Fri, Aug 30, 2013 at 8:18 PM, Cong Wang <xiyou.wangcong@gmail.com> wrote:
>> Cc'ing netdev
>>
>> On Fri, Aug 30, 2013 at 4:20 PM, Baoquan He <baoquan.he@gmail.com> wrote:
>>> Hi,
>>>
>>> I tried the 3.11.0-rc7+ on x86_64, and after bootup, the soft lockup bug
>>> happened.
>>>
>>> [ 48.895000] BUG: soft lockup - CPU#1 stuck for 22s! [ebtables:444]
>>> [ 48.901191] Modules linked in: bnep(F) bluetooth(F) ebtables(F)
>>> ip6table_filter(F) ip6_tables(F) rfkill(F) snd_hda_intel(F+)
>>> snd_hda_codec(F) snd_hwdep(F) snd_seq(F) sn)
>>> [ 48.950034] CPU: 1 PID: 444 Comm: ebtables Tainted: GF D
>>> 3.11.0-rc7+ #1
>>> [ 48.957433] Hardware name: Hewlett-Packard HP Z420 Workstation/1589,
>>> BIOS J61 v01.02 03/09/2012
>>> [ 48.966131] task: ffff88040c2dc650 ti: ffff8804187d2000 task.ti:
>>> ffff8804187d2000
>>> [ 48.973610] RIP: 0010:[<ffffffff812e57a7>] [<ffffffff812e57a7>]
>>> strcmp+0x27/0x40
>>> [ 48.981119] RSP: 0018:ffff8804187d3db8 EFLAGS: 00000246
>>> [ 48.986430] RAX: 0000000000000000 RBX: 00007fffda942730 RCX:
>>> ffff8804187d3fd8
>>> [ 48.993566] RDX: 0000000000000000 RSI: ffff8804187d3e01 RDI:
>>> ffffffff81cb8a39
>>> [ 49.000707] RBP: ffff8804187d3db8 R08: 00000000fffffff2 R09:
>>> 0000000000000000
>>> [ 49.007841] R10: 0000000000000163 R11: 0000000000000000 R12:
>>> ffffffff8128300c
>>> [ 49.014972] R13: ffff8804187d3d98 R14: ffff8804187d3ef4 R15:
>>> 0000000000000004
>>> [ 49.022112] FS: 00007faab6589740(0000) GS:ffff88042fc80000(0000)
>>> knlGS:0000000000000000
>>> [ 49.030194] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>> [ 49.035942] CR2: 0000003f0d810414 CR3: 000000040d2cc000 CR4:
>>> 00000000000407e0
>>> [ 49.043077] Stack:
>>> [ 49.045096] ffff8804187d3de8 ffffffffa0249674 0000000000000080
>>> ffffffff81cb8180
>>> [ 49.052559] 00007fffda942730 ffff8804187d3ef4 ffff8804187d3ea0
>>> ffffffffa02497a9
>>> [ 49.060020] 0000000000000000 00007265746c6966 0000003f0d7b92c0
>>> 00007fffda942850
>>> [ 49.067487] Call Trace:
>>> [ 49.069949] [<ffffffffa0249674>]
>>> find_inlist_lock.constprop.16+0x54/0x100 [ebtables]
>>> [ 49.077779] [<ffffffffa02497a9>] do_ebt_get_ctl+0x89/0x1d0 [ebtables]
>>> [ 49.084306] [<ffffffff81551ca8>] nf_getsockopt+0x68/0x90
>>> [ 49.089717] [<ffffffff81560d40>] ip_getsockopt+0x80/0xa0
>>> [ 49.095113] [<ffffffff815835c5>] raw_getsockopt+0x25/0x50
>>> [ 49.100588] [<ffffffff8150ddd4>] sock_common_getsockopt+0x14/0x20
>>> [ 49.106766] [<ffffffff8150d208>] SyS_getsockopt+0x68/0xd0
>>> [ 49.112257] [<ffffffff8162c682>] system_call_fastpath+0x16/0x1b
>>> [ 49.118260] Code: 00 00 00 00 55 48 89 e5 eb 0e 66 2e 0f 1f 84 00 00
>>> 00 00 00 84 c0 74 1c 48 83 c7 01 0f b6 47 ff 48 83 c6 01 3a 46 ff 74 eb
>>> 19 c0 <83> c8 01 5d c3 0f 1
>>> [ 76.925880] BUG: soft lockup - CPU#1 stuck for 22s! [ebtables:444]
>>> [ 76.932069] Modules linked in: bnep(F) bluetooth(F) ebtables(F)
>>> ip6table_filter(F) ip6_tables(F) rfkill(F) snd_hda_intel(F+)
>>> snd_hda_codec(F) snd_hwdep(F) snd_seq(F) sn)
>>> [ 76.980847] CPU: 1 PID: 444 Comm: ebtables Tainted: GF D
>>> 3.11.0-rc7+ #1
>>> [ 76.988245] Hardware name: Hewlett-Packard HP Z420 Workstation/1589,
>>> BIOS J61 v01.02 03/09/2012
>>> [ 76.996940] task: ffff88040c2dc650 ti: ffff8804187d2000 task.ti:
>>> ffff8804187d2000
>>> [ 77.004426] RIP: 0010:[<ffffffff812e5784>] [<ffffffff812e5784>]
>>> strcmp+0x4/0x40
>>> [ 77.011849] RSP: 0018:ffff8804187d3db8 EFLAGS: 00000212
>>> [ 77.017163] RAX: 0000000000000001 RBX: 00007fffda942730 RCX:
>>> ffff8804187d3fd8
>>> [ 77.024304] RDX: 0000000000000000 RSI: ffff8804187d3e00 RDI:
>>> ffffffff81cb8a38
>>> [ 77.031434] RBP: ffff8804187d3db8 R08: 00000000fffffff2 R09:
>>> 0000000000000000
>>> [ 77.038566] R10: 0000000000000163 R11: 0000000000000000 R12:
>>> ffffffff8128300c
>>> [ 77.045699] R13: ffff8804187d3d98 R14: ffff8804187d3ef4 R15:
>>> 0000000000000004
>>> [ 77.052842] FS: 00007faab6589740(0000) GS:ffff88042fc80000(0000)
>>> knlGS:0000000000000000
>>> [ 77.060934] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>> [ 77.066668] CR2: 0000003f0d810414 CR3: 000000040d2cc000 CR4:
>>> 00000000000407e0
>>> [ 77.073799] Stack:
>>> [ 77.075818] ffff8804187d3de8 ffffffffa0249674 0000000000000080
>>> ffffffff81cb8180
>>> [ 77.083287] 00007fffda942730 ffff8804187d3ef4 ffff8804187d3ea0
>>> ffffffffa02497a9
>>> [ 77.090749] 0000000000000000 00007265746c6966 0000003f0d7b92c0
>>> 00007fffda942850
>>> [ 77.098215] Call Trace:
>>> [ 77.100668] [<ffffffffa0249674>]
>>> find_inlist_lock.constprop.16+0x54/0x100 [ebtables]
>>> [ 77.108500] [<ffffffffa02497a9>] do_ebt_get_ctl+0x89/0x1d0 [ebtables]
>>> [ 77.115035] [<ffffffff81551ca8>] nf_getsockopt+0x68/0x90
>>> [ 77.120438] [<ffffffff81560d40>] ip_getsockopt+0x80/0xa0
>>> [ 77.125845] [<ffffffff815835c5>] raw_getsockopt+0x25/0x50
>>> [ 77.131328] [<ffffffff8150ddd4>] sock_common_getsockopt+0x14/0x20
>>> [ 77.137515] [<ffffffff8150d208>] SyS_getsockopt+0x68/0xd0
>>> [ 77.143011] [<ffffffff8162c682>] system_call_fastpath+0x16/0x1b
>>> [ 77.149019] Code: 0f 1f 80 00 00 00 00 48 83 c6 01 0f b6 4e ff 48 83
>>> c2 01 84 c9 88 4a ff 75 ed 5d c3 66 66 2e 0f 1f 84 00 00 00 00 00 55 48
>>> 89 e5 <eb> 0e 66 2e 0f 1f 8
>>
>> Does the following patch help?
>>
>>
>> diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
>> index ac78024..4a0ec8f 100644
>> --- a/net/bridge/netfilter/ebtables.c
>> +++ b/net/bridge/netfilter/ebtables.c
>> @@ -1503,6 +1503,10 @@ static int do_ebt_get_ctl(struct sock *sk, int
>> cmd, void __user *user, int *len)
>> if (copy_from_user(&tmp, user, sizeof(tmp)))
>> return -EFAULT;
>>
>> + if (memscan(tmp.name, '\0', EBT_TABLE_MAXNAMELEN) ==
>> + (tmp.name + EBT_TABLE_MAXNAMELEN))
>> + return -EINVAL;
>> +
>> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
>> if (!t)
>> return ret;
>> --
>>
> release lock!!
>
> --- a/net/bridge/netfilter/ebtables.c Sat Aug 31 11:12:54 2013
> +++ b/net/bridge/netfilter/ebtables.c Sat Aug 31 11:15:24 2013
> @@ -332,8 +332,10 @@ find_inlist_lock_noload(struct list_head
> return NULL;
>
> list_for_each_entry(e, head, list) {
> - if (strcmp(e->name, name) == 0)
> + if (strcmp(e->name, name) == 0) {
> + mutex_unlock(mutex);
> return e;
> + }
> }
> *error = -ENOENT;
> mutex_unlock(mutex);
> --
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 3.11-rc7:BUG: soft lockup
2013-09-02 6:06 ` Baoquan He
@ 2013-09-02 6:57 ` Ding Tianhong
2013-09-02 7:44 ` Ding Tianhong
1 sibling, 0 replies; 8+ messages in thread
From: Ding Tianhong @ 2013-09-02 6:57 UTC (permalink / raw)
To: Baoquan He; +Cc: Hillf Danton, Cong Wang, LKML, Linux Kernel Network Developers
On 2013/9/2 14:06, Baoquan He wrote:
> Hi both,
>
> Thanks for your patches. I tried to test your patches, first the 2nd
> one, namely Hillf's patch, it's OK. Then when I wanted to reproduce and
> test Cong's patch, it failed to happen again.
>
> I remember this bug happened randomly at the very beginning,
> just after kernel compiling it always happened one day.
>
> So maybe when it happened again, I will test your patch separately.
>
> Baoquan
> Thanks
>
> On 08/31/2013 11:25 AM, Hillf Danton wrote:
>> On Fri, Aug 30, 2013 at 8:18 PM, Cong Wang <xiyou.wangcong@gmail.com> wrote:
>>> Cc'ing netdev
>>>
>>> On Fri, Aug 30, 2013 at 4:20 PM, Baoquan He <baoquan.he@gmail.com> wrote:
>>>> Hi,
>>>>
>>>> I tried the 3.11.0-rc7+ on x86_64, and after bootup, the soft lockup bug
>>>> happened.
>>>>
>>>> [ 48.895000] BUG: soft lockup - CPU#1 stuck for 22s! [ebtables:444]
>>>> [ 48.901191] Modules linked in: bnep(F) bluetooth(F) ebtables(F)
>>>> ip6table_filter(F) ip6_tables(F) rfkill(F) snd_hda_intel(F+)
>>>> snd_hda_codec(F) snd_hwdep(F) snd_seq(F) sn)
>>>> [ 48.950034] CPU: 1 PID: 444 Comm: ebtables Tainted: GF D
>>>> 3.11.0-rc7+ #1
>>>> [ 48.957433] Hardware name: Hewlett-Packard HP Z420 Workstation/1589,
>>>> BIOS J61 v01.02 03/09/2012
>>>> [ 48.966131] task: ffff88040c2dc650 ti: ffff8804187d2000 task.ti:
>>>> ffff8804187d2000
>>>> [ 48.973610] RIP: 0010:[<ffffffff812e57a7>] [<ffffffff812e57a7>]
>>>> strcmp+0x27/0x40
>>>> [ 48.981119] RSP: 0018:ffff8804187d3db8 EFLAGS: 00000246
>>>> [ 48.986430] RAX: 0000000000000000 RBX: 00007fffda942730 RCX:
>>>> ffff8804187d3fd8
>>>> [ 48.993566] RDX: 0000000000000000 RSI: ffff8804187d3e01 RDI:
>>>> ffffffff81cb8a39
>>>> [ 49.000707] RBP: ffff8804187d3db8 R08: 00000000fffffff2 R09:
>>>> 0000000000000000
>>>> [ 49.007841] R10: 0000000000000163 R11: 0000000000000000 R12:
>>>> ffffffff8128300c
>>>> [ 49.014972] R13: ffff8804187d3d98 R14: ffff8804187d3ef4 R15:
>>>> 0000000000000004
>>>> [ 49.022112] FS: 00007faab6589740(0000) GS:ffff88042fc80000(0000)
>>>> knlGS:0000000000000000
>>>> [ 49.030194] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>>> [ 49.035942] CR2: 0000003f0d810414 CR3: 000000040d2cc000 CR4:
>>>> 00000000000407e0
>>>> [ 49.043077] Stack:
>>>> [ 49.045096] ffff8804187d3de8 ffffffffa0249674 0000000000000080
>>>> ffffffff81cb8180
>>>> [ 49.052559] 00007fffda942730 ffff8804187d3ef4 ffff8804187d3ea0
>>>> ffffffffa02497a9
>>>> [ 49.060020] 0000000000000000 00007265746c6966 0000003f0d7b92c0
>>>> 00007fffda942850
>>>> [ 49.067487] Call Trace:
>>>> [ 49.069949] [<ffffffffa0249674>]
>>>> find_inlist_lock.constprop.16+0x54/0x100 [ebtables]
>>>> [ 49.077779] [<ffffffffa02497a9>] do_ebt_get_ctl+0x89/0x1d0 [ebtables]
>>>> [ 49.084306] [<ffffffff81551ca8>] nf_getsockopt+0x68/0x90
>>>> [ 49.089717] [<ffffffff81560d40>] ip_getsockopt+0x80/0xa0
>>>> [ 49.095113] [<ffffffff815835c5>] raw_getsockopt+0x25/0x50
>>>> [ 49.100588] [<ffffffff8150ddd4>] sock_common_getsockopt+0x14/0x20
>>>> [ 49.106766] [<ffffffff8150d208>] SyS_getsockopt+0x68/0xd0
>>>> [ 49.112257] [<ffffffff8162c682>] system_call_fastpath+0x16/0x1b
>>>> [ 49.118260] Code: 00 00 00 00 55 48 89 e5 eb 0e 66 2e 0f 1f 84 00 00
>>>> 00 00 00 84 c0 74 1c 48 83 c7 01 0f b6 47 ff 48 83 c6 01 3a 46 ff 74 eb
>>>> 19 c0 <83> c8 01 5d c3 0f 1
>>>> [ 76.925880] BUG: soft lockup - CPU#1 stuck for 22s! [ebtables:444]
>>>> [ 76.932069] Modules linked in: bnep(F) bluetooth(F) ebtables(F)
>>>> ip6table_filter(F) ip6_tables(F) rfkill(F) snd_hda_intel(F+)
>>>> snd_hda_codec(F) snd_hwdep(F) snd_seq(F) sn)
>>>> [ 76.980847] CPU: 1 PID: 444 Comm: ebtables Tainted: GF D
>>>> 3.11.0-rc7+ #1
>>>> [ 76.988245] Hardware name: Hewlett-Packard HP Z420 Workstation/1589,
>>>> BIOS J61 v01.02 03/09/2012
>>>> [ 76.996940] task: ffff88040c2dc650 ti: ffff8804187d2000 task.ti:
>>>> ffff8804187d2000
>>>> [ 77.004426] RIP: 0010:[<ffffffff812e5784>] [<ffffffff812e5784>]
>>>> strcmp+0x4/0x40
>>>> [ 77.011849] RSP: 0018:ffff8804187d3db8 EFLAGS: 00000212
>>>> [ 77.017163] RAX: 0000000000000001 RBX: 00007fffda942730 RCX:
>>>> ffff8804187d3fd8
>>>> [ 77.024304] RDX: 0000000000000000 RSI: ffff8804187d3e00 RDI:
>>>> ffffffff81cb8a38
>>>> [ 77.031434] RBP: ffff8804187d3db8 R08: 00000000fffffff2 R09:
>>>> 0000000000000000
>>>> [ 77.038566] R10: 0000000000000163 R11: 0000000000000000 R12:
>>>> ffffffff8128300c
>>>> [ 77.045699] R13: ffff8804187d3d98 R14: ffff8804187d3ef4 R15:
>>>> 0000000000000004
>>>> [ 77.052842] FS: 00007faab6589740(0000) GS:ffff88042fc80000(0000)
>>>> knlGS:0000000000000000
>>>> [ 77.060934] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>>> [ 77.066668] CR2: 0000003f0d810414 CR3: 000000040d2cc000 CR4:
>>>> 00000000000407e0
>>>> [ 77.073799] Stack:
>>>> [ 77.075818] ffff8804187d3de8 ffffffffa0249674 0000000000000080
>>>> ffffffff81cb8180
>>>> [ 77.083287] 00007fffda942730 ffff8804187d3ef4 ffff8804187d3ea0
>>>> ffffffffa02497a9
>>>> [ 77.090749] 0000000000000000 00007265746c6966 0000003f0d7b92c0
>>>> 00007fffda942850
>>>> [ 77.098215] Call Trace:
>>>> [ 77.100668] [<ffffffffa0249674>]
>>>> find_inlist_lock.constprop.16+0x54/0x100 [ebtables]
>>>> [ 77.108500] [<ffffffffa02497a9>] do_ebt_get_ctl+0x89/0x1d0 [ebtables]
>>>> [ 77.115035] [<ffffffff81551ca8>] nf_getsockopt+0x68/0x90
>>>> [ 77.120438] [<ffffffff81560d40>] ip_getsockopt+0x80/0xa0
>>>> [ 77.125845] [<ffffffff815835c5>] raw_getsockopt+0x25/0x50
>>>> [ 77.131328] [<ffffffff8150ddd4>] sock_common_getsockopt+0x14/0x20
>>>> [ 77.137515] [<ffffffff8150d208>] SyS_getsockopt+0x68/0xd0
>>>> [ 77.143011] [<ffffffff8162c682>] system_call_fastpath+0x16/0x1b
>>>> [ 77.149019] Code: 0f 1f 80 00 00 00 00 48 83 c6 01 0f b6 4e ff 48 83
>>>> c2 01 84 c9 88 4a ff 75 ed 5d c3 66 66 2e 0f 1f 84 00 00 00 00 00 55 48
>>>> 89 e5 <eb> 0e 66 2e 0f 1f 8
>>>
>>> Does the following patch help?
>>>
>>>
>>> diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
>>> index ac78024..4a0ec8f 100644
>>> --- a/net/bridge/netfilter/ebtables.c
>>> +++ b/net/bridge/netfilter/ebtables.c
>>> @@ -1503,6 +1503,10 @@ static int do_ebt_get_ctl(struct sock *sk, int
>>> cmd, void __user *user, int *len)
>>> if (copy_from_user(&tmp, user, sizeof(tmp)))
>>> return -EFAULT;
>>>
>>> + if (memscan(tmp.name, '\0', EBT_TABLE_MAXNAMELEN) ==
>>> + (tmp.name + EBT_TABLE_MAXNAMELEN))
>>> + return -EINVAL;
>>> +
>>> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
>>> if (!t)
>>> return ret;
>>> --
>>>
>> release lock!!
>>
>> --- a/net/bridge/netfilter/ebtables.c Sat Aug 31 11:12:54 2013
>> +++ b/net/bridge/netfilter/ebtables.c Sat Aug 31 11:15:24 2013
>> @@ -332,8 +332,10 @@ find_inlist_lock_noload(struct list_head
>> return NULL;
>>
>> list_for_each_entry(e, head, list) {
>> - if (strcmp(e->name, name) == 0)
>> + if (strcmp(e->name, name) == 0) {
>> + mutex_unlock(mutex);
>> return e;
>> + }
>> }
>> *error = -ENOENT;
>> mutex_unlock(mutex);
>> --
could not release lock here, otherwise there will unlock twice. I did not meet any problem about the drivers, maybe
it is hard to occur.
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
> .
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 3.11-rc7:BUG: soft lockup
2013-09-02 6:06 ` Baoquan He
2013-09-02 6:57 ` Ding Tianhong
@ 2013-09-02 7:44 ` Ding Tianhong
2013-09-02 8:24 ` Baoquan He
1 sibling, 1 reply; 8+ messages in thread
From: Ding Tianhong @ 2013-09-02 7:44 UTC (permalink / raw)
To: Baoquan He; +Cc: Hillf Danton, Cong Wang, LKML, Linux Kernel Network Developers
On 2013/9/2 14:06, Baoquan He wrote:
> Hi both,
>
> Thanks for your patches. I tried to test your patches, first the 2nd
> one, namely Hillf's patch, it's OK. Then when I wanted to reproduce and
> test Cong's patch, it failed to happen again.
>
> I remember this bug happened randomly at the very beginning,
> just after kernel compiling it always happened one day.
>
> So maybe when it happened again, I will test your patch separately.
>
> Baoquan
> Thanks
>
> On 08/31/2013 11:25 AM, Hillf Danton wrote:
>> On Fri, Aug 30, 2013 at 8:18 PM, Cong Wang <xiyou.wangcong@gmail.com> wrote:
>>> Cc'ing netdev
>>>
>>> On Fri, Aug 30, 2013 at 4:20 PM, Baoquan He <baoquan.he@gmail.com> wrote:
>>>> Hi,
>>>>
>>>> I tried the 3.11.0-rc7+ on x86_64, and after bootup, the soft lockup bug
>>>> happened.
>>>>
>>>> [ 48.895000] BUG: soft lockup - CPU#1 stuck for 22s! [ebtables:444]
>>>> [ 48.901191] Modules linked in: bnep(F) bluetooth(F) ebtables(F)
>>>> ip6table_filter(F) ip6_tables(F) rfkill(F) snd_hda_intel(F+)
>>>> snd_hda_codec(F) snd_hwdep(F) snd_seq(F) sn)
>>>> [ 48.950034] CPU: 1 PID: 444 Comm: ebtables Tainted: GF D
>>>> 3.11.0-rc7+ #1
>>>> [ 48.957433] Hardware name: Hewlett-Packard HP Z420 Workstation/1589,
>>>> BIOS J61 v01.02 03/09/2012
>>>> [ 48.966131] task: ffff88040c2dc650 ti: ffff8804187d2000 task.ti:
>>>> ffff8804187d2000
>>>> [ 48.973610] RIP: 0010:[<ffffffff812e57a7>] [<ffffffff812e57a7>]
>>>> strcmp+0x27/0x40
>>>> [ 48.981119] RSP: 0018:ffff8804187d3db8 EFLAGS: 00000246
>>>> [ 48.986430] RAX: 0000000000000000 RBX: 00007fffda942730 RCX:
>>>> ffff8804187d3fd8
>>>> [ 48.993566] RDX: 0000000000000000 RSI: ffff8804187d3e01 RDI:
>>>> ffffffff81cb8a39
>>>> [ 49.000707] RBP: ffff8804187d3db8 R08: 00000000fffffff2 R09:
>>>> 0000000000000000
>>>> [ 49.007841] R10: 0000000000000163 R11: 0000000000000000 R12:
>>>> ffffffff8128300c
>>>> [ 49.014972] R13: ffff8804187d3d98 R14: ffff8804187d3ef4 R15:
>>>> 0000000000000004
>>>> [ 49.022112] FS: 00007faab6589740(0000) GS:ffff88042fc80000(0000)
>>>> knlGS:0000000000000000
>>>> [ 49.030194] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>>> [ 49.035942] CR2: 0000003f0d810414 CR3: 000000040d2cc000 CR4:
>>>> 00000000000407e0
>>>> [ 49.043077] Stack:
>>>> [ 49.045096] ffff8804187d3de8 ffffffffa0249674 0000000000000080
>>>> ffffffff81cb8180
>>>> [ 49.052559] 00007fffda942730 ffff8804187d3ef4 ffff8804187d3ea0
>>>> ffffffffa02497a9
>>>> [ 49.060020] 0000000000000000 00007265746c6966 0000003f0d7b92c0
>>>> 00007fffda942850
>>>> [ 49.067487] Call Trace:
>>>> [ 49.069949] [<ffffffffa0249674>]
>>>> find_inlist_lock.constprop.16+0x54/0x100 [ebtables]
>>>> [ 49.077779] [<ffffffffa02497a9>] do_ebt_get_ctl+0x89/0x1d0 [ebtables]
>>>> [ 49.084306] [<ffffffff81551ca8>] nf_getsockopt+0x68/0x90
>>>> [ 49.089717] [<ffffffff81560d40>] ip_getsockopt+0x80/0xa0
>>>> [ 49.095113] [<ffffffff815835c5>] raw_getsockopt+0x25/0x50
>>>> [ 49.100588] [<ffffffff8150ddd4>] sock_common_getsockopt+0x14/0x20
>>>> [ 49.106766] [<ffffffff8150d208>] SyS_getsockopt+0x68/0xd0
>>>> [ 49.112257] [<ffffffff8162c682>] system_call_fastpath+0x16/0x1b
>>>> [ 49.118260] Code: 00 00 00 00 55 48 89 e5 eb 0e 66 2e 0f 1f 84 00 00
>>>> 00 00 00 84 c0 74 1c 48 83 c7 01 0f b6 47 ff 48 83 c6 01 3a 46 ff 74 eb
>>>> 19 c0 <83> c8 01 5d c3 0f 1
>>>> [ 76.925880] BUG: soft lockup - CPU#1 stuck for 22s! [ebtables:444]
>>>> [ 76.932069] Modules linked in: bnep(F) bluetooth(F) ebtables(F)
>>>> ip6table_filter(F) ip6_tables(F) rfkill(F) snd_hda_intel(F+)
>>>> snd_hda_codec(F) snd_hwdep(F) snd_seq(F) sn)
>>>> [ 76.980847] CPU: 1 PID: 444 Comm: ebtables Tainted: GF D
>>>> 3.11.0-rc7+ #1
>>>> [ 76.988245] Hardware name: Hewlett-Packard HP Z420 Workstation/1589,
>>>> BIOS J61 v01.02 03/09/2012
>>>> [ 76.996940] task: ffff88040c2dc650 ti: ffff8804187d2000 task.ti:
>>>> ffff8804187d2000
>>>> [ 77.004426] RIP: 0010:[<ffffffff812e5784>] [<ffffffff812e5784>]
>>>> strcmp+0x4/0x40
>>>> [ 77.011849] RSP: 0018:ffff8804187d3db8 EFLAGS: 00000212
>>>> [ 77.017163] RAX: 0000000000000001 RBX: 00007fffda942730 RCX:
>>>> ffff8804187d3fd8
>>>> [ 77.024304] RDX: 0000000000000000 RSI: ffff8804187d3e00 RDI:
>>>> ffffffff81cb8a38
>>>> [ 77.031434] RBP: ffff8804187d3db8 R08: 00000000fffffff2 R09:
>>>> 0000000000000000
>>>> [ 77.038566] R10: 0000000000000163 R11: 0000000000000000 R12:
>>>> ffffffff8128300c
>>>> [ 77.045699] R13: ffff8804187d3d98 R14: ffff8804187d3ef4 R15:
>>>> 0000000000000004
>>>> [ 77.052842] FS: 00007faab6589740(0000) GS:ffff88042fc80000(0000)
>>>> knlGS:0000000000000000
>>>> [ 77.060934] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
>>>> [ 77.066668] CR2: 0000003f0d810414 CR3: 000000040d2cc000 CR4:
>>>> 00000000000407e0
>>>> [ 77.073799] Stack:
>>>> [ 77.075818] ffff8804187d3de8 ffffffffa0249674 0000000000000080
>>>> ffffffff81cb8180
>>>> [ 77.083287] 00007fffda942730 ffff8804187d3ef4 ffff8804187d3ea0
>>>> ffffffffa02497a9
>>>> [ 77.090749] 0000000000000000 00007265746c6966 0000003f0d7b92c0
>>>> 00007fffda942850
>>>> [ 77.098215] Call Trace:
>>>> [ 77.100668] [<ffffffffa0249674>]
>>>> find_inlist_lock.constprop.16+0x54/0x100 [ebtables]
>>>> [ 77.108500] [<ffffffffa02497a9>] do_ebt_get_ctl+0x89/0x1d0 [ebtables]
>>>> [ 77.115035] [<ffffffff81551ca8>] nf_getsockopt+0x68/0x90
>>>> [ 77.120438] [<ffffffff81560d40>] ip_getsockopt+0x80/0xa0
>>>> [ 77.125845] [<ffffffff815835c5>] raw_getsockopt+0x25/0x50
>>>> [ 77.131328] [<ffffffff8150ddd4>] sock_common_getsockopt+0x14/0x20
>>>> [ 77.137515] [<ffffffff8150d208>] SyS_getsockopt+0x68/0xd0
>>>> [ 77.143011] [<ffffffff8162c682>] system_call_fastpath+0x16/0x1b
>>>> [ 77.149019] Code: 0f 1f 80 00 00 00 00 48 83 c6 01 0f b6 4e ff 48 83
>>>> c2 01 84 c9 88 4a ff 75 ed 5d c3 66 66 2e 0f 1f 84 00 00 00 00 00 55 48
>>>> 89 e5 <eb> 0e 66 2e 0f 1f 8
>>>
>>> Does the following patch help?
>>>
>>>
>>> diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
>>> index ac78024..4a0ec8f 100644
>>> --- a/net/bridge/netfilter/ebtables.c
>>> +++ b/net/bridge/netfilter/ebtables.c
>>> @@ -1503,6 +1503,10 @@ static int do_ebt_get_ctl(struct sock *sk, int
>>> cmd, void __user *user, int *len)
>>> if (copy_from_user(&tmp, user, sizeof(tmp)))
>>> return -EFAULT;
>>>
>>> + if (memscan(tmp.name, '\0', EBT_TABLE_MAXNAMELEN) ==
>>> + (tmp.name + EBT_TABLE_MAXNAMELEN))
>>> + return -EINVAL;
>>> +
>>> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
>>> if (!t)
>>> return ret;
>>> --
>>>
>> release lock!!
>>
>> --- a/net/bridge/netfilter/ebtables.c Sat Aug 31 11:12:54 2013
>> +++ b/net/bridge/netfilter/ebtables.c Sat Aug 31 11:15:24 2013
>> @@ -332,8 +332,10 @@ find_inlist_lock_noload(struct list_head
>> return NULL;
>>
>> list_for_each_entry(e, head, list) {
>> - if (strcmp(e->name, name) == 0)
>> + if (strcmp(e->name, name) == 0) {
>> + mutex_unlock(mutex);
>> return e;
>> + }
>> }
>> *error = -ENOENT;
>> mutex_unlock(mutex);
>> --
>
please try this patch and give me the result, thanks.
Return the correct value if mutex_lock_interruptible() failed, avoid
confusion with that the modules is not exist, and deal with the return
value in right way.
if mutex_lock_interrupt() failed, sh
Signed-off-by: root <root@linux-yocto.site>
---
net/bridge/netfilter/ebtables.c | 17 +++++++----------
1 file changed, 7 insertions(+), 10 deletions(-)
diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
index ac78024..e7fe9f8 100644
--- a/net/bridge/netfilter/ebtables.c
+++ b/net/bridge/netfilter/ebtables.c
@@ -322,17 +322,14 @@ static inline void *
find_inlist_lock_noload(struct list_head *head, const char *name, int *error,
struct mutex *mutex)
{
- struct {
- struct list_head list;
- char name[EBT_FUNCTION_MAXNAMELEN];
- } *e;
+ struct ebt_table *e;
*error = mutex_lock_interruptible(mutex);
if (*error != 0)
- return NULL;
+ return ERR_PTR(-EINTR);
list_for_each_entry(e, head, list) {
- if (strcmp(e->name, name) == 0)
+ if (strcmp(e->name, name) == 0 && try_module_get(e->me))
return e;
}
*error = -ENOENT;
@@ -1005,7 +1002,7 @@ static int do_replace_finish(struct net *net, struct ebt_replace *repl,
goto free_counterstmp;
t = find_table_lock(net, repl->name, &ret, &ebt_mutex);
- if (!t) {
+ if (IS_ERR_OR_NULL(t)) {
ret = -ENOENT;
goto free_iterate;
}
@@ -1284,7 +1281,7 @@ static int do_update_counters(struct net *net, const char *name,
return -ENOMEM;
t = find_table_lock(net, name, &ret, &ebt_mutex);
- if (!t)
+ if (IS_ERR_OR_NULL(t))
goto free_tmp;
if (num_counters != t->private->nentries) {
@@ -1504,7 +1501,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
return -EFAULT;
t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
- if (!t)
+ if (IS_ERR_OR_NULL(t))
return ret;
switch(cmd) {
@@ -2319,7 +2316,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
return -EFAULT;
t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
- if (!t)
+ if (IS_ERR_OR_NULL(t))
return ret;
xt_compat_lock(NFPROTO_BRIDGE);
--
1.8.2.1
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
> .
>
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: 3.11-rc7:BUG: soft lockup
2013-09-02 7:44 ` Ding Tianhong
@ 2013-09-02 8:24 ` Baoquan He
2013-09-02 9:04 ` Ding Tianhong
0 siblings, 1 reply; 8+ messages in thread
From: Baoquan He @ 2013-09-02 8:24 UTC (permalink / raw)
To: Ding Tianhong
Cc: Hillf Danton, Cong Wang, LKML, Linux Kernel Network Developers
Hi Tianhong,
I applied your patch and execute below cmd.
Then keyboard inputting problems happened,
I can't enter user/password correctly, then reboot again, it's OK now.
The original bug still can't be reproduced.
make SUBDIRS=net/bridge/netfilter/
cp /net/bridge/netfilter/ebtables.ko
/lib/modules/3.11.0-rc7+/kernel/net/bridge/netfilter/ebtables.ko
depmod
modprobe ebtables.ko
reboot
Baoquan
Thanks
> please try this patch and give me the result, thanks.
>
> Return the correct value if mutex_lock_interruptible() failed, avoid
> confusion with that the modules is not exist, and deal with the return
> value in right way.
>
> if mutex_lock_interrupt() failed, sh
>
> Signed-off-by: root <root@linux-yocto.site>
> ---
> net/bridge/netfilter/ebtables.c | 17 +++++++----------
> 1 file changed, 7 insertions(+), 10 deletions(-)
>
> diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
> index ac78024..e7fe9f8 100644
> --- a/net/bridge/netfilter/ebtables.c
> +++ b/net/bridge/netfilter/ebtables.c
> @@ -322,17 +322,14 @@ static inline void *
> find_inlist_lock_noload(struct list_head *head, const char *name, int *error,
> struct mutex *mutex)
> {
> - struct {
> - struct list_head list;
> - char name[EBT_FUNCTION_MAXNAMELEN];
> - } *e;
> + struct ebt_table *e;
>
> *error = mutex_lock_interruptible(mutex);
> if (*error != 0)
> - return NULL;
> + return ERR_PTR(-EINTR);
>
> list_for_each_entry(e, head, list) {
> - if (strcmp(e->name, name) == 0)
> + if (strcmp(e->name, name) == 0 && try_module_get(e->me))
> return e;
> }
> *error = -ENOENT;
> @@ -1005,7 +1002,7 @@ static int do_replace_finish(struct net *net, struct ebt_replace *repl,
> goto free_counterstmp;
>
> t = find_table_lock(net, repl->name, &ret, &ebt_mutex);
> - if (!t) {
> + if (IS_ERR_OR_NULL(t)) {
> ret = -ENOENT;
> goto free_iterate;
> }
> @@ -1284,7 +1281,7 @@ static int do_update_counters(struct net *net, const char *name,
> return -ENOMEM;
>
> t = find_table_lock(net, name, &ret, &ebt_mutex);
> - if (!t)
> + if (IS_ERR_OR_NULL(t))
> goto free_tmp;
>
> if (num_counters != t->private->nentries) {
> @@ -1504,7 +1501,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
> return -EFAULT;
>
> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
> - if (!t)
> + if (IS_ERR_OR_NULL(t))
> return ret;
>
> switch(cmd) {
> @@ -2319,7 +2316,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
> return -EFAULT;
>
> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
> - if (!t)
> + if (IS_ERR_OR_NULL(t))
> return ret;
>
> xt_compat_lock(NFPROTO_BRIDGE);
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 3.11-rc7:BUG: soft lockup
2013-09-02 8:24 ` Baoquan He
@ 2013-09-02 9:04 ` Ding Tianhong
2013-09-02 12:09 ` Baoquan He
0 siblings, 1 reply; 8+ messages in thread
From: Ding Tianhong @ 2013-09-02 9:04 UTC (permalink / raw)
To: Baoquan He; +Cc: Hillf Danton, Cong Wang, LKML, Linux Kernel Network Developers
On 2013/9/2 16:24, Baoquan He wrote:
> Hi Tianhong,
>
> I applied your patch and execute below cmd.
> Then keyboard inputting problems happened,
> I can't enter user/password correctly, then reboot again, it's OK now.
Thanks for your work, I don't understand that the keyboard problem is the patch fault or your system problem,
if it is not happen again, I think the problem is fixed.
>
> The original bug still can't be reproduced.
>
> make SUBDIRS=net/bridge/netfilter/
> cp /net/bridge/netfilter/ebtables.ko
> /lib/modules/3.11.0-rc7+/kernel/net/bridge/netfilter/ebtables.ko
> depmod
> modprobe ebtables.ko
> reboot
>
> Baoquan
> Thanks
>
>> please try this patch and give me the result, thanks.
>>
>> Return the correct value if mutex_lock_interruptible() failed, avoid
>> confusion with that the modules is not exist, and deal with the return
>> value in right way.
>>
>> if mutex_lock_interrupt() failed, sh
>>
>> Signed-off-by: root <root@linux-yocto.site>
>> ---
>> net/bridge/netfilter/ebtables.c | 17 +++++++----------
>> 1 file changed, 7 insertions(+), 10 deletions(-)
>>
>> diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
>> index ac78024..e7fe9f8 100644
>> --- a/net/bridge/netfilter/ebtables.c
>> +++ b/net/bridge/netfilter/ebtables.c
>> @@ -322,17 +322,14 @@ static inline void *
>> find_inlist_lock_noload(struct list_head *head, const char *name, int *error,
>> struct mutex *mutex)
>> {
>> - struct {
>> - struct list_head list;
>> - char name[EBT_FUNCTION_MAXNAMELEN];
>> - } *e;
>> + struct ebt_table *e;
>>
>> *error = mutex_lock_interruptible(mutex);
>> if (*error != 0)
>> - return NULL;
>> + return ERR_PTR(-EINTR);
>>
>> list_for_each_entry(e, head, list) {
>> - if (strcmp(e->name, name) == 0)
>> + if (strcmp(e->name, name) == 0 && try_module_get(e->me))
>> return e;
>> }
>> *error = -ENOENT;
>> @@ -1005,7 +1002,7 @@ static int do_replace_finish(struct net *net, struct ebt_replace *repl,
>> goto free_counterstmp;
>>
>> t = find_table_lock(net, repl->name, &ret, &ebt_mutex);
>> - if (!t) {
>> + if (IS_ERR_OR_NULL(t)) {
>> ret = -ENOENT;
>> goto free_iterate;
>> }
>> @@ -1284,7 +1281,7 @@ static int do_update_counters(struct net *net, const char *name,
>> return -ENOMEM;
>>
>> t = find_table_lock(net, name, &ret, &ebt_mutex);
>> - if (!t)
>> + if (IS_ERR_OR_NULL(t))
>> goto free_tmp;
>>
>> if (num_counters != t->private->nentries) {
>> @@ -1504,7 +1501,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
>> return -EFAULT;
>>
>> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
>> - if (!t)
>> + if (IS_ERR_OR_NULL(t))
>> return ret;
>>
>> switch(cmd) {
>> @@ -2319,7 +2316,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
>> return -EFAULT;
>>
>> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
>> - if (!t)
>> + if (IS_ERR_OR_NULL(t))
>> return ret;
>>
>> xt_compat_lock(NFPROTO_BRIDGE);
>
>
> .
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: 3.11-rc7:BUG: soft lockup
2013-09-02 9:04 ` Ding Tianhong
@ 2013-09-02 12:09 ` Baoquan He
0 siblings, 0 replies; 8+ messages in thread
From: Baoquan He @ 2013-09-02 12:09 UTC (permalink / raw)
To: Ding Tianhong
Cc: Hillf Danton, Cong Wang, LKML, Linux Kernel Network Developers
On 09/02/2013 05:04 PM, Ding Tianhong wrote:
> On 2013/9/2 16:24, Baoquan He wrote:
>> Hi Tianhong,
>>
>> I applied your patch and execute below cmd.
>> Then keyboard inputting problems happened,
>> I can't enter user/password correctly, then reboot again, it's OK now.
> Thanks for your work, I don't understand that the keyboard problem is the patch fault or your system problem,
> if it is not happen again, I think the problem is fixed.
Yeah, I will wait and see if it will happen again. Up to now, it's OK.
Thank you all for help.
Baoquan
Thanks
>
>> The original bug still can't be reproduced.
>>
>> make SUBDIRS=net/bridge/netfilter/
>> cp /net/bridge/netfilter/ebtables.ko
>> /lib/modules/3.11.0-rc7+/kernel/net/bridge/netfilter/ebtables.ko
>> depmod
>> modprobe ebtables.ko
>> reboot
>>
>> Baoquan
>> Thanks
>>
>>> please try this patch and give me the result, thanks.
>>>
>>> Return the correct value if mutex_lock_interruptible() failed, avoid
>>> confusion with that the modules is not exist, and deal with the return
>>> value in right way.
>>>
>>> if mutex_lock_interrupt() failed, sh
>>>
>>> Signed-off-by: root <root@linux-yocto.site>
>>> ---
>>> net/bridge/netfilter/ebtables.c | 17 +++++++----------
>>> 1 file changed, 7 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/net/bridge/netfilter/ebtables.c b/net/bridge/netfilter/ebtables.c
>>> index ac78024..e7fe9f8 100644
>>> --- a/net/bridge/netfilter/ebtables.c
>>> +++ b/net/bridge/netfilter/ebtables.c
>>> @@ -322,17 +322,14 @@ static inline void *
>>> find_inlist_lock_noload(struct list_head *head, const char *name, int *error,
>>> struct mutex *mutex)
>>> {
>>> - struct {
>>> - struct list_head list;
>>> - char name[EBT_FUNCTION_MAXNAMELEN];
>>> - } *e;
>>> + struct ebt_table *e;
>>>
>>> *error = mutex_lock_interruptible(mutex);
>>> if (*error != 0)
>>> - return NULL;
>>> + return ERR_PTR(-EINTR);
>>>
>>> list_for_each_entry(e, head, list) {
>>> - if (strcmp(e->name, name) == 0)
>>> + if (strcmp(e->name, name) == 0 && try_module_get(e->me))
>>> return e;
>>> }
>>> *error = -ENOENT;
>>> @@ -1005,7 +1002,7 @@ static int do_replace_finish(struct net *net, struct ebt_replace *repl,
>>> goto free_counterstmp;
>>>
>>> t = find_table_lock(net, repl->name, &ret, &ebt_mutex);
>>> - if (!t) {
>>> + if (IS_ERR_OR_NULL(t)) {
>>> ret = -ENOENT;
>>> goto free_iterate;
>>> }
>>> @@ -1284,7 +1281,7 @@ static int do_update_counters(struct net *net, const char *name,
>>> return -ENOMEM;
>>>
>>> t = find_table_lock(net, name, &ret, &ebt_mutex);
>>> - if (!t)
>>> + if (IS_ERR_OR_NULL(t))
>>> goto free_tmp;
>>>
>>> if (num_counters != t->private->nentries) {
>>> @@ -1504,7 +1501,7 @@ static int do_ebt_get_ctl(struct sock *sk, int cmd, void __user *user, int *len)
>>> return -EFAULT;
>>>
>>> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
>>> - if (!t)
>>> + if (IS_ERR_OR_NULL(t))
>>> return ret;
>>>
>>> switch(cmd) {
>>> @@ -2319,7 +2316,7 @@ static int compat_do_ebt_get_ctl(struct sock *sk, int cmd,
>>> return -EFAULT;
>>>
>>> t = find_table_lock(net, tmp.name, &ret, &ebt_mutex);
>>> - if (!t)
>>> + if (IS_ERR_OR_NULL(t))
>>> return ret;
>>>
>>> xt_compat_lock(NFPROTO_BRIDGE);
>>
>> .
>>
>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2013-09-02 12:09 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <522055D7.70002@gmail.com>
2013-08-30 12:18 ` 3.11-rc7:BUG: soft lockup Cong Wang
2013-08-31 3:25 ` Hillf Danton
2013-09-02 6:06 ` Baoquan He
2013-09-02 6:57 ` Ding Tianhong
2013-09-02 7:44 ` Ding Tianhong
2013-09-02 8:24 ` Baoquan He
2013-09-02 9:04 ` Ding Tianhong
2013-09-02 12:09 ` Baoquan He
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).