lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <63c78aabe2683b9639717c1a74dbdacc@kapio-technology.com> Date: Mon, 29 Aug 2022 13:01:28 +0200 From: netdev@...io-technology.com To: Ido Schimmel <idosch@...dia.com> Cc: davem@...emloft.net, kuba@...nel.org, netdev@...r.kernel.org, Florian Fainelli <f.fainelli@...il.com>, Andrew Lunn <andrew@...n.ch>, Vivien Didelot <vivien.didelot@...il.com>, Vladimir Oltean <olteanv@...il.com>, Eric Dumazet <edumazet@...gle.com>, Paolo Abeni <pabeni@...hat.com>, Kurt Kanzenbach <kurt@...utronix.de>, Hauke Mehrtens <hauke@...ke-m.de>, Woojung Huh <woojung.huh@...rochip.com>, UNGLinuxDriver@...rochip.com, Sean Wang <sean.wang@...iatek.com>, Landen Chao <Landen.Chao@...iatek.com>, DENG Qingfang <dqfext@...il.com>, Matthias Brugger <matthias.bgg@...il.com>, Claudiu Manoil <claudiu.manoil@....com>, Alexandre Belloni <alexandre.belloni@...tlin.com>, Jiri Pirko <jiri@...nulli.us>, Ivan Vecera <ivecera@...hat.com>, Roopa Prabhu <roopa@...dia.com>, Nikolay Aleksandrov <razor@...ckwall.org>, Shuah Khan <shuah@...nel.org>, Christian Marangi <ansuelsmth@...il.com>, Daniel Borkmann <daniel@...earbox.net>, Yuwei Wang <wangyuweihx@...il.com>, linux-kernel@...r.kernel.org, linux-arm-kernel@...ts.infradead.org, linux-mediatek@...ts.infradead.org, bridge@...ts.linux-foundation.org, linux-kselftest@...r.kernel.org Subject: Re: [PATCH v5 net-next 1/6] net: bridge: add locked entry fdb flag to extend locked port feature On 2022-08-27 17:19, Ido Schimmel wrote: > On Fri, Aug 26, 2022 at 01:45:33PM +0200, Hans Schultz wrote: How about this? diff --git a/net/bridge/br_input.c b/net/bridge/br_input.c index 1064a5b2d478..82bb50851716 100644 --- a/net/bridge/br_input.c +++ b/net/bridge/br_input.c @@ -103,8 +103,19 @@ int br_handle_frame_finish(struct net *net, struct sock *sk, struct sk_buff *skb br_fdb_find_rcu(br, eth_hdr(skb)->h_source, vid); if (!fdb_src || READ_ONCE(fdb_src->dst) != p || - test_bit(BR_FDB_LOCAL, &fdb_src->flags)) + test_bit(BR_FDB_LOCAL, &fdb_src->flags) || + test_bit(BR_FDB_ENTRY_LOCKED, &fdb_src->flags)) { + if (!fdb_src || ((READ_ONCE(fdb_src->dst) != p) && + (!unlikely(test_bit(BR_FDB_LOCAL, &fdb_src->flags))))) { + unsigned long flags = 0; + + if (p->flags & BR_PORT_MAB) { + __set_bit(BR_FDB_ENTRY_LOCKED, &flags); + br_fdb_update(br, p, eth_hdr(skb)->h_source, vid, flags); + } + } goto drop; + } } nbp_switchdev_frame_mark(p, skb); It will allow roaming to a MAB enabled port (no roaming to a simply locked port should be allowed of course), and it will not change a local entry and not rely on 'learning on' on the locked port of course. Roaming to an unlocked port will also be allowed, and the locked flag will be removed in this case according to code in br_fdb_update().
Powered by blists - more mailing lists