diff options
Diffstat (limited to 'drivers/infiniband/hw/nes/nes_cm.c')
| -rw-r--r-- | drivers/infiniband/hw/nes/nes_cm.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/drivers/infiniband/hw/nes/nes_cm.c b/drivers/infiniband/hw/nes/nes_cm.c index a4972abedef..c5e4cb2d322 100644 --- a/drivers/infiniband/hw/nes/nes_cm.c +++ b/drivers/infiniband/hw/nes/nes_cm.c @@ -1351,8 +1351,9 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi  	else  		netdev = nesvnic->netdev; +	neigh = dst_neigh_lookup(&rt->dst, &dst_ip); +  	rcu_read_lock(); -	neigh = dst_get_neighbour_noref(&rt->dst);  	if (neigh) {  		if (neigh->nud_state & NUD_VALID) {  			nes_debug(NES_DBG_CM, "Neighbor MAC address for 0x%08X" @@ -1379,9 +1380,12 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi  			neigh_event_send(neigh, NULL);  		}  	} -  out:  	rcu_read_unlock(); + +	if (neigh) +		neigh_release(neigh); +  	ip_rt_put(rt);  	return rc;  }  |