diff options
Diffstat (limited to 'net/ipv4/ip_output.c')
-rw-r--r-- | net/ipv4/ip_output.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/ip_output.c b/net/ipv4/ip_output.c index 247026282669..7ffcd96fe591 100644 --- a/net/ipv4/ip_output.c +++ b/net/ipv4/ip_output.c | |||
@@ -813,6 +813,8 @@ int ip_append_data(struct sock *sk, | |||
813 | inet->cork.addr = ipc->addr; | 813 | inet->cork.addr = ipc->addr; |
814 | } | 814 | } |
815 | rt = *rtp; | 815 | rt = *rtp; |
816 | if (unlikely(!rt)) | ||
817 | return -EFAULT; | ||
816 | /* | 818 | /* |
817 | * We steal reference to this route, caller should not release it | 819 | * We steal reference to this route, caller should not release it |
818 | */ | 820 | */ |
@@ -1243,7 +1245,6 @@ int ip_push_pending_frames(struct sock *sk) | |||
1243 | skb->len += tmp_skb->len; | 1245 | skb->len += tmp_skb->len; |
1244 | skb->data_len += tmp_skb->len; | 1246 | skb->data_len += tmp_skb->len; |
1245 | skb->truesize += tmp_skb->truesize; | 1247 | skb->truesize += tmp_skb->truesize; |
1246 | __sock_put(tmp_skb->sk); | ||
1247 | tmp_skb->destructor = NULL; | 1248 | tmp_skb->destructor = NULL; |
1248 | tmp_skb->sk = NULL; | 1249 | tmp_skb->sk = NULL; |
1249 | } | 1250 | } |