Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3609207pxb; Mon, 24 Jan 2022 13:26:51 -0800 (PST) X-Google-Smtp-Source: ABdhPJxP8ob1uYUkYPBaS2cvlyNgCFT9KxibA54hGveaD2WXC17Mu15ELeLX0Ywhaav2UGdImGh0 X-Received: by 2002:a17:90b:f92:: with SMTP id ft18mr167132pjb.113.1643059511047; Mon, 24 Jan 2022 13:25:11 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643059511; cv=none; d=google.com; s=arc-20160816; b=mblmcu8f9meX0Hedd56ScZHPMg/A3RqKaogZ2eUV2etrDyxacvFdpnOskZOXmBtATs 2aVC9gNXY6KWF8wlc8zFyelkEG/XiWSOiTRks9MEYKZkEuQ6wfdRnrclUjK5XBYk1dwl uMkmAGimq4z/qsx8WDFsUBfk21FBka+mD3sg+EdzjN+ds1+ZdAmSI+1f96D9p3raXvdz h7QwAgETPdNhOMVq35bipBVB9mXeuh2zOLQlDJC4JNrqvDdzLZpAWsCUKIjiyODWM7Cc PNcMLGzP8pMrGQBdNo57PwAFw+2VEk+PpCT3dEp6dO/jly62xGanvtgNzpeGe7Oi4i09 kw8w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=xcC2wkKnAIDCXiddj4UvHbaEuEh3kYDEUEx140/NMLE=; b=IvLUC+ytApyxzc33ZgxB7y/bCNkcKNh+R1avs/N/AmfJ610O5vPSHrqmUNUhKGxSQl tNYfbBZAwL4pe814QX7CkPtJ6WX9+OxKBs0ZpRX9W/c234hmdQ1SAjr1+6BczuX3GJVr dJ91jEdEIUPLrQnDcVGt8XwHN2yBF9DhnFpkc1NW/ERi/rhv2Y+dc4v3mweCfz+AnQep +1mhIRhkT52iV/NNFqBg1rxWJ0kNThMBld4BDyM3iLCQW78X+ywBFg0vQgOqZm76DEy8 XETfcdxEbwJq8NyCpIr/cn/2IGm51dt0bJSsLyZD5NLLrTFMHbBZDWhZxpZqrgZt1ZXC ASLQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=b+mBNKsn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id ot8si452342pjb.1.2022.01.24.13.24.58; Mon, 24 Jan 2022 13:25:11 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=b+mBNKsn; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1443980AbiAXU7l (ORCPT + 99 others); Mon, 24 Jan 2022 15:59:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39224 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1385571AbiAXUdg (ORCPT ); Mon, 24 Jan 2022 15:33:36 -0500 Received: from ams.source.kernel.org (ams.source.kernel.org [IPv6:2604:1380:4601:e00::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1785CC07E2A9; Mon, 24 Jan 2022 11:46:45 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ams.source.kernel.org (Postfix) with ESMTPS id C8051B8122F; Mon, 24 Jan 2022 19:46:43 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id DE064C340E5; Mon, 24 Jan 2022 19:46:41 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1643053602; bh=HQ6B0uKdxL/T2Pekmm6f9Rm+C360B4Crjd3KMEbBmYU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=b+mBNKsnK7zi3GY5PlMIffyBvBXiayVO//CGFQIFXzqcPys0ISHpeNiDUp4hzZ7bo Asr/lOUQBYFyZYAoUAWZHNsdo8LMwnfqb/5ntG4QyvoTdHCqubUegZuq4vTUy81r2T v37sA9Cs4zZsZ+GyBLcDE/JXIBc1fSaZLV9jbePI= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Florian Westphal , Pablo Neira Ayuso , Sasha Levin , Amish Chana Subject: [PATCH 5.10 118/563] netfilter: bridge: add support for pppoe filtering Date: Mon, 24 Jan 2022 19:38:03 +0100 Message-Id: <20220124184028.496002608@linuxfoundation.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220124184024.407936072@linuxfoundation.org> References: <20220124184024.407936072@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Florian Westphal [ Upstream commit 28b78ecffea8078d81466b2e01bb5a154509f1ba ] This makes 'bridge-nf-filter-pppoe-tagged' sysctl work for bridged traffic. Looking at the original commit it doesn't appear this ever worked: static unsigned int br_nf_post_routing(unsigned int hook, struct sk_buff **pskb, [..] if (skb->protocol == htons(ETH_P_8021Q)) { skb_pull(skb, VLAN_HLEN); skb->network_header += VLAN_HLEN; + } else if (skb->protocol == htons(ETH_P_PPP_SES)) { + skb_pull(skb, PPPOE_SES_HLEN); + skb->network_header += PPPOE_SES_HLEN; } [..] NF_HOOK(... POST_ROUTING, ...) ... but the adjusted offsets are never restored. The alternative would be to rip this code out for good, but otoh we'd have to keep this anyway for the vlan handling (which works because vlan tag info is in the skb, not the packet payload). Reported-and-tested-by: Amish Chana Fixes: 516299d2f5b6f97 ("[NETFILTER]: bridge-nf: filter bridged IPv4/IPv6 encapsulated in pppoe traffic") Signed-off-by: Florian Westphal Signed-off-by: Pablo Neira Ayuso Signed-off-by: Sasha Levin --- net/bridge/br_netfilter_hooks.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/net/bridge/br_netfilter_hooks.c b/net/bridge/br_netfilter_hooks.c index 8edfb98ae1d58..68c0d0f928908 100644 --- a/net/bridge/br_netfilter_hooks.c +++ b/net/bridge/br_netfilter_hooks.c @@ -743,6 +743,9 @@ static int br_nf_dev_queue_xmit(struct net *net, struct sock *sk, struct sk_buff if (nf_bridge->frag_max_size && nf_bridge->frag_max_size < mtu) mtu = nf_bridge->frag_max_size; + nf_bridge_update_protocol(skb); + nf_bridge_push_encap_header(skb); + if (skb_is_gso(skb) || skb->len + mtu_reserved <= mtu) { nf_bridge_info_free(skb); return br_dev_queue_push_xmit(net, sk, skb); @@ -760,8 +763,6 @@ static int br_nf_dev_queue_xmit(struct net *net, struct sock *sk, struct sk_buff IPCB(skb)->frag_max_size = nf_bridge->frag_max_size; - nf_bridge_update_protocol(skb); - data = this_cpu_ptr(&brnf_frag_data_storage); if (skb_vlan_tag_present(skb)) { @@ -789,8 +790,6 @@ static int br_nf_dev_queue_xmit(struct net *net, struct sock *sk, struct sk_buff IP6CB(skb)->frag_max_size = nf_bridge->frag_max_size; - nf_bridge_update_protocol(skb); - data = this_cpu_ptr(&brnf_frag_data_storage); data->encap_size = nf_bridge_encap_header_len(skb); data->size = ETH_HLEN + data->encap_size; -- 2.34.1