Messages in this thread | | | Date | Tue, 5 Sep 2023 12:13:36 +0200 | From | Marcello Sylverster Bauer <> | Subject | Re: [PATCH v2 1/1] xfrm: Use skb_mac_header_was_set() to check for MAC header presence |
| |
Hi Paolo,
On 9/5/23 11:59, Paolo Abeni wrote: > On Mon, 2023-09-04 at 12:32 +0200, Marcello Sylvester Bauer wrote: >> From: Marcello Sylvester Bauer <sylv@sylv.io> >> >> Add skb_mac_header_was_set() in xfrm4_remove_tunnel_encap() and >> xfrm6_remove_tunnel_encap() to detect the presence of a MAC header. >> This change prevents a kernel page fault on a non-zero mac_len when the >> mac_header is not set. >> >> Signed-off-by: Marcello Sylvester Bauer <sylv@sylv.io> > > Please include a suitable fixes tag. > > Please also include in the commit message the stacktrace: > > https://lore.kernel.org/netdev/636d3434-d47a-4cd4-b3ba-7f7254317b64@sylv.io/ > > trimming the asm code and lines starting with ' ? '
Sure, will be added to the next version in addition to a cover letter to give additional context to this patch.
> > I think the real issue could be elsewhere, we should not reach here > with mac_len > 0 && !skb_mac_header_was_set(). > > Could you please try the following debug patch in your setup, and see > if hints at some other relevant place?
Unfortunately the person with the hardware is OOO for two weeks. But I could ask him to test it when he gets back.
Thanks, Marcello
> > Thanks, > > Paolo > > --- > diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h > index 4174c4b82d13..38ca2c7e50ca 100644 > --- a/include/linux/skbuff.h > +++ b/include/linux/skbuff.h > @@ -2793,6 +2793,7 @@ static inline void skb_reset_inner_headers(struct sk_buff *skb) > > static inline void skb_reset_mac_len(struct sk_buff *skb) > { > + WARN_ON_ONCE(!skb_mac_header_was_set(skb)); > skb->mac_len = skb->network_header - skb->mac_header; > } > >
| |