• Pavel Emelianov's avatar
    [NET]: Set a separate lockdep class for neighbour table's proxy_queue · c2ecba71
    Pavel Emelianov authored
    Otherwise the following calltrace will lead to a wrong
    lockdep warning:
    
      neigh_proxy_process()
        `- lock(neigh_table->proxy_queue.lock);
      arp_redo /* via tbl->proxy_redo */
      arp_process
      neigh_event_ns
      neigh_update
      skb_queue_purge
        `- lock(neighbor->arp_queue.lock);
    
    This is not a deadlock actually, as neighbor table's proxy_queue
    and the neighbor's arp_queue are different queues.
    
    Lockdep thinks there is a deadlock as both queues are initialized
    with skb_queue_head_init() and thus have a common class.
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c2ecba71
neighbour.c 64.6 KB