diff options
Diffstat (limited to 'include/linux/virtio_net.h')
| -rw-r--r-- | include/linux/virtio_net.h | 6 | 
1 files changed, 4 insertions, 2 deletions
diff --git a/include/linux/virtio_net.h b/include/linux/virtio_net.h index 66204007d7ac..5209b5ed2a64 100644 --- a/include/linux/virtio_net.h +++ b/include/linux/virtio_net.h @@ -56,7 +56,8 @@ static inline int virtio_net_hdr_to_skb(struct sk_buff *skb,  static inline int virtio_net_hdr_from_skb(const struct sk_buff *skb,  					  struct virtio_net_hdr *hdr, -					  bool little_endian) +					  bool little_endian, +					  bool has_data_valid)  {  	memset(hdr, 0, sizeof(*hdr));   /* no info leak */ @@ -91,7 +92,8 @@ static inline int virtio_net_hdr_from_skb(const struct sk_buff *skb,  				skb_checksum_start_offset(skb));  		hdr->csum_offset = __cpu_to_virtio16(little_endian,  				skb->csum_offset); -	} else if (skb->ip_summed == CHECKSUM_UNNECESSARY) { +	} else if (has_data_valid && +		   skb->ip_summed == CHECKSUM_UNNECESSARY) {  		hdr->flags = VIRTIO_NET_HDR_F_DATA_VALID;  	} /* else everything is zero */  | 
