Netdev Archive on lore.kernel.org
help / color / mirror / Atom feed
From: Ido Schimmel <idosch@idosch.org>
To: Vladimir Oltean <vladimir.oltean@nxp.com>, nikolay@nvidia.com
Cc: netdev@vger.kernel.org, Jakub Kicinski <kuba@kernel.org>,
"David S. Miller" <davem@davemloft.net>,
Jiri Pirko <jiri@resnulli.us>, Roopa Prabhu <roopa@nvidia.com>,
Nikolay Aleksandrov <nikolay@nvidia.com>,
bridge@lists.linux-foundation.org,
syzkaller-bugs <syzkaller-bugs@googlegroups.com>,
syzbot+9ba1174359adba5a5b7c@syzkaller.appspotmail.com
Subject: Re: [PATCH net] net: bridge: validate the NUD_PERMANENT bit when adding an extern_learn FDB entry
Date: Mon, 9 Aug 2021 15:16:40 +0300 [thread overview]
Message-ID: <YREcqAdU+6IpT0+w@shredder> (raw)
In-Reply-To: <20210801231730.7493-1-vladimir.oltean@nxp.com>
On Mon, Aug 02, 2021 at 02:17:30AM +0300, Vladimir Oltean wrote:
> diff --git a/net/bridge/br.c b/net/bridge/br.c
> index ef743f94254d..bbab9984f24e 100644
> --- a/net/bridge/br.c
> +++ b/net/bridge/br.c
> @@ -166,7 +166,8 @@ static int br_switchdev_event(struct notifier_block *unused,
> case SWITCHDEV_FDB_ADD_TO_BRIDGE:
> fdb_info = ptr;
> err = br_fdb_external_learn_add(br, p, fdb_info->addr,
> - fdb_info->vid, false);
> + fdb_info->vid,
> + fdb_info->is_local, false);
When 'is_local' was added in commit 2c4eca3ef716 ("net: bridge:
switchdev: include local flag in FDB notifications") it was not
initialized in all the call sites that emit
'SWITCHDEV_FDB_ADD_TO_BRIDGE' notification, so it can contain garbage.
> if (err) {
> err = notifier_from_errno(err);
> break;
[...]
> @@ -1281,6 +1292,10 @@ int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
>
> if (swdev_notify)
> flags |= BIT(BR_FDB_ADDED_BY_USER);
> +
> + if (is_local)
> + flags |= BIT(BR_FDB_LOCAL);
I have at least once selftest where I forgot the 'static' keyword:
bridge fdb add de:ad:be:ef:13:37 dev $swp1 master extern_learn vlan 1
This patch breaks the test when run against both the kernel and hardware
data paths. I don't mind patching these tests, but we might get more
reports in the future.
Nik, what do you think?
> +
> fdb = fdb_create(br, p, addr, vid, flags);
> if (!fdb) {
> err = -ENOMEM;
> @@ -1307,6 +1322,9 @@ int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
> if (swdev_notify)
> set_bit(BR_FDB_ADDED_BY_USER, &fdb->flags);
>
> + if (is_local)
> + set_bit(BR_FDB_LOCAL, &fdb->flags);
> +
> if (modified)
> fdb_notify(br, fdb, RTM_NEWNEIGH, swdev_notify);
> }
> diff --git a/net/bridge/br_private.h b/net/bridge/br_private.h
> index 2b48b204205e..aa64d8d63ca3 100644
> --- a/net/bridge/br_private.h
> +++ b/net/bridge/br_private.h
> @@ -711,7 +711,7 @@ int br_fdb_get(struct sk_buff *skb, struct nlattr *tb[], struct net_device *dev,
> int br_fdb_sync_static(struct net_bridge *br, struct net_bridge_port *p);
> void br_fdb_unsync_static(struct net_bridge *br, struct net_bridge_port *p);
> int br_fdb_external_learn_add(struct net_bridge *br, struct net_bridge_port *p,
> - const unsigned char *addr, u16 vid,
> + const unsigned char *addr, u16 vid, bool is_local,
> bool swdev_notify);
> int br_fdb_external_learn_del(struct net_bridge *br, struct net_bridge_port *p,
> const unsigned char *addr, u16 vid,
> --
> 2.25.1
>
next prev parent reply other threads:[~2021-08-09 12:16 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-08-01 23:17 Vladimir Oltean
2021-08-02 7:42 ` Nikolay Aleksandrov
2021-08-02 9:20 ` Vladimir Oltean
2021-08-02 9:42 ` Nikolay Aleksandrov
2021-08-02 10:52 ` Vladimir Oltean
2021-08-02 11:02 ` Nikolay Aleksandrov
2021-08-02 11:20 ` Vladimir Oltean
2021-08-02 11:25 ` Nikolay Aleksandrov
2021-08-02 22:10 ` patchwork-bot+netdevbpf
2021-08-09 12:16 ` Ido Schimmel [this message]
2021-08-09 12:32 ` Vladimir Oltean
2021-08-09 15:33 ` Nikolay Aleksandrov
2021-08-10 6:40 ` Ido Schimmel
2021-08-10 7:21 ` [PATCH net] net: bridge: fix flags interpretation for extern learn fdb entries Nikolay Aleksandrov
2021-08-10 11:00 ` [PATCH net v2] " Nikolay Aleksandrov
2021-08-10 13:50 ` Vladimir Oltean
2021-08-10 20:20 ` patchwork-bot+netdevbpf
2021-08-09 16:05 ` [PATCH net] net: bridge: validate the NUD_PERMANENT bit when adding an extern_learn FDB entry Vladimir Oltean
2021-08-10 6:46 ` Ido Schimmel
2021-08-10 10:09 ` Vladimir Oltean
2021-08-10 10:15 ` Nikolay Aleksandrov
2021-08-10 10:38 ` Vladimir Oltean
2021-08-10 10:43 ` Nikolay Aleksandrov
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=YREcqAdU+6IpT0+w@shredder \
--to=idosch@idosch.org \
--cc=bridge@lists.linux-foundation.org \
--cc=davem@davemloft.net \
--cc=jiri@resnulli.us \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nikolay@nvidia.com \
--cc=roopa@nvidia.com \
--cc=syzbot+9ba1174359adba5a5b7c@syzkaller.appspotmail.com \
--cc=syzkaller-bugs@googlegroups.com \
--cc=vladimir.oltean@nxp.com \
--subject='Re: [PATCH net] net: bridge: validate the NUD_PERMANENT bit when adding an extern_learn FDB entry' \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).