From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id DFD1EC83F2C for ; Mon, 4 Sep 2023 10:32:44 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1347997AbjIDKcq (ORCPT ); Mon, 4 Sep 2023 06:32:46 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60320 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230121AbjIDKco (ORCPT ); Mon, 4 Sep 2023 06:32:44 -0400 Received: from mout-u-204.mailbox.org (mout-u-204.mailbox.org [IPv6:2001:67c:2050:101:465::204]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8956AF0; Mon, 4 Sep 2023 03:32:41 -0700 (PDT) Received: from smtp1.mailbox.org (smtp1.mailbox.org [IPv6:2001:67c:2050:b231:465::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-u-204.mailbox.org (Postfix) with ESMTPS id 4RfQ1v5SXSz9snZ; Mon, 4 Sep 2023 12:32:35 +0200 (CEST) From: Marcello Sylvester Bauer To: Steffen Klassert , Herbert Xu , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Marcello Sylvester Bauer , netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [PATCH v2 1/1] xfrm: Use skb_mac_header_was_set() to check for MAC header presence Date: Mon, 4 Sep 2023 12:32:08 +0200 Message-ID: <0490137bbc24e95eadf01bed9c31eb1d0a856a21.1693823464.git.sylv@sylv.io> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Queue-Id: 4RfQ1v5SXSz9snZ Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Marcello Sylvester Bauer 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 --- net/xfrm/xfrm_input.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/net/xfrm/xfrm_input.c b/net/xfrm/xfrm_input.c index d5ee96789d4b..6d74bfa1e6e8 100644 --- a/net/xfrm/xfrm_input.c +++ b/net/xfrm/xfrm_input.c @@ -250,7 +250,7 @@ static int xfrm4_remove_tunnel_encap(struct xfrm_state *x, struct sk_buff *skb) skb_reset_network_header(skb); skb_mac_header_rebuild(skb); - if (skb->mac_len) + if (skb->mac_len && skb_mac_header_was_set(skb)) eth_hdr(skb)->h_proto = skb->protocol; err = 0; @@ -287,7 +287,7 @@ static int xfrm6_remove_tunnel_encap(struct xfrm_state *x, struct sk_buff *skb) skb_reset_network_header(skb); skb_mac_header_rebuild(skb); - if (skb->mac_len) + if (skb->mac_len && skb_mac_header_was_set(skb)) eth_hdr(skb)->h_proto = skb->protocol; err = 0; -- 2.42.0