From d68f69e2d7653a90935dbcdef192a7ad25d7edd4 Mon Sep 17 00:00:00 2001 From: Vivek Yadav Date: Sat, 16 Apr 2016 22:36:13 -0700 Subject: [PATCH] RH6 : hv_netvsc: Fix the order of num_sc_offered decrement --- hv-rhel6.x/hv/rndis_filter.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/hv-rhel6.x/hv/rndis_filter.c b/hv-rhel6.x/hv/rndis_filter.c index 997597acd..8c751aa50 100644 --- a/hv-rhel6.x/hv/rndis_filter.c +++ b/hv-rhel6.x/hv/rndis_filter.c @@ -997,12 +997,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; @@ -1015,6 +1009,14 @@ 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,