IB/nes: Fix a race condition in nes_inetaddr_event()
This patch has been compile-tested only. Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Cc: Faisal Latif <faisal.latif@intel.com> Acked-by: Faisal Latif <fasial.latif@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
fd9e04d6d2
commit
52adbb6914
|
@ -178,11 +178,16 @@ static int nes_inetaddr_event(struct notifier_block *notifier,
|
|||
/* fall through */
|
||||
case NETDEV_CHANGEADDR:
|
||||
/* Add the address to the IP table */
|
||||
if (upper_dev)
|
||||
nesvnic->local_ipaddr =
|
||||
((struct in_device *)upper_dev->ip_ptr)->ifa_list->ifa_address;
|
||||
else
|
||||
if (upper_dev) {
|
||||
struct in_device *in;
|
||||
|
||||
rcu_read_lock();
|
||||
in = __in_dev_get_rcu(upper_dev);
|
||||
nesvnic->local_ipaddr = in->ifa_list->ifa_address;
|
||||
rcu_read_unlock();
|
||||
} else {
|
||||
nesvnic->local_ipaddr = ifa->ifa_address;
|
||||
}
|
||||
|
||||
nes_write_indexed(nesdev,
|
||||
NES_IDX_DST_IP_ADDR+(0x10*PCI_FUNC(nesdev->pcidev->devfn)),
|
||||
|
|
Loading…
Reference in New Issue