Re: [lkp-robot] [ipv6] 2b760fcf5c: WARNING:suspicious_RCU_usage

From: Wei Wang
Date: Fri Oct 13 2017 - 01:09:20 EST


On Thu, Oct 12, 2017 at 7:03 PM, kernel test robot
<xiaolong.ye@xxxxxxxxx> wrote:
>
> FYI, we noticed the following commit (built with gcc-6):
>
> commit: 2b760fcf5cfb34e8610df56d83745b2b74ae1379 ("ipv6: hook up exception table to store dst cache")
> https://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git master
>
> in testcase: boot
>
> on test machine: qemu-system-x86_64 -enable-kvm -m 420M
>
> caused below changes (please refer to attached dmesg/kmsg for entire log/backtrace):
>
>
> +-----------------------------------------------------------+------------+------------+
> | | 38fbeeeecc | 2b760fcf5c |
> +-----------------------------------------------------------+------------+------------+
> | boot_successes | 6 | 2 |
> | boot_failures | 2 | 32 |
> | BUG:kernel_hang_in_test_stage | 2 | |
> | WARNING:suspicious_RCU_usage | 0 | 32 |
> | net/ipv6/route.c:#suspicious_rcu_dereference_check()usage | 0 | 32 |
> | WARNING:at_net/ipv6/route.c:#__rt6_find_exception_rcu | 0 | 32 |
> +-----------------------------------------------------------+------------+------------+
>
>

