[I/OAT]: Remove CPU hotplug lock from net_dma_rebalance
authorChris Leech <christopher.leech@intel.com>
Wed, 2 Aug 2006 21:21:19 +0000 (14:21 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 2 Aug 2006 21:21:19 +0000 (14:21 -0700)
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: Chris Leech <christopher.leech@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c

index 5b630ce..f25d7ec 100644 (file)
@@ -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();
 }
 
 /**