diff options
| -rw-r--r-- | net/ipv4/ip_sockglue.c | 10 | ||||
| -rw-r--r-- | net/ipv6/datagram.c | 10 |
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 | ||
| 547 | out_free_skb: | 548 | consume_skb(skb); |
| 548 | kfree_skb(skb); | ||
| 549 | out: | 549 | out: |
| 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 | ||
| 512 | out_free_skb: | 513 | consume_skb(skb); |
| 513 | kfree_skb(skb); | ||
| 514 | out: | 514 | out: |
| 515 | return err; | 515 | return err; |
| 516 | } | 516 | } |
