]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
xfrm: Use xfrm_state selector for BEET input
authorHerbert Xu <herbert@gondor.apana.org.au>
Wed, 7 Jun 2023 08:38:47 +0000 (16:38 +0800)
committerSteffen Klassert <steffen.klassert@secunet.com>
Mon, 12 Jun 2023 08:36:48 +0000 (10:36 +0200)
For BEET the inner address and therefore family is stored in the
xfrm_state selector.  Use that when decapsulating an input packet
instead of incorrectly relying on a non-existent tunnel protocol.

Fixes: 5f24f41e8ea6 ("xfrm: Remove inner/outer modes from input path")
Reported-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
net/xfrm/xfrm_input.c

index b731687b5f3ef10f6b56606a0dd7c5b0507c9023..815b380804011021d1783094cc90ecc6f3ed6aa4 100644 (file)
@@ -331,11 +331,10 @@ xfrm_inner_mode_encap_remove(struct xfrm_state *x,
 {
        switch (x->props.mode) {
        case XFRM_MODE_BEET:
-               switch (XFRM_MODE_SKB_CB(skb)->protocol) {
-               case IPPROTO_IPIP:
-               case IPPROTO_BEETPH:
+               switch (x->sel.family) {
+               case AF_INET:
                        return xfrm4_remove_beet_encap(x, skb);
-               case IPPROTO_IPV6:
+               case AF_INET6:
                        return xfrm6_remove_beet_encap(x, skb);
                }
                break;