瀏覽代碼

[IPV6]: Fix ECN bug on big-endian

__constant_htons(2<<4) is not a replacement for
htonl(2<<20).

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: David S. Miller <davem@davemloft.net>
Al Viro 18 年之前
父節點
當前提交
95026cd242
共有 1 個文件被更改,包括 1 次插入1 次删除
  1. 1 1
      include/net/inet_ecn.h

+ 1 - 1
include/net/inet_ecn.h

@@ -48,7 +48,7 @@ static inline __u8 INET_ECN_encapsulate(__u8 outer, __u8 inner)
 
 
 #define	IP6_ECN_flow_xmit(sk, label) do {				\
 #define	IP6_ECN_flow_xmit(sk, label) do {				\
 	if (INET_ECN_is_capable(inet_sk(sk)->tos))			\
 	if (INET_ECN_is_capable(inet_sk(sk)->tos))			\
-		(label) |= __constant_htons(INET_ECN_ECT_0 << 4);	\
+		(label) |= htonl(INET_ECN_ECT_0 << 20);			\
     } while (0)
     } while (0)
 
 
 static inline int IP_ECN_set_ce(struct iphdr *iph)
 static inline int IP_ECN_set_ce(struct iphdr *iph)