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 */
|
/* fall through */
|
||||||
case NETDEV_CHANGEADDR:
|
case NETDEV_CHANGEADDR:
|
||||||
/* Add the address to the IP table */
|
/* Add the address to the IP table */
|
||||||
if (upper_dev)
|
if (upper_dev) {
|
||||||
nesvnic->local_ipaddr =
|
struct in_device *in;
|
||||||
((struct in_device *)upper_dev->ip_ptr)->ifa_list->ifa_address;
|
|
||||||
else
|
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;
|
nesvnic->local_ipaddr = ifa->ifa_address;
|
||||||
|
}
|
||||||
|
|
||||||
nes_write_indexed(nesdev,
|
nes_write_indexed(nesdev,
|
||||||
NES_IDX_DST_IP_ADDR+(0x10*PCI_FUNC(nesdev->pcidev->devfn)),
|
NES_IDX_DST_IP_ADDR+(0x10*PCI_FUNC(nesdev->pcidev->devfn)),
|
||||||
|
|
Loading…
Reference in New Issue