On Thu, Oct 12, 2017 at 7:03 PM, kernel test robot
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):
>
>
> +---+++
> | | 38fbcc |
> 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: []
> ip6_datagram_connect+0x1d/0x3f
> [ 19.855480] #1: (&tb->tb6_lock){++--}, at: []
> 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:ffc94db8 EFLAGS: 0296 ORIG_RAX:
> 0066
> [ 19.891958] RAX: ffda RBX: 0003 RCX:
> ffc94dc8
> [ 19.893475] RDX: f7fa4000 RSI: ffc94dc8 RDI:
> ffc94ee0
> [ 19.894946] RBP: ffc94e28 R08: R09:
>
> [ 19.896454] R10: R11: R12:
>
> [ 19.897968] R13: R14: R15:
>
> [ 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: a024549f0040 task.stack: aee58081
> [ 19.909644] RIP: 0010:__rt6_find_exception_rcu+0x1b/0x7b
> [ 19.910973] RSP: :aee580813af0 EFLAGS: 00010246
> [ 19.912231] RAX: RBX: aee580813cf0 RCX:
> 0001
> [ 19.913783] RDX: RSI: 9b47f900 RDI: