Message ID | 20240805235200.24982-1-Tristram.Ha@microchip.com (mailing list archive) |
---|---|
State | Accepted |
Commit | c7a19018bd557c24072b59088ad2684fd83ea3f4 |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | [net,v2] net: dsa: microchip: Fix Wake-on-LAN check to not return an error | expand |
On 8/5/24 16:52, Tristram.Ha@microchip.com wrote: > From: Tristram Ha <tristram.ha@microchip.com> > > The wol variable in ksz_port_set_mac_address() is declared with random > data, but the code in ksz_get_wol call may not be executed so the > WAKE_MAGIC check may be invalid resulting in an error message when > setting a MAC address after starting the DSA driver. > > Fixes: 3b454b6390c3 ("net: dsa: microchip: ksz9477: Add Wake on Magic Packet support") > Signed-off-by: Tristram Ha <tristram.ha@microchip.com> > Reviewed-by: Oleksij Rempel <o.rempel@pengutronix.de> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com>
Hello: This patch was applied to netdev/net.git (main) by Jakub Kicinski <kuba@kernel.org>: On Mon, 5 Aug 2024 16:52:00 -0700 you wrote: > From: Tristram Ha <tristram.ha@microchip.com> > > The wol variable in ksz_port_set_mac_address() is declared with random > data, but the code in ksz_get_wol call may not be executed so the > WAKE_MAGIC check may be invalid resulting in an error message when > setting a MAC address after starting the DSA driver. > > [...] Here is the summary with links: - [net,v2] net: dsa: microchip: Fix Wake-on-LAN check to not return an error https://git.kernel.org/netdev/net/c/c7a19018bd55 You are awesome, thank you!
diff --git a/drivers/net/dsa/microchip/ksz_common.c b/drivers/net/dsa/microchip/ksz_common.c index b074b4bb0629..b120e66d5669 100644 --- a/drivers/net/dsa/microchip/ksz_common.c +++ b/drivers/net/dsa/microchip/ksz_common.c @@ -3764,6 +3764,11 @@ static int ksz_port_set_mac_address(struct dsa_switch *ds, int port, return -EBUSY; } + /* Need to initialize variable as the code to fill in settings may + * not be executed. + */ + wol.wolopts = 0; + ksz_get_wol(ds, dp->index, &wol); if (wol.wolopts & WAKE_MAGIC) { dev_err(ds->dev,