Patch "team: reset team's flags when down link is P2P device" has been added to the 6.4-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    team: reset team's flags when down link is P2P device

to the 6.4-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     team-reset-team-s-flags-when-down-link-is-p2p-device.patch
and it can be found in the queue-6.4 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit bf639f94b9f5993d230d27d3797c3c76159c2b95
Author: Hangbin Liu <liuhangbin@xxxxxxxxx>
Date:   Fri Jul 21 12:03:56 2023 +0800

    team: reset team's flags when down link is P2P device
    
    [ Upstream commit fa532bee17d15acf8bba4bc8e2062b7a093ba801 ]
    
    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.
    
    After removing the none ethernet interface and adding an ethernet interface
    to team, we need to reset team interface flags. Unlike bonding interface,
    team do not need restore IFF_MASTER, IFF_SLAVE flags.
    
    Reported-by: Liang Li <liali@xxxxxxxxxx>
    Closes: https://bugzilla.redhat.com/show_bug.cgi?id=2221438
    Fixes: 1d76efe1577b ("team: add support for non-ethernet devices")
    Signed-off-by: Hangbin Liu <liuhangbin@xxxxxxxxx>
    Signed-off-by: Paolo Abeni <pabeni@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/team/team.c b/drivers/net/team/team.c
index 555b0b1e9a789..d3dc22509ea58 100644
--- a/drivers/net/team/team.c
+++ b/drivers/net/team/team.c
@@ -2135,6 +2135,15 @@ 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);
+	} else if ((port_dev->flags & (IFF_BROADCAST | IFF_MULTICAST)) ==
+		    (IFF_BROADCAST | IFF_MULTICAST)) {
+		dev->flags |= (IFF_BROADCAST | IFF_MULTICAST);
+		dev->flags &= ~(IFF_POINTOPOINT | IFF_NOARP);
+	}
 }
 
 static int team_dev_type_check_change(struct net_device *dev,



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux