@@ -230,6 +230,8 @@ struct packet_skb_cb {
230
230
} sa ;
231
231
};
232
232
233
+ #define vio_le () virtio_legacy_is_little_endian()
234
+
233
235
#define PACKET_SKB_CB (__skb ) ((struct packet_skb_cb *)((__skb)->cb))
234
236
235
237
#define GET_PBDQC_FROM_RB (x ) ((struct tpacket_kbdq_core *)(&(x)->prb_bdqc))
@@ -2680,15 +2682,15 @@ static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len)
2680
2682
goto out_unlock ;
2681
2683
2682
2684
if ((vnet_hdr .flags & VIRTIO_NET_HDR_F_NEEDS_CSUM ) &&
2683
- (__virtio16_to_cpu (false , vnet_hdr .csum_start ) +
2684
- __virtio16_to_cpu (false , vnet_hdr .csum_offset ) + 2 >
2685
- __virtio16_to_cpu (false , vnet_hdr .hdr_len )))
2686
- vnet_hdr .hdr_len = __cpu_to_virtio16 (false ,
2687
- __virtio16_to_cpu (false , vnet_hdr .csum_start ) +
2688
- __virtio16_to_cpu (false , vnet_hdr .csum_offset ) + 2 );
2685
+ (__virtio16_to_cpu (vio_le () , vnet_hdr .csum_start ) +
2686
+ __virtio16_to_cpu (vio_le () , vnet_hdr .csum_offset ) + 2 >
2687
+ __virtio16_to_cpu (vio_le () , vnet_hdr .hdr_len )))
2688
+ vnet_hdr .hdr_len = __cpu_to_virtio16 (vio_le () ,
2689
+ __virtio16_to_cpu (vio_le () , vnet_hdr .csum_start ) +
2690
+ __virtio16_to_cpu (vio_le () , vnet_hdr .csum_offset ) + 2 );
2689
2691
2690
2692
err = - EINVAL ;
2691
- if (__virtio16_to_cpu (false , vnet_hdr .hdr_len ) > len )
2693
+ if (__virtio16_to_cpu (vio_le () , vnet_hdr .hdr_len ) > len )
2692
2694
goto out_unlock ;
2693
2695
2694
2696
if (vnet_hdr .gso_type != VIRTIO_NET_HDR_GSO_NONE ) {
@@ -2731,7 +2733,7 @@ static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len)
2731
2733
hlen = LL_RESERVED_SPACE (dev );
2732
2734
tlen = dev -> needed_tailroom ;
2733
2735
skb = packet_alloc_skb (sk , hlen + tlen , hlen , len ,
2734
- __virtio16_to_cpu (false , vnet_hdr .hdr_len ),
2736
+ __virtio16_to_cpu (vio_le () , vnet_hdr .hdr_len ),
2735
2737
msg -> msg_flags & MSG_DONTWAIT , & err );
2736
2738
if (skb == NULL )
2737
2739
goto out_unlock ;
@@ -2778,16 +2780,16 @@ static int packet_snd(struct socket *sock, struct msghdr *msg, size_t len)
2778
2780
2779
2781
if (po -> has_vnet_hdr ) {
2780
2782
if (vnet_hdr .flags & VIRTIO_NET_HDR_F_NEEDS_CSUM ) {
2781
- u16 s = __virtio16_to_cpu (false , vnet_hdr .csum_start );
2782
- u16 o = __virtio16_to_cpu (false , vnet_hdr .csum_offset );
2783
+ u16 s = __virtio16_to_cpu (vio_le () , vnet_hdr .csum_start );
2784
+ u16 o = __virtio16_to_cpu (vio_le () , vnet_hdr .csum_offset );
2783
2785
if (!skb_partial_csum_set (skb , s , o )) {
2784
2786
err = - EINVAL ;
2785
2787
goto out_free ;
2786
2788
}
2787
2789
}
2788
2790
2789
2791
skb_shinfo (skb )-> gso_size =
2790
- __virtio16_to_cpu (false , vnet_hdr .gso_size );
2792
+ __virtio16_to_cpu (vio_le () , vnet_hdr .gso_size );
2791
2793
skb_shinfo (skb )-> gso_type = gso_type ;
2792
2794
2793
2795
/* Header must be checked, and gso_segs computed. */
@@ -3161,9 +3163,9 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
3161
3163
3162
3164
/* This is a hint as to how much should be linear. */
3163
3165
vnet_hdr .hdr_len =
3164
- __cpu_to_virtio16 (false , skb_headlen (skb ));
3166
+ __cpu_to_virtio16 (vio_le () , skb_headlen (skb ));
3165
3167
vnet_hdr .gso_size =
3166
- __cpu_to_virtio16 (false , sinfo -> gso_size );
3168
+ __cpu_to_virtio16 (vio_le () , sinfo -> gso_size );
3167
3169
if (sinfo -> gso_type & SKB_GSO_TCPV4 )
3168
3170
vnet_hdr .gso_type = VIRTIO_NET_HDR_GSO_TCPV4 ;
3169
3171
else if (sinfo -> gso_type & SKB_GSO_TCPV6 )
@@ -3181,9 +3183,9 @@ static int packet_recvmsg(struct socket *sock, struct msghdr *msg, size_t len,
3181
3183
3182
3184
if (skb -> ip_summed == CHECKSUM_PARTIAL ) {
3183
3185
vnet_hdr .flags = VIRTIO_NET_HDR_F_NEEDS_CSUM ;
3184
- vnet_hdr .csum_start = __cpu_to_virtio16 (false ,
3186
+ vnet_hdr .csum_start = __cpu_to_virtio16 (vio_le () ,
3185
3187
skb_checksum_start_offset (skb ));
3186
- vnet_hdr .csum_offset = __cpu_to_virtio16 (false ,
3188
+ vnet_hdr .csum_offset = __cpu_to_virtio16 (vio_le () ,
3187
3189
skb -> csum_offset );
3188
3190
} else if (skb -> ip_summed == CHECKSUM_UNNECESSARY ) {
3189
3191
vnet_hdr .flags = VIRTIO_NET_HDR_F_DATA_VALID ;
0 commit comments