aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv4/ip_sockglue.c10
-rw-r--r--net/ipv6/datagram.c10
2 files changed, 10 insertions, 10 deletions
diff --git a/net/ipv4/ip_sockglue.c b/net/ipv4/ip_sockglue.c
index 279471c4e58f..bdb222c0c6a2 100644
--- a/net/ipv4/ip_sockglue.c
+++ b/net/ipv4/ip_sockglue.c
@@ -510,9 +510,10 @@ int ip_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
510 copied = len; 510 copied = len;
511 } 511 }
512 err = skb_copy_datagram_msg(skb, 0, msg, copied); 512 err = skb_copy_datagram_msg(skb, 0, msg, copied);
513 if (err) 513 if (unlikely(err)) {
514 goto out_free_skb; 514 kfree_skb(skb);
515 515 return err;
516 }
516 sock_recv_timestamp(msg, sk, skb); 517 sock_recv_timestamp(msg, sk, skb);
517 518
518 serr = SKB_EXT_ERR(skb); 519 serr = SKB_EXT_ERR(skb);
@@ -544,8 +545,7 @@ int ip_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
544 msg->msg_flags |= MSG_ERRQUEUE; 545 msg->msg_flags |= MSG_ERRQUEUE;
545 err = copied; 546 err = copied;
546 547
547out_free_skb: 548 consume_skb(skb);
548 kfree_skb(skb);
549out: 549out:
550 return err; 550 return err;
551} 551}
diff --git a/net/ipv6/datagram.c b/net/ipv6/datagram.c
index 3962b6c810fc..ea9ee5cce5cf 100644
--- a/net/ipv6/datagram.c
+++ b/net/ipv6/datagram.c
@@ -450,9 +450,10 @@ int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
450 copied = len; 450 copied = len;
451 } 451 }
452 err = skb_copy_datagram_msg(skb, 0, msg, copied); 452 err = skb_copy_datagram_msg(skb, 0, msg, copied);
453 if (err) 453 if (unlikely(err)) {
454 goto out_free_skb; 454 kfree_skb(skb);
455 455 return err;
456 }
456 sock_recv_timestamp(msg, sk, skb); 457 sock_recv_timestamp(msg, sk, skb);
457 458
458 serr = SKB_EXT_ERR(skb); 459 serr = SKB_EXT_ERR(skb);
@@ -509,8 +510,7 @@ int ipv6_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
509 msg->msg_flags |= MSG_ERRQUEUE; 510 msg->msg_flags |= MSG_ERRQUEUE;
510 err = copied; 511 err = copied;
511 512
512out_free_skb: 513 consume_skb(skb);
513 kfree_skb(skb);
514out: 514out:
515 return err; 515 return err;
516} 516}