ipv4: fix ip_send_skb()

ip_send_skb() can send orphaned skb, so we must pass the net pointer to
avoid possible NULL dereference in error path.

Bug added by commit 3a7c384ffd (ipv4: tcp: unicast_sock should not
land outside of TCP stack)

Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Eric Dumazet 2012-08-10 02:22:47 +00:00 committed by David S. Miller
parent 63d02d157e
commit b5ec8eeac4
3 changed files with 4 additions and 5 deletions

View file

@ -1366,9 +1366,8 @@ out:
return skb;
}
int ip_send_skb(struct sk_buff *skb)
int ip_send_skb(struct net *net, struct sk_buff *skb)
{
struct net *net = sock_net(skb->sk);
int err;
err = ip_local_out(skb);
@ -1391,7 +1390,7 @@ int ip_push_pending_frames(struct sock *sk, struct flowi4 *fl4)
return 0;
/* Netfilter gets whole the not fragmented skb. */
return ip_send_skb(skb);
return ip_send_skb(sock_net(sk), skb);
}
/*