Revert "net: Find dst with sk's xfrm policy not ctl_sk"
This reverts commit788791990dwhich is commite22aa14866upstream. It breaks the Android kernel abi, so revert it for now. If it is needed in the future it can be brought back in an ABI-safe way. Bug: 161946584 Change-Id: Ibbbc25dce5304664307a4d06420c24aa6d6ff708 Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
This commit is contained in:
parent
c86beaeed1
commit
a4be51e26a
4 changed files with 2 additions and 9 deletions
|
|
@ -1169,8 +1169,6 @@ int __xfrm_sk_clone_policy(struct sock *sk, const struct sock *osk);
|
|||
|
||||
static inline int xfrm_sk_clone_policy(struct sock *sk, const struct sock *osk)
|
||||
{
|
||||
if (!sk_fullsock(osk))
|
||||
return 0;
|
||||
sk->sk_policy[0] = NULL;
|
||||
sk->sk_policy[1] = NULL;
|
||||
if (unlikely(osk->sk_policy[0] || osk->sk_policy[1]))
|
||||
|
|
|
|||
|
|
@ -1723,7 +1723,7 @@ void ip_send_unicast_reply(struct sock *sk, struct sk_buff *skb,
|
|||
tcp_hdr(skb)->source, tcp_hdr(skb)->dest,
|
||||
arg->uid);
|
||||
security_skb_classify_flow(skb, flowi4_to_flowi_common(&fl4));
|
||||
rt = ip_route_output_flow(net, &fl4, sk);
|
||||
rt = ip_route_output_key(net, &fl4);
|
||||
if (IS_ERR(rt))
|
||||
return;
|
||||
|
||||
|
|
|
|||
|
|
@ -804,7 +804,6 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb)
|
|||
ctl_sk->sk_priority = (sk->sk_state == TCP_TIME_WAIT) ?
|
||||
inet_twsk(sk)->tw_priority : sk->sk_priority;
|
||||
transmit_time = tcp_transmit_time(sk);
|
||||
xfrm_sk_clone_policy(ctl_sk, sk);
|
||||
}
|
||||
ip_send_unicast_reply(ctl_sk,
|
||||
skb, &TCP_SKB_CB(skb)->header.h4.opt,
|
||||
|
|
@ -813,7 +812,6 @@ static void tcp_v4_send_reset(const struct sock *sk, struct sk_buff *skb)
|
|||
transmit_time);
|
||||
|
||||
ctl_sk->sk_mark = 0;
|
||||
xfrm_sk_free_policy(ctl_sk);
|
||||
sock_net_set(ctl_sk, &init_net);
|
||||
__TCP_INC_STATS(net, TCP_MIB_OUTSEGS);
|
||||
__TCP_INC_STATS(net, TCP_MIB_OUTRSTS);
|
||||
|
|
|
|||
|
|
@ -984,10 +984,7 @@ static void tcp_v6_send_response(const struct sock *sk, struct sk_buff *skb, u32
|
|||
* Underlying function will use this to retrieve the network
|
||||
* namespace
|
||||
*/
|
||||
if (sk && sk->sk_state != TCP_TIME_WAIT)
|
||||
dst = ip6_dst_lookup_flow(net, sk, &fl6, NULL); /*sk's xfrm_policy can be referred*/
|
||||
else
|
||||
dst = ip6_dst_lookup_flow(net, ctl_sk, &fl6, NULL);
|
||||
dst = ip6_dst_lookup_flow(sock_net(ctl_sk), ctl_sk, &fl6, NULL);
|
||||
if (!IS_ERR(dst)) {
|
||||
skb_dst_set(buff, dst);
|
||||
ip6_xmit(ctl_sk, buff, &fl6, fl6.flowi6_mark, NULL,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue