瀏覽代碼

ar71xx: fix a double dereference in the unaligned access patch

Signed-off-by: Felix Fietkau <[email protected]>

SVN-Revision: 44885
Felix Fietkau 10 年之前
父節點
當前提交
75e828c117
共有 1 個文件被更改,包括 5 次插入5 次删除
  1. 5 5
      target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch

+ 5 - 5
target/linux/ar71xx/patches-3.18/902-unaligned_access_hacks.patch

@@ -210,7 +210,7 @@
  #include <linux/uaccess.h>
  #include <linux/uaccess.h>
  #include <linux/ipv6.h>
  #include <linux/ipv6.h>
  #include <linux/icmpv6.h>
  #include <linux/icmpv6.h>
-@@ -833,10 +834,10 @@ static void tcp_v6_send_response(struct
+@@ -833,10 +834,10 @@ static void tcp_v6_send_response(struct 
  	topt = (__be32 *)(t1 + 1);
  	topt = (__be32 *)(t1 + 1);
  
  
  	if (tsecr) {
  	if (tsecr) {
@@ -637,7 +637,7 @@
  #include <linux/netdevice.h>
  #include <linux/netdevice.h>
 --- a/include/net/inet_ecn.h
 --- a/include/net/inet_ecn.h
 +++ b/include/net/inet_ecn.h
 +++ b/include/net/inet_ecn.h
-@@ -115,13 +115,13 @@ static inline int IP6_ECN_set_ce(struct
+@@ -115,13 +115,13 @@ static inline int IP6_ECN_set_ce(struct 
  {
  {
  	if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph)))
  	if (INET_ECN_is_not_ect(ipv6_get_dsfield(iph)))
  		return 0;
  		return 0;
@@ -822,7 +822,7 @@
  				       | TCPOLEN_TIMESTAMP))
  				       | TCPOLEN_TIMESTAMP))
 --- a/net/xfrm/xfrm_input.c
 --- a/net/xfrm/xfrm_input.c
 +++ b/net/xfrm/xfrm_input.c
 +++ b/net/xfrm/xfrm_input.c
-@@ -152,8 +152,8 @@ int xfrm_parse_spi(struct sk_buff *skb,
+@@ -152,8 +152,8 @@ int xfrm_parse_spi(struct sk_buff *skb, 
  	if (!pskb_may_pull(skb, hlen))
  	if (!pskb_may_pull(skb, hlen))
  		return -EINVAL;
  		return -EINVAL;
  
  
@@ -869,12 +869,12 @@
  
  
 --- a/net/ipv6/netfilter/nf_log_ipv6.c
 --- a/net/ipv6/netfilter/nf_log_ipv6.c
 +++ b/net/ipv6/netfilter/nf_log_ipv6.c
 +++ b/net/ipv6/netfilter/nf_log_ipv6.c
-@@ -63,9 +63,10 @@ static void dump_ipv6_packet(struct nf_l
+@@ -63,9 +63,9 @@ static void dump_ipv6_packet(struct nf_l
  	/* Max length: 44 "LEN=65535 TC=255 HOPLIMIT=255 FLOWLBL=FFFFF " */
  	/* Max length: 44 "LEN=65535 TC=255 HOPLIMIT=255 FLOWLBL=FFFFF " */
  	nf_log_buf_add(m, "LEN=%Zu TC=%u HOPLIMIT=%u FLOWLBL=%u ",
  	nf_log_buf_add(m, "LEN=%Zu TC=%u HOPLIMIT=%u FLOWLBL=%u ",
  	       ntohs(ih->payload_len) + sizeof(struct ipv6hdr),
  	       ntohs(ih->payload_len) + sizeof(struct ipv6hdr),
+-	       (ntohl(*(__be32 *)ih) & 0x0ff00000) >> 20,
 +	       (ntohl(net_hdr_word(ih)) & 0x0ff00000) >> 20,
 +	       (ntohl(net_hdr_word(ih)) & 0x0ff00000) >> 20,
- 	       (ntohl(*(__be32 *)ih) & 0x0ff00000) >> 20,
  	       ih->hop_limit,
  	       ih->hop_limit,
 -	       (ntohl(*(__be32 *)ih) & 0x000fffff));
 -	       (ntohl(*(__be32 *)ih) & 0x000fffff));
 +	       (ntohl(net_hdr_word(ih)) & 0x000fffff));
 +	       (ntohl(net_hdr_word(ih)) & 0x000fffff));