mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
ipv4: add a sock pointer to ip_queue_xmit()
ip_queue_xmit() assumes the skb it has to transmit is attached to an inet socket. Commit31c70d5956("l2tp: keep original skb ownership") changed l2tp to not change skb ownership and thus broke this assumption. One fix is to add a new 'struct sock *sk' parameter to ip_queue_xmit(), so that we do not assume skb->sk points to the socket used by l2tp tunnel. Fixes:31c70d5956("l2tp: keep original skb ownership") Reported-by: Zhan Jianyu <[email protected]> Tested-by: Zhan Jianyu <[email protected]> Signed-off-by: Eric Dumazet <[email protected]> Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
1dd333f470
commit
b0270e9101
10 changed files with 13 additions and 13 deletions
|
|
@ -1131,10 +1131,10 @@ static int l2tp_xmit_core(struct l2tp_session *session, struct sk_buff *skb,
|
|||
skb->local_df = 1;
|
||||
#if IS_ENABLED(CONFIG_IPV6)
|
||||
if (tunnel->sock->sk_family == PF_INET6 && !tunnel->v4mapped)
|
||||
error = inet6_csk_xmit(skb, NULL);
|
||||
error = inet6_csk_xmit(tunnel->sock, skb, NULL);
|
||||
else
|
||||
#endif
|
||||
error = ip_queue_xmit(skb, fl);
|
||||
error = ip_queue_xmit(tunnel->sock, skb, fl);
|
||||
|
||||
/* Update stats */
|
||||
if (error >= 0) {
|
||||
|
|
|
|||
|
|
@ -487,7 +487,7 @@ static int l2tp_ip_sendmsg(struct kiocb *iocb, struct sock *sk, struct msghdr *m
|
|||
|
||||
xmit:
|
||||
/* Queue the packet to IP for output */
|
||||
rc = ip_queue_xmit(skb, &inet->cork.fl);
|
||||
rc = ip_queue_xmit(sk, skb, &inet->cork.fl);
|
||||
rcu_read_unlock();
|
||||
|
||||
error:
|
||||
|
|
|
|||
Loading…
Reference in a new issue