summaryrefslogtreecommitdiff
path: root/drivers/net/tun.c
diff options
context:
space:
mode:
authorMichael S. Tsirkin <mst@redhat.com>2012-07-20 09:23:14 +0000
committerDavid S. Miller <davem@davemloft.net>2012-07-22 12:39:33 -0700
commit868eefeb17d40f6acde00ad8165a268529cf6d24 (patch)
treea935fbb0bb663f1d908aa81c4d485a8c97ad28e9 /drivers/net/tun.c
parent70008aa50e927670ceee7f0c87e159ca7b1517a2 (diff)
downloadlinux-rpi3-868eefeb17d40f6acde00ad8165a268529cf6d24.tar.gz
linux-rpi3-868eefeb17d40f6acde00ad8165a268529cf6d24.tar.bz2
linux-rpi3-868eefeb17d40f6acde00ad8165a268529cf6d24.zip
tun: orphan frags on xmit
tun xmit is actually receive of the internal tun socket. Orphan the frags same as we do for normal rx path. Signed-off-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/tun.c')
-rw-r--r--drivers/net/tun.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/tun.c b/drivers/net/tun.c
index f3a454c3295a..b95a7f44a6d8 100644
--- a/drivers/net/tun.c
+++ b/drivers/net/tun.c
@@ -416,6 +416,8 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, struct net_device *dev)
/* Orphan the skb - required as we might hang on to it
* for indefinite time. */
+ if (unlikely(skb_orphan_frags(skb, GFP_ATOMIC)))
+ goto drop;
skb_orphan(skb);
/* Enqueue packet */