• Wei Wang's avatar
    ipv6: check fn->leaf before it is used · 8d1040e8
    Wei Wang authored
    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: default avatarWei Wang <weiwan@google.com>
    Signed-off-by: default avatarMartin KaFai Lau <kafai@fb.com>
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    8d1040e8
route.c 117 KB