Revert "xfrm: Use actual socket sk instead of skb socket for xfrm_output_resume"
The reverted CL makes CtsnetTestCases fails on CtsNetTestCases:android.net.cts.IpSecManagerTest#testAesGcm128Tcp6 Bug: 186608065 Bug: 197517655 Test: CtsNetTestCases Change-Id: I65eb4e45623af5d6ff8ec634ac11aa039f5cceef Signed-off-by: Howard Chen <howardsoc@google.com> Signed-off-by: Alistair Delva <adelva@google.com>
This commit is contained in:
committed by
Alistair Delva
parent
fc6ab4da31
commit
a5e266c7e8
@@ -1579,7 +1579,7 @@ int xfrm_trans_queue_net(struct net *net, struct sk_buff *skb,
|
|||||||
int xfrm_trans_queue(struct sk_buff *skb,
|
int xfrm_trans_queue(struct sk_buff *skb,
|
||||||
int (*finish)(struct net *, struct sock *,
|
int (*finish)(struct net *, struct sock *,
|
||||||
struct sk_buff *));
|
struct sk_buff *));
|
||||||
int xfrm_output_resume(struct sock *sk, struct sk_buff *skb, int err);
|
int xfrm_output_resume(struct sk_buff *skb, int err);
|
||||||
int xfrm_output(struct sock *sk, struct sk_buff *skb);
|
int xfrm_output(struct sock *sk, struct sk_buff *skb);
|
||||||
|
|
||||||
int pktgen_xfrm_outer_mode_output(struct xfrm_state *x, struct sk_buff *skb);
|
int pktgen_xfrm_outer_mode_output(struct xfrm_state *x, struct sk_buff *skb);
|
||||||
|
|||||||
@@ -141,7 +141,7 @@ static void ah_output_done(struct crypto_async_request *base, int err)
|
|||||||
}
|
}
|
||||||
|
|
||||||
kfree(AH_SKB_CB(skb)->tmp);
|
kfree(AH_SKB_CB(skb)->tmp);
|
||||||
xfrm_output_resume(skb->sk, skb, err);
|
xfrm_output_resume(skb, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ah_output(struct xfrm_state *x, struct sk_buff *skb)
|
static int ah_output(struct xfrm_state *x, struct sk_buff *skb)
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ static void esp_output_done(struct crypto_async_request *base, int err)
|
|||||||
x->encap && x->encap->encap_type == TCP_ENCAP_ESPINTCP)
|
x->encap && x->encap->encap_type == TCP_ENCAP_ESPINTCP)
|
||||||
esp_output_tail_tcp(x, skb);
|
esp_output_tail_tcp(x, skb);
|
||||||
else
|
else
|
||||||
xfrm_output_resume(skb->sk, skb, err);
|
xfrm_output_resume(skb, err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ static void ah6_output_done(struct crypto_async_request *base, int err)
|
|||||||
}
|
}
|
||||||
|
|
||||||
kfree(AH_SKB_CB(skb)->tmp);
|
kfree(AH_SKB_CB(skb)->tmp);
|
||||||
xfrm_output_resume(skb->sk, skb, err);
|
xfrm_output_resume(skb, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ah6_output(struct xfrm_state *x, struct sk_buff *skb)
|
static int ah6_output(struct xfrm_state *x, struct sk_buff *skb)
|
||||||
|
|||||||
@@ -314,7 +314,7 @@ static void esp_output_done(struct crypto_async_request *base, int err)
|
|||||||
x->encap && x->encap->encap_type == TCP_ENCAP_ESPINTCP)
|
x->encap && x->encap->encap_type == TCP_ENCAP_ESPINTCP)
|
||||||
esp_output_tail_tcp(x, skb);
|
esp_output_tail_tcp(x, skb);
|
||||||
else
|
else
|
||||||
xfrm_output_resume(skb->sk, skb, err);
|
xfrm_output_resume(skb, err);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -578,22 +578,22 @@ out:
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int xfrm_output_resume(struct sock *sk, struct sk_buff *skb, int err)
|
int xfrm_output_resume(struct sk_buff *skb, int err)
|
||||||
{
|
{
|
||||||
struct net *net = xs_net(skb_dst(skb)->xfrm);
|
struct net *net = xs_net(skb_dst(skb)->xfrm);
|
||||||
|
|
||||||
while (likely((err = xfrm_output_one(skb, err)) == 0)) {
|
while (likely((err = xfrm_output_one(skb, err)) == 0)) {
|
||||||
nf_reset_ct(skb);
|
nf_reset_ct(skb);
|
||||||
|
|
||||||
err = skb_dst(skb)->ops->local_out(net, sk, skb);
|
err = skb_dst(skb)->ops->local_out(net, skb->sk, skb);
|
||||||
if (unlikely(err != 1))
|
if (unlikely(err != 1))
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
if (!skb_dst(skb)->xfrm)
|
if (!skb_dst(skb)->xfrm)
|
||||||
return dst_output(net, sk, skb);
|
return dst_output(net, skb->sk, skb);
|
||||||
|
|
||||||
err = nf_hook(skb_dst(skb)->ops->family,
|
err = nf_hook(skb_dst(skb)->ops->family,
|
||||||
NF_INET_POST_ROUTING, net, sk, skb,
|
NF_INET_POST_ROUTING, net, skb->sk, skb,
|
||||||
NULL, skb_dst(skb)->dev, xfrm_output2);
|
NULL, skb_dst(skb)->dev, xfrm_output2);
|
||||||
if (unlikely(err != 1))
|
if (unlikely(err != 1))
|
||||||
goto out;
|
goto out;
|
||||||
@@ -609,7 +609,7 @@ EXPORT_SYMBOL_GPL(xfrm_output_resume);
|
|||||||
|
|
||||||
static int xfrm_output2(struct net *net, struct sock *sk, struct sk_buff *skb)
|
static int xfrm_output2(struct net *net, struct sock *sk, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
return xfrm_output_resume(sk, skb, 1);
|
return xfrm_output_resume(skb, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int xfrm_output_gso(struct net *net, struct sock *sk, struct sk_buff *skb)
|
static int xfrm_output_gso(struct net *net, struct sock *sk, struct sk_buff *skb)
|
||||||
|
|||||||
Reference in New Issue
Block a user