Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b965b51c authored by Bart Van Assche's avatar Bart Van Assche Committed by Doug Ledford
Browse files

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: default avatarBart Van Assche <bart.vanassche@wdc.com>
Reviewed-by: default avatarShiraz Saleem <shiraz.saleem@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent d61d6de0
Loading
Loading
Loading
Loading
+9 −4
Original line number Diff line number Diff line
@@ -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;