• W
    ipv6: check fn->leaf before it is used · 8d1040e8
    Wei Wang 提交于
    If rwlock is replaced with rcu and spinlock, it is possible that the
    reader thread will see fn->leaf as NULL in the following scenarios:
    1. fib6_add() is in progress and we have already inserted a new node but
    not yet inserted the route.
    2. fib6_del_route() is in progress and we have already set fn->leaf to
    NULL but not yet freed the node because of rcu grace period.
    
    This patch makes sure all the reader threads check fn->leaf first before
    using it. And together with later patch to grab rcu_read_lock() and
    rcu_dereference() fn->leaf, it makes sure reader threads are safe when
    accessing fn->leaf.
    Signed-off-by: NWei Wang <weiwan@google.com>
    Signed-off-by: NMartin KaFai Lau <kafai@fb.com>
    Signed-off-by: NEric Dumazet <edumazet@google.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    8d1040e8
route.c 117.1 KB