mirror of https://gitee.com/openkylin/linux.git
RDMA/i40iw: Fix a race condition
Use the proper primitives to dereference the RCU pointer upper_dev->ip_ptr. Compile-tested only. Signed-off-by: Bart Van Assche <bart.vanassche@wdc.com> Reviewed-by: Shiraz Saleem <shiraz.saleem@intel.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
d61d6de074
commit
b965b51c55
|
@ -168,11 +168,16 @@ int i40iw_inetaddr_event(struct notifier_block *notifier,
|
|||
if (netdev != event_netdev)
|
||||
return NOTIFY_DONE;
|
||||
|
||||
if (upper_dev)
|
||||
local_ipaddr = ntohl(
|
||||
((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);
|
||||
local_ipaddr = ntohl(in->ifa_list->ifa_address);
|
||||
rcu_read_unlock();
|
||||
} else {
|
||||
local_ipaddr = ntohl(ifa->ifa_address);
|
||||
}
|
||||
switch (event) {
|
||||
case NETDEV_DOWN:
|
||||
action = I40IW_ARP_DELETE;
|
||||
|
|
Loading…
Reference in New Issue