diff mbox series

[net,2/2] team: reset team's flags when down link is P2P device

Message ID 20230714025201.2038731-3-liuhangbin@gmail.com (mailing list archive)
State Superseded
Delegated to: Netdev Maintainers
Headers show
Series Fix up dev flags when add P2P down link | expand

Checks

Context Check Description
netdev/series_format success Posting correctly formatted
netdev/tree_selection success Clearly marked for net
netdev/fixes_present success Fixes tag present in non-next series
netdev/header_inline success No static functions without inline keyword in header files
netdev/build_32bit fail Errors and warnings before: 1342 this patch: 1343
netdev/cc_maintainers success CCed 6 of 6 maintainers
netdev/build_clang fail Errors and warnings before: 1365 this patch: 1367
netdev/verify_signedoff success Signed-off-by tag matches author and committer
netdev/deprecated_api success None detected
netdev/check_selftest success No net selftest shell script
netdev/verify_fixes success Fixes tag looks correct
netdev/build_allmodconfig_warn fail Errors and warnings before: 1365 this patch: 1366
netdev/checkpatch warning WARNING: Unknown link reference 'Links:', use 'Link:' or 'Closes:' instead
netdev/kdoc success Errors and warnings before: 0 this patch: 0
netdev/source_inline success Was 0 now: 0

Commit Message

Hangbin Liu July 14, 2023, 2:52 a.m. UTC
When adding a point to point downlink to team device, we neglected to reset
the team's flags, which were still using flags like BROADCAST and
MULTICAST. Consequently, this would initiate ARP/DAD for P2P downlink
interfaces, such as when adding a GRE device to team device.

Fix this by remove multicast/broadcast flags and add p2p and noarp flags.

Reported-by: Liang Li <liali@redhat.com>
Links: https://bugzilla.redhat.com/show_bug.cgi?id=2221438
Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
---
 drivers/net/team/team.c | 4 ++++
 1 file changed, 4 insertions(+)

Comments

Jiri Pirko July 14, 2023, 6:48 a.m. UTC | #1
Fri, Jul 14, 2023 at 04:52:01AM CEST, liuhangbin@gmail.com wrote:
>When adding a point to point downlink to team device, we neglected to reset
>the team's flags, which were still using flags like BROADCAST and
>MULTICAST. Consequently, this would initiate ARP/DAD for P2P downlink
>interfaces, such as when adding a GRE device to team device.
>
>Fix this by remove multicast/broadcast flags and add p2p and noarp flags.
>
>Reported-by: Liang Li <liali@redhat.com>
>Links: https://bugzilla.redhat.com/show_bug.cgi?id=2221438
>Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
>Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>

Reviewed-by: Jiri Pirko <jiri@nvidia.com>
Nikolay Aleksandrov July 14, 2023, 6:52 a.m. UTC | #2
On 14/07/2023 05:52, Hangbin Liu wrote:
> When adding a point to point downlink to team device, we neglected to reset
> the team's flags, which were still using flags like BROADCAST and
> MULTICAST. Consequently, this would initiate ARP/DAD for P2P downlink
> interfaces, such as when adding a GRE device to team device.
> 
> Fix this by remove multicast/broadcast flags and add p2p and noarp flags.
> 
> Reported-by: Liang Li <liali@redhat.com>
> Links: https://bugzilla.redhat.com/show_bug.cgi?id=2221438
> Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
> Signed-off-by: Hangbin Liu <liuhangbin@gmail.com>
> ---
>  drivers/net/team/team.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
> index 555b0b1e9a78..c11783efe13f 100644
> --- a/drivers/net/team/team.c
> +++ b/drivers/net/team/team.c
> @@ -2135,6 +2135,10 @@ static void team_setup_by_port(struct net_device *dev,
>  	dev->mtu = port_dev->mtu;
>  	memcpy(dev->broadcast, port_dev->broadcast, port_dev->addr_len);
>  	eth_hw_addr_inherit(dev, port_dev);
> +
> +	if (port_dev->flags & IFF_POINTOPOINT)
> +		dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST);
> +		dev->flags |= (IFF_POINTOPOINT | IFF_NOARP);

here too, looks like missing {}

>  }
>  
>  static int team_dev_type_check_change(struct net_device *dev,
Hangbin Liu July 14, 2023, 8:10 a.m. UTC | #3
On Fri, Jul 14, 2023 at 09:52:03AM +0300, Nikolay Aleksandrov wrote:
> > +	if (port_dev->flags & IFF_POINTOPOINT)
> > +		dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST);
> > +		dev->flags |= (IFF_POINTOPOINT | IFF_NOARP);
> 
> here too, looks like missing {}

Yes, you are right. I forgot to add the {}. When do testing before post the
patch. I just checked adding gre device to bonding and didn't check adding
ethernet interface...

Thanks for your review.

Hangbin
diff mbox series

Patch

diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 555b0b1e9a78..c11783efe13f 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -2135,6 +2135,10 @@  static void team_setup_by_port(struct net_device *dev,
 	dev->mtu = port_dev->mtu;
 	memcpy(dev->broadcast, port_dev->broadcast, port_dev->addr_len);
 	eth_hw_addr_inherit(dev, port_dev);
+
+	if (port_dev->flags & IFF_POINTOPOINT)
+		dev->flags &= ~(IFF_BROADCAST | IFF_MULTICAST);
+		dev->flags |= (IFF_POINTOPOINT | IFF_NOARP);
 }
 
 static int team_dev_type_check_change(struct net_device *dev,