• Wei Wang's avatar
    ipv6: use rcu_dereference_bh() in ipv6_route_seq_next() · d0e60206
    Wei Wang authored
    This patch replaces rcu_deference() with rcu_dereference_bh() in
    ipv6_route_seq_next() to avoid the following warning:
    
    [   19.431685] WARNING: suspicious RCU usage
    [   19.433451] 4.14.0-rc3-00914-g66f5d6ce #118 Not tainted
    [   19.435509] -----------------------------
    [   19.437267] net/ipv6/ip6_fib.c:2259 suspicious
    rcu_dereference_check() usage!
    [   19.440790]
    [   19.440790] other info that might help us debug this:
    [   19.440790]
    [   19.444734]
    [   19.444734] rcu_scheduler_active = 2, debug_locks = 1
    [   19.447757] 2 locks held by odhcpd/3720:
    [   19.449480]  #0:  (&p->lock){+.+.}, at: [<ffffffffb1231f7d>]
    seq_read+0x3c/0x333
    [   19.452720]  #1:  (rcu_read_lock_bh){....}, at: [<ffffffffb1d2b984>]
    ipv6_route_seq_start+0x5/0xfd
    [   19.456323]
    [   19.456323] stack backtrace:
    [   19.458812] CPU: 0 PID: 3720 Comm: odhcpd Not tainted
    4.14.0-rc3-00914-g66f5d6ce #118
    [   19.462042] Hardware name: QEMU Standard PC (i440FX + PIIX, 1996),
    BIOS 1.10.2-1 04/01/2014
    [   19.465414] Call Trace:
    [   19.466788]  dump_stack+0x86/0xc0
    [   19.468358]  lockdep_rcu_suspicious+0xea/0xf3
    [   19.470183]  ipv6_route_seq_next+0x71/0x164
    [   19.471963]  seq_read+0x244/0x333
    [   19.473522]  proc_reg_read+0x48/0x67
    [   19.475152]  ? proc_reg_write+0x67/0x67
    [   19.476862]  __vfs_read+0x26/0x10b
    [   19.478463]  ? __might_fault+0x37/0x84
    [   19.480148]  vfs_read+0xba/0x146
    [   19.481690]  SyS_read+0x51/0x8e
    [   19.483197]  do_int80_syscall_32+0x66/0x15a
    [   19.484969]  entry_INT80_compat+0x32/0x50
    [   19.486707] RIP: 0023:0xf7f0be8e
    [   19.488244] RSP: 002b:00000000ffa75d04 EFLAGS: 00000246 ORIG_RAX:
    0000000000000003
    [   19.491431] RAX: ffffffffffffffda RBX: 0000000000000009 RCX:
    0000000008056068
    [   19.493886] RDX: 0000000000001000 RSI: 0000000008056008 RDI:
    0000000000001000
    [   19.496331] RBP: 00000000000001ff R08: 0000000000000000 R09:
    0000000000000000
    [   19.498768] R10: 0000000000000000 R11: 0000000000000000 R12:
    0000000000000000
    [   19.501217] R13: 0000000000000000 R14: 0000000000000000 R15:
    0000000000000000
    
    Fixes: 66f5d6ce ("ipv6: replace rwlock with rcu and spinlock in fib6_table")
    Reported-by: default avatarXiaolong Ye <xiaolong.ye@intel.com>
    Signed-off-by: default avatarWei Wang <weiwan@google.com>
    Acked-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    d0e60206
ip6_fib.c 53.4 KB