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

Commit e6eb307d authored by Chris Leech's avatar Chris Leech Committed by David S. Miller
Browse files

[I/OAT]: Remove CPU hotplug lock from net_dma_rebalance



Remove the lock_cpu_hotplug()/unlock_cpu_hotplug() calls from
net_dma_rebalance

The lock_cpu_hotplug()/unlock_cpu_hotplug() sequence in
net_dma_rebalance is both incorrect (as pointed out by David Miller)
because lock_cpu_hotplug() may sleep while the net_dma_event_lock
spinlock is held, and unnecessary (as pointed out by Andrew Morton) as
spin_lock() disables preemption which protects from CPU hotplug
events.

Signed-off-by: default avatarChris Leech <christopher.leech@intel.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9bbf28a1
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -3419,12 +3419,9 @@ static void net_dma_rebalance(void)
	unsigned int cpu, i, n;
	struct dma_chan *chan;

	lock_cpu_hotplug();

	if (net_dma_count == 0) {
		for_each_online_cpu(cpu)
			rcu_assign_pointer(per_cpu(softnet_data.net_dma, cpu), NULL);
		unlock_cpu_hotplug();
		return;
	}

@@ -3444,8 +3441,6 @@ static void net_dma_rebalance(void)
		i++;
	}
	rcu_read_unlock();

	unlock_cpu_hotplug();
}

/**