* [PATCH net] net: ip6_gre: access skb data after skb_cow_head()
@ 2019-05-16 16:25 William Tu
2019-05-18 17:45 ` David Miller
0 siblings, 1 reply; 2+ messages in thread
From: William Tu @ 2019-05-16 16:25 UTC (permalink / raw)
To: netdev
When increases the headroom, skb's pointer might get re-allocated.
Fix it by moving skb_cow_head before accessing the skb->data pointer.
Fixes: 01b8d064d58b4 ("net: ip6_gre: Request headroom in __gre6_xmit()")
Reported-by: Haichao Ma <haichaom@vmware.com>
Signed-off-by: William Tu <u9012063@gmail.com>
---
net/ipv6/ip6_gre.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/net/ipv6/ip6_gre.c b/net/ipv6/ip6_gre.c
index 655e46b227f9..90b2b129b105 100644
--- a/net/ipv6/ip6_gre.c
+++ b/net/ipv6/ip6_gre.c
@@ -714,6 +714,9 @@ static netdev_tx_t __gre6_xmit(struct sk_buff *skb,
struct ip6_tnl *tunnel = netdev_priv(dev);
__be16 protocol;
+ if (skb_cow_head(skb, dev->needed_headroom ?: tunnel->hlen))
+ return -ENOMEM;
+
if (dev->type == ARPHRD_ETHER)
IPCB(skb)->flags = 0;
@@ -722,9 +725,6 @@ static netdev_tx_t __gre6_xmit(struct sk_buff *skb,
else
fl6->daddr = tunnel->parms.raddr;
- if (skb_cow_head(skb, dev->needed_headroom ?: tunnel->hlen))
- return -ENOMEM;
-
/* Push GRE header. */
protocol = (dev->type == ARPHRD_ETHER) ? htons(ETH_P_TEB) : proto;
--
2.7.4
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH net] net: ip6_gre: access skb data after skb_cow_head()
2019-05-16 16:25 [PATCH net] net: ip6_gre: access skb data after skb_cow_head() William Tu
@ 2019-05-18 17:45 ` David Miller
0 siblings, 0 replies; 2+ messages in thread
From: David Miller @ 2019-05-18 17:45 UTC (permalink / raw)
To: u9012063; +Cc: netdev
From: William Tu <u9012063@gmail.com>
Date: Thu, 16 May 2019 09:25:48 -0700
> When increases the headroom, skb's pointer might get re-allocated.
> Fix it by moving skb_cow_head before accessing the skb->data pointer.
>
> Fixes: 01b8d064d58b4 ("net: ip6_gre: Request headroom in __gre6_xmit()")
> Reported-by: Haichao Ma <haichaom@vmware.com>
> Signed-off-by: William Tu <u9012063@gmail.com>
I don't understand the problem.
The fl6->daddr assignments are object copies, not pointer assignments.
So there are no dangling pointer references I can see.
Also, you need to explain exactly what dangling pointer is the problem
in your commit message.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-05-18 17:45 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-16 16:25 [PATCH net] net: ip6_gre: access skb data after skb_cow_head() William Tu
2019-05-18 17:45 ` David Miller
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.