Explorar el Código

[SK_BUFF]: Some more skb_put cases converted to skb_reset_network_header

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Arnaldo Carvalho de Melo hace 18 años
padre
commit
2ca9e6f2c2
Se han modificado 2 ficheros con 5 adiciones y 3 borrados
  1. 2 1
      net/ipv4/ip_output.c
  2. 3 2
      net/ipv4/ip_sockglue.c

+ 2 - 1
net/ipv4/ip_output.c

@@ -1126,7 +1126,8 @@ ssize_t	ip_append_page(struct sock *sk, struct page *page,
 			 *	Find where to start putting bytes.
 			 */
 			data = skb_put(skb, fragheaderlen + fraggap);
-			skb->nh.iph = iph = (struct iphdr *)data;
+			skb_reset_network_header(skb);
+			iph = skb->nh.iph;
 			data += fragheaderlen;
 			skb->h.raw = data;
 

+ 3 - 2
net/ipv4/ip_sockglue.c

@@ -296,8 +296,9 @@ void ip_local_error(struct sock *sk, int err, __be32 daddr, __be16 port, u32 inf
 	if (!skb)
 		return;
 
-	iph = (struct iphdr*)skb_put(skb, sizeof(struct iphdr));
-	skb->nh.iph = iph;
+	skb_put(skb, sizeof(struct iphdr));
+	skb_reset_network_header(skb);
+	iph = skb->nh.iph;
 	iph->daddr = daddr;
 
 	serr = SKB_EXT_ERR(skb);