]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net: hsr: emit notification for PRP slave2 changed hw addr on port deletion
authorFernando Fernandez Mancera <fmancera@suse.de>
Fri, 3 Apr 2026 12:39:29 +0000 (14:39 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 7 Apr 2026 15:06:16 +0000 (17:06 +0200)
On PRP protocol, when deleting the port the MAC address change
notification was missing. In addition to that, make sure to only perform
the MAC address change on slave2 deletion and PRP protocol as the
operation isn't necessary for HSR nor slave1.

Note that the eth_hw_addr_set() is correct on PRP context as the slaves
are either in promiscuous mode or forward offload enabled.

Reported-by: Luka Gejak <luka.gejak@linux.dev>
Closes: https://lore.kernel.org/netdev/DHFCZEM93FTT.1RWFBIE32K7OT@linux.dev/
Signed-off-by: Fernando Fernandez Mancera <fmancera@suse.de>
Reviewed-by: Felix Maurer <fmaurer@redhat.com>
Link: https://patch.msgid.link/20260403123928.4249-2-fmancera@suse.de
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
net/hsr/hsr_slave.c

index 44f83c8c56a798a304ec1fb8320ddb08e1b346a7..d9af9e65f72f07b1997b80c85db16d812fbda488 100644 (file)
@@ -243,7 +243,11 @@ void hsr_del_port(struct hsr_port *port)
                if (!port->hsr->fwd_offloaded)
                        dev_set_promiscuity(port->dev, -1);
                netdev_upper_dev_unlink(port->dev, master->dev);
-               eth_hw_addr_set(port->dev, port->original_macaddress);
+               if (hsr->prot_version == PRP_V1 &&
+                   port->type == HSR_PT_SLAVE_B) {
+                       eth_hw_addr_set(port->dev, port->original_macaddress);
+                       call_netdevice_notifiers(NETDEV_CHANGEADDR, port->dev);
+               }
        }
 
        kfree_rcu(port, rcu);