• Qian Cai's avatar
    ipv4: fix a RCU-list lock in inet_dump_fib() · dddeb30b
    Qian Cai authored
    There is a place,
    
    inet_dump_fib()
      fib_table_dump
        fn_trie_dump_leaf()
          hlist_for_each_entry_rcu()
    
    without rcu_read_lock() will trigger a warning,
    
     WARNING: suspicious RCU usage
     -----------------------------
     net/ipv4/fib_trie.c:2216 RCU-list traversed in non-reader section!!
    
     other info that might help us debug this:
    
     rcu_scheduler_active = 2, debug_locks = 1
     1 lock held by ip/1923:
      #0: ffffffff8ce76e40 (rtnl_mutex){+.+.}, at: netlink_dump+0xd6/0x840
    
     Call Trace:
      dump_stack+0xa1/0xea
      lockdep_rcu_suspicious+0x103/0x10d
      fn_trie_dump_leaf+0x581/0x590
      fib_table_dump+0x15f/0x220
      inet_dump_fib+0x4ad/0x5d0
      netlink_dump+0x350/0x840
      __netlink_dump_start+0x315/0x3e0
      rtnetlink_rcv_msg+0x4d1/0x720
      netlink_rcv_skb+0xf0/0x220
      rtnetlink_rcv+0x15/0x20
      netlink_unicast+0x306/0x460
      netlink_sendmsg+0x44b/0x770
      __sys_sendto+0x259/0x270
      __x64_sys_sendto+0x80/0xa0
      do_syscall_64+0x69/0xf4
      entry_SYSCALL_64_after_hwframe+0x49/0xb3
    
    Fixes: 18a8021a ("net/ipv4: Plumb support for filtering route dumps")
    Signed-off-by: default avatarQian Cai <cai@lca.pw>
    Reviewed-by: default avatarDavid Ahern <dsahern@gmail.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    dddeb30b
fib_frontend.c 38.6 KB