diff --git a/net/netrom/nr_route.c b/net/netrom/nr_route.c index b94cb2ffbaf8..aa72c4db2be4 100644 --- a/net/netrom/nr_route.c +++ b/net/netrom/nr_route.c @@ -242,11 +242,12 @@ static int __must_check nr_add_node(ax25_address *nr, const char *mnemonic, } else { /* It must be better than the worst */ if (quality > nr_node->routes[2].quality) { - nr_node->routes[2].neighbour->count--; - nr_neigh_put(nr_node->routes[2].neighbour); + struct nr_neigh *old_neighbour = nr_node->routes[2].neighbour; + old_neighbour->count--; + nr_neigh_put(old_neighbour); - if (nr_node->routes[2].neighbour->count == 0 && !nr_node->routes[2].neighbour->locked) - nr_remove_neigh(nr_node->routes[2].neighbour); + if (old_neighbour->count == 0 && !old_neighbour->locked) + nr_remove_neigh(old_neighbour); nr_node->routes[2].quality = quality; nr_node->routes[2].obs_count = obs_count;