From: Vladimir Oltean <olteanv@gmail.com>
To: "A. Sverdlin" <alexander.sverdlin@siemens.com>
Cc: netdev@vger.kernel.org, Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Eric Dumazet <edumazet@google.com>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
stable@vger.kernel.org
Subject: Re: [PATCH net] net: dsa: lan9303: avoid dsa_switch_shutdown()
Date: Wed, 11 Sep 2024 19:28:34 +0300 [thread overview]
Message-ID: <20240911162834.6ta45exyhbggujwl@skbuf> (raw)
In-Reply-To: <20240911144006.48481-1-alexander.sverdlin@siemens.com>
Hi Alexander,
On Wed, Sep 11, 2024 at 04:40:03PM +0200, A. Sverdlin wrote:
> From: Alexander Sverdlin <alexander.sverdlin@siemens.com>
>
> dsa_switch_shutdown() doesn't bring down any ports, but only disconnects
> slaves from master. Packets still come afterwards into master port and the
> ports are being polled for link status. This leads to crashes:
>
> Unable to handle kernel NULL pointer dereference at virtual address 0000000000000000
> CPU: 0 PID: 442 Comm: kworker/0:3 Tainted: G O 6.1.99+ #1
> Workqueue: events_power_efficient phy_state_machine
> pc : lan9303_mdio_phy_read
> lr : lan9303_phy_read
> Call trace:
> lan9303_mdio_phy_read
> lan9303_phy_read
> dsa_slave_phy_read
> __mdiobus_read
> mdiobus_read
> genphy_update_link
> genphy_read_status
> phy_check_link_status
> phy_state_machine
> process_one_work
> worker_thread
>
> Call lan9303_remove() instead to really unregister all ports before zeroing
> drvdata and dsa_ptr.
>
> Fixes: 0650bf52b31f ("net: dsa: be compatible with masters which unregister on shutdown")
> Cc: stable@vger.kernel.org
> Signed-off-by: Alexander Sverdlin <alexander.sverdlin@siemens.com>
> ---
> drivers/net/dsa/lan9303-core.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/dsa/lan9303-core.c b/drivers/net/dsa/lan9303-core.c
> index 268949939636..ecd507355f51 100644
> --- a/drivers/net/dsa/lan9303-core.c
> +++ b/drivers/net/dsa/lan9303-core.c
> @@ -1477,7 +1477,7 @@ EXPORT_SYMBOL(lan9303_remove);
>
> void lan9303_shutdown(struct lan9303 *chip)
> {
> - dsa_switch_shutdown(chip->ds);
> + lan9303_remove(chip);
> }
> EXPORT_SYMBOL(lan9303_shutdown);
>
> --
> 2.46.0
>
You've said here that a similar change still does not protect against
packets received after shutdown:
https://lore.kernel.org/netdev/c5e0e67400816d68e6bf90b4a999bfa28c59043b.camel@siemens.com/
The difference between that and this is the extra lan9303_disable_processing_port()
calls here. But while that does disable RX on switch ports, it still doesn't wait
for pending RX frames to be processed. So the race is still open. No?
next prev parent reply other threads:[~2024-09-11 16:28 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-09-11 14:40 [PATCH net] net: dsa: lan9303: avoid dsa_switch_shutdown() A. Sverdlin
2024-09-11 16:28 ` Vladimir Oltean [this message]
2024-09-11 16:55 ` Sverdlin, Alexander
2024-09-11 17:04 ` Sverdlin, Alexander
2024-09-11 17:09 ` Sverdlin, Alexander
2024-09-11 17:19 ` Vladimir Oltean
2024-09-12 10:15 ` Vladimir Oltean
2024-09-13 16:16 ` Sverdlin, Alexander
2024-09-13 18:57 ` Vladimir Oltean
-- strict thread matches above, loose matches on Subject: below --
2024-09-04 9:07 Alexander Sverdlin
2024-09-11 14:33 ` Jakub Kicinski
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=20240911162834.6ta45exyhbggujwl@skbuf \
--to=olteanv@gmail.com \
--cc=alexander.sverdlin@siemens.com \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=f.fainelli@gmail.com \
--cc=kuba@kernel.org \
--cc=netdev@vger.kernel.org \
--cc=pabeni@redhat.com \
--cc=stable@vger.kernel.org \
/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
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox