Message ID | 20180928144123.11926-1-haiyangz@linuxonhyperv.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
Series | [net-next] hv_netvsc: Fix rndis_per_packet_info internal field initialization | expand |
From: Haiyang Zhang <haiyangz@linuxonhyperv.com> Date: Fri, 28 Sep 2018 14:41:23 +0000 > From: Haiyang Zhang <haiyangz@microsoft.com> > > The RSC feature -- a bit field "internal" was added here with total > size unchanged: > struct rndis_per_packet_info { > u32 size; > u32 type:31; > u32 internal:1; > u32 ppi_offset; > }; > > On TX path, we put rndis msg into skb head room, which is not zeroed > before passing to us. We do not use the "internal" field in TX path, > but it may impact older hosts which use the entire 32 bits as "type". > > To fix the bug, this patch sets the field "internal" to zero. > > Fixes: c8e4eff4675f ("hv_netvsc: Add support for LRO/RSC in the vSwitch") > Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com> Applied.
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index ec699741170b..005cbaa2fa3b 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -226,6 +226,7 @@ static inline void *init_ppi_data(struct rndis_message *msg, ppi->size = ppi_size; ppi->type = pkt_type; + ppi->internal = 0; ppi->ppi_offset = sizeof(struct rndis_per_packet_info); rndis_pkt->per_pkt_info_len += ppi_size;