diff options
Diffstat (limited to 'drivers/net/virtio_net.c')
-rw-r--r-- | drivers/net/virtio_net.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 113ee93dbb2e..656a02e28e26 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c | |||
@@ -1160,11 +1160,6 @@ static int virtnet_cpu_callback(struct notifier_block *nfb, | |||
1160 | { | 1160 | { |
1161 | struct virtnet_info *vi = container_of(nfb, struct virtnet_info, nb); | 1161 | struct virtnet_info *vi = container_of(nfb, struct virtnet_info, nb); |
1162 | 1162 | ||
1163 | mutex_lock(&vi->config_lock); | ||
1164 | |||
1165 | if (!vi->config_enable) | ||
1166 | goto done; | ||
1167 | |||
1168 | switch(action & ~CPU_TASKS_FROZEN) { | 1163 | switch(action & ~CPU_TASKS_FROZEN) { |
1169 | case CPU_ONLINE: | 1164 | case CPU_ONLINE: |
1170 | case CPU_DOWN_FAILED: | 1165 | case CPU_DOWN_FAILED: |
@@ -1178,8 +1173,6 @@ static int virtnet_cpu_callback(struct notifier_block *nfb, | |||
1178 | break; | 1173 | break; |
1179 | } | 1174 | } |
1180 | 1175 | ||
1181 | done: | ||
1182 | mutex_unlock(&vi->config_lock); | ||
1183 | return NOTIFY_OK; | 1176 | return NOTIFY_OK; |
1184 | } | 1177 | } |
1185 | 1178 | ||
@@ -1747,6 +1740,8 @@ static int virtnet_freeze(struct virtio_device *vdev) | |||
1747 | struct virtnet_info *vi = vdev->priv; | 1740 | struct virtnet_info *vi = vdev->priv; |
1748 | int i; | 1741 | int i; |
1749 | 1742 | ||
1743 | unregister_hotcpu_notifier(&vi->nb); | ||
1744 | |||
1750 | /* Prevent config work handler from accessing the device */ | 1745 | /* Prevent config work handler from accessing the device */ |
1751 | mutex_lock(&vi->config_lock); | 1746 | mutex_lock(&vi->config_lock); |
1752 | vi->config_enable = false; | 1747 | vi->config_enable = false; |
@@ -1795,6 +1790,10 @@ static int virtnet_restore(struct virtio_device *vdev) | |||
1795 | virtnet_set_queues(vi, vi->curr_queue_pairs); | 1790 | virtnet_set_queues(vi, vi->curr_queue_pairs); |
1796 | rtnl_unlock(); | 1791 | rtnl_unlock(); |
1797 | 1792 | ||
1793 | err = register_hotcpu_notifier(&vi->nb); | ||
1794 | if (err) | ||
1795 | return err; | ||
1796 | |||
1798 | return 0; | 1797 | return 0; |
1799 | } | 1798 | } |
1800 | #endif | 1799 | #endif |