Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1288845

[PATCH net-next] hv_netvsc: Fix race condition on Multi-Send Data field

From Haiyang Zhang <haiyangz@microsoft.com>
Newsgroups linux.kernel
Subject [PATCH net-next] hv_netvsc: Fix race condition on Multi-Send Data field
Date 2015-12-10 20:00 +0100
Message-ID <qEeBD-1xO-93@gated-at.bofh.it> (permalink)
Organization linux.* mail to news gateway

Show all headers | View raw


In commit 2a04ae8acb14 ("hv_netvsc: remove locking in netvsc_send()"), the
locking for MSD (Multi-Send Data) field was removed. This could cause a
race condition between RNDIS control messages and data packets processing,
because these two types of traffic are not synchronized.
This patch fixes this issue by sending control messages out directly
without reading MSD field.

Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Reviewed-by: K. Y. Srinivasan <kys@microsoft.com>
---
 drivers/net/hyperv/netvsc.c |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c
index 02bab9a..059fc52 100644
--- a/drivers/net/hyperv/netvsc.c
+++ b/drivers/net/hyperv/netvsc.c
@@ -867,6 +867,14 @@ int netvsc_send(struct hv_device *device,
 	packet->send_buf_index = NETVSC_INVALID_INDEX;
 	packet->cp_partial = false;
 
+	/* Send control message directly without accessing msd (Multi-Send
+	 * Data) field which may be changed during data packet processing.
+	 */
+	if (!skb) {
+		cur_send = packet;
+		goto send_now;
+	}
+
 	msdp = &net_device->msd[q_idx];
 
 	/* batch packets in send buffer if possible */
@@ -939,6 +947,7 @@ int netvsc_send(struct hv_device *device,
 		}
 	}
 
+send_now:
 	if (cur_send)
 		ret = netvsc_send_pkt(cur_send, net_device, pb, skb);
 
-- 
1.7.4.1

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Back to linux.kernel | Previous | NextNext in thread | Find similar | Unroll thread


Thread

[PATCH net-next] hv_netvsc: Fix race condition on Multi-Send Data field Haiyang Zhang <haiyangz@microsoft.com> - 2015-12-10 20:00 +0100
  Re: [PATCH net-next] hv_netvsc: Fix race condition on Multi-Send Data field Vitaly Kuznetsov <vkuznets@redhat.com> - 2015-12-11 13:40 +0100
    Re: [PATCH net-next] hv_netvsc: Fix race condition on Multi-Send Data field Vitaly Kuznetsov <vkuznets@redhat.com> - 2015-12-11 15:00 +0100
      RE: [PATCH net-next] hv_netvsc: Fix race condition on Multi-Send Data  field Haiyang Zhang <haiyangz@microsoft.com> - 2015-12-11 17:00 +0100
      RE: [PATCH net-next] hv_netvsc: Fix race condition on Multi-Send Data  field KY Srinivasan <kys@microsoft.com> - 2015-12-11 17:10 +0100

csiph-web