diff options
Diffstat (limited to 'drivers/net/macvtap.c')
-rw-r--r-- | drivers/net/macvtap.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/net/macvtap.c b/drivers/net/macvtap.c index 22b4cf2fa108..ba1e5db2152e 100644 --- a/drivers/net/macvtap.c +++ b/drivers/net/macvtap.c | |||
@@ -859,7 +859,10 @@ static ssize_t macvtap_do_read(struct macvtap_queue *q, | |||
859 | } | 859 | } |
860 | if (skb) { | 860 | if (skb) { |
861 | ret = macvtap_put_user(q, skb, to); | 861 | ret = macvtap_put_user(q, skb, to); |
862 | kfree_skb(skb); | 862 | if (unlikely(ret < 0)) |
863 | kfree_skb(skb); | ||
864 | else | ||
865 | consume_skb(skb); | ||
863 | } | 866 | } |
864 | if (!noblock) | 867 | if (!noblock) |
865 | finish_wait(sk_sleep(&q->sk), &wait); | 868 | finish_wait(sk_sleep(&q->sk), &wait); |