Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1363663 > unrolled thread
| Started by | Haiyang Zhang <haiyangz@microsoft.com> |
|---|---|
| First post | 2016-03-23 21:20 +0100 |
| Last post | 2016-03-24 03:00 +0100 |
| Articles | 2 — 2 participants |
Back to article view | Back to linux.kernel
[PATCH net-next] hv_netvsc: Fix the order of num_sc_offered decrement Haiyang Zhang <haiyangz@microsoft.com> - 2016-03-23 21:20 +0100
Re: [PATCH net-next] hv_netvsc: Fix the order of num_sc_offered decrement David Miller <davem@davemloft.net> - 2016-03-24 03:00 +0100
| From | Haiyang Zhang <haiyangz@microsoft.com> |
|---|---|
| Date | 2016-03-23 21:20 +0100 |
| Subject | [PATCH net-next] hv_netvsc: Fix the order of num_sc_offered decrement |
| Message-ID | <rfXq2-b9-19@gated-at.bofh.it> |
Reorder the code in netvsc_sc_open(), so num_sc_offered is only decremented after vmbus_open() is called. This avoid pontential race of removing device before all channels are setup. Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com> Reviewed-by: K. Y. Srinivasan <kys@microsoft.com> --- drivers/net/hyperv/rndis_filter.c | 12 ++++++------ 1 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c index d5a54da..c4e1e04 100644 --- a/drivers/net/hyperv/rndis_filter.c +++ b/drivers/net/hyperv/rndis_filter.c @@ -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, -- 1.7.4.1
[toc] | [next] | [standalone]
| From | David Miller <davem@davemloft.net> |
|---|---|
| Date | 2016-03-24 03:00 +0100 |
| Subject | Re: [PATCH net-next] hv_netvsc: Fix the order of num_sc_offered decrement |
| Message-ID | <rg2J4-3GP-1@gated-at.bofh.it> |
| In reply to | #1363663 |
From: Haiyang Zhang <haiyangz@microsoft.com> Date: Wed, 23 Mar 2016 14:54:48 -0700 > Reorder the code in netvsc_sc_open(), so num_sc_offered is only decremented > after vmbus_open() is called. This avoid pontential race of removing device > before all channels are setup. > > Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com> > Reviewed-by: K. Y. Srinivasan <kys@microsoft.com> Applied, thanks.
[toc] | [prev] | [standalone]
Back to top | Article view | linux.kernel
csiph-web