This warning should be fixed by later commit 66f5d6ce53e6 ("ipv6:
replace rwlock with rcu and spinlock in fib6_table").
But by this commit, rcu is not yet used in ip6_pol_route(). (Sorry
that I missed this earlier.) Not sure what to do here to fix this
particular warning for this commit.

> [ 19.842463] WARNING: suspicious RCU usage
> [ 19.843540] 4.14.0-rc3-00907-g2b760fc #58 Not tainted
> [ 19.844776] -----------------------------
> [ 19.845854] net/ipv6/route.c:1355 suspicious rcu_dereference_check() usage!
> [ 19.847961]
> [ 19.847961] other info that might help us debug this:
> [ 19.847961]
> [ 19.850409]
> [ 19.850409] rcu_scheduler_active = 2, debug_locks = 1
> [ 19.852220] 2 locks held by odhcpd/3695:
> [ 19.853285] #0: (sk_lock-AF_INET6){+.+.}, at: [<ffffffff9ad44243>] ip6_datagram_connect+0x1d/0x3f
> [ 19.855480] #1: (&tb->tb6_lock){++--}, at: [<ffffffff9ad267e6>] ip6_pol_route+0x51/0x80c
> [ 19.857583]
> [ 19.857583] stack backtrace:
> [ 19.859115] CPU: 0 PID: 3695 Comm: odhcpd Not tainted 4.14.0-rc3-00907-g2b760fc #58
> [ 19.861087] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
> [ 19.863123] Call Trace:
> [ 19.863963] dump_stack+0x86/0xc0
> [ 19.864926] lockdep_rcu_suspicious+0xea/0xf3
> [ 19.866031] rt6_find_cached_rt+0x51/0x84
> [ 19.867173] ip6_pol_route+0x21c/0x80c
> [ 19.868199] ip6_pol_route_output+0x16/0x18
> [ 19.869287] fib6_rule_lookup+0x1e/0x55
> [ 19.870307] ip6_route_output_flags+0xb6/0xc2
> [ 19.871410] ip6_dst_lookup_tail+0x4f/0x194
> [ 19.872500] ip6_dst_lookup_flow+0x38/0x78
> [ 19.873562] ip6_datagram_dst_update+0x254/0x482
> [ 19.874690] ? save_stack_trace+0x1b/0x1d
> [ 19.875760] __ip6_datagram_connect+0x20e/0x299
> [ 19.876881] ? __ip6_datagram_connect+0x20e/0x299
> [ 19.878054] ip6_datagram_connect+0x2b/0x3f
> [ 19.879160] ip6_datagram_connect_v6_only+0x14/0x1c
> [ 19.880348] inet_dgram_connect+0x49/0x68
> [ 19.881424] SyS_connect+0x74/0xa1
> [ 19.882424] ? __might_fault+0x7e/0x84
> [ 19.883495] ? _copy_from_user+0x61/0x82
> [ 19.884531] compat_SyS_socketcall+0xfb/0x1fd
> [ 19.885644] ? trace_hardirqs_on_caller+0x17b/0x197
> [ 19.886868] do_int80_syscall_32+0x66/0x15a
> [ 19.887979] entry_INT80_compat+0x32/0x50
> [ 19.889037] RIP: 0023:0xf7f5e384
> [ 19.889985] RSP: 002b:00000000ffc94db8 EFLAGS: 00000296 ORIG_RAX: 0000000000000066
> [ 19.891958] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00000000ffc94dc8
> [ 19.893475] RDX: 00000000f7fa4000 RSI: 00000000ffc94dc8 RDI: 00000000ffc94ee0
> [ 19.894946] RBP: 00000000ffc94e28 R08: 0000000000000000 R09: 0000000000000000
> [ 19.896454] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
> [ 19.897968] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
> [ 19.899594] ------------[ cut here ]------------
> [ 19.900775] WARNING: CPU: 0 PID: 3695 at net/ipv6/route.c:1208 __rt6_find_exception_rcu+0x1b/0x7b
> [ 19.903220] Modules linked in:
> [ 19.904172] CPU: 0 PID: 3695 Comm: odhcpd Not tainted 4.14.0-rc3-00907-g2b760fc #58
> [ 19.906147] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.10.2-1 04/01/2014
> [ 19.908263] task: ffffa024549f0040 task.stack: ffffaee580810000
> [ 19.909644] RIP: 0010:__rt6_find_exception_rcu+0x1b/0x7b
> [ 19.910973] RSP: 0000:ffffaee580813af0 EFLAGS: 00010246
> [ 19.912231] RAX: 0000000000000000 RBX: ffffaee580813cf0 RCX: 0000000000000001
> [ 19.913783] RDX: 0000000000000000 RSI: ffffffff9b47f900 RDI: 0000000000000246
> [ 19.915338] RBP: ffffaee580813b00 R08: 000000066508ab1f R09: 0000000000000001
> [ 19.916847] R10: 0000000000000000 R11: ffffffff9c615d07 R12: ffffaee580813b10
> [ 19.918378] R13: ffffaee580813cc8 R14: ffffffff9b5b9c00 R15: 0000000000000001
> [ 19.919927] FS: 0000000000000000(0000) GS:ffffa02459e00000(0063) knlGS:00000000f7fd8690
> [ 19.922000] CS: 0010 DS: 002b ES: 002b CR0: 0000000080050033
> [ 19.923380] CR2: 0000000008072f50 CR3: 00000000155eb000 CR4: 00000000000006f0
> [ 19.924900] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000
> [ 19.926432] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400
> [ 19.927984] Call Trace:
> [ 19.928865] rt6_find_cached_rt+0x61/0x84
> [ 19.930039] ip6_pol_route+0x21c/0x80c
> [ 19.931092] ip6_pol_route_output+0x16/0x18
> [ 19.932201] fib6_rule_lookup+0x1e/0x55
> [ 19.933277] ip6_route_output_flags+0xb6/0xc2
> [ 19.934439] ip6_dst_lookup_tail+0x4f/0x194
> [ 19.935543] ip6_dst_lookup_flow+0x38/0x78
> [ 19.936617] ip6_datagram_dst_update+0x254/0x482
> [ 19.937799] ? save_stack_trace+0x1b/0x1d
> [ 19.938924] __ip6_datagram_connect+0x20e/0x299
> [ 19.940095] ? __ip6_datagram_connect+0x20e/0x299
> [ 19.941286] ip6_datagram_connect+0x2b/0x3f
> [ 19.942395] ip6_datagram_connect_v6_only+0x14/0x1c
> [ 19.943604] inet_dgram_connect+0x49/0x68
> [ 19.944673] SyS_connect+0x74/0xa1
> [ 19.945696] ? __might_fault+0x7e/0x84
> [ 19.946774] ? _copy_from_user+0x61/0x82
> [ 19.947851] compat_SyS_socketcall+0xfb/0x1fd
> [ 19.948968] ? trace_hardirqs_on_caller+0x17b/0x197
> [ 19.950155] do_int80_syscall_32+0x66/0x15a
> [ 19.951261] entry_INT80_compat+0x32/0x50
> [ 19.952327] RIP: 0023:0xf7f5e384
> [ 19.953284] RSP: 002b:00000000ffc94db8 EFLAGS: 00000296 ORIG_RAX: 0000000000000066
> [ 19.955272] RAX: ffffffffffffffda RBX: 0000000000000003 RCX: 00000000ffc94dc8
> [ 19.956794] RDX: 00000000f7fa4000 RSI: 00000000ffc94dc8 RDI: 00000000ffc94ee0
> [ 19.958322] RBP: 00000000ffc94e28 R08: 0000000000000000 R09: 0000000000000000
> [ 19.959821] R10: 0000000000000000 R11: 0000000000000000 R12: 0000000000000000
> [ 19.961360] R13: 0000000000000000 R14: 0000000000000000 R15: 0000000000000000
> [ 19.962902] Code: c9 08 5b 29 c8 5d 69 c0 47 86 c8 61 c1 e8 16 c3 0f 1f 44 00 00 55 48 89 e5 41 54 49 89 fc 53 48 89 f3 e8 47 76 3e ff 85 c0 75 02 <0f> ff 49 83 3c 24 00 74 05 48 85 db 75 04 31 c0 eb 49 48 89 df
> [ 19.967235] ---[ end trace 3bb578fee2b944dc ]---
>
>
> To reproduce:
>
> git clone https://github.com/intel/lkp-tests.git
> cd lkp-tests
> bin/lkp qemu -k <bzImage> job-script # job-script is attached in this email
>
>
>
> Thanks,
> Xiaolong