|
@@ -986,12 +986,6 @@ static void netvsc_sc_open(struct vmbus_channel *new_sc)
|
|
|
|
|
|
nvscdev = hv_get_drvdata(new_sc->primary_channel->device_obj);
|
|
|
|
|
|
- spin_lock_irqsave(&nvscdev->sc_lock, flags);
|
|
|
- nvscdev->num_sc_offered--;
|
|
|
- spin_unlock_irqrestore(&nvscdev->sc_lock, flags);
|
|
|
- if (nvscdev->num_sc_offered == 0)
|
|
|
- complete(&nvscdev->channel_init_wait);
|
|
|
-
|
|
|
if (chn_index >= nvscdev->num_chn)
|
|
|
return;
|
|
|
|
|
@@ -1004,6 +998,12 @@ static void netvsc_sc_open(struct vmbus_channel *new_sc)
|
|
|
|
|
|
if (ret == 0)
|
|
|
nvscdev->chn_table[chn_index] = new_sc;
|
|
|
+
|
|
|
+ spin_lock_irqsave(&nvscdev->sc_lock, flags);
|
|
|
+ nvscdev->num_sc_offered--;
|
|
|
+ spin_unlock_irqrestore(&nvscdev->sc_lock, flags);
|
|
|
+ if (nvscdev->num_sc_offered == 0)
|
|
|
+ complete(&nvscdev->channel_init_wait);
|
|
|
}
|
|
|
|
|
|
int rndis_filter_device_add(struct hv_device *dev,
|