From: "Markus Schneider-Pargmann" <msp@baylibre.com>
To: "Marc Kleine-Budde" <mkl@pengutronix.de>,
"Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
"Thomas Kopp" <thomas.kopp@microchip.com>,
"Vincent Mailhol" <mailhol.vincent@wanadoo.fr>,
<kernel@pengutronix.de>, "Heiko Stuebner" <heiko@sntech.de>,
"Chandrasekar Ramakrishnan" <rcsekar@samsung.com>
Cc: <linux-can@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-rockchip@lists.infradead.org>, <stable@vger.kernel.org>
Subject: Re: [PATCH 3/3] can: mcan: m_can_class_unregister: fix order of unregistration calls
Date: Mon, 05 May 2025 10:01:22 +0200 [thread overview]
Message-ID: <D9O2I6OT6RSA.JDWMLFP77KSX@baylibre.com> (raw)
In-Reply-To: <20250502-can-rx-offload-del-v1-3-59a9b131589d@pengutronix.de>
[-- Attachment #1: Type: text/plain, Size: 1573 bytes --]
On Fri May 2, 2025 at 4:13 PM CEST, Marc Kleine-Budde wrote:
> If a driver is removed, the driver framework invokes the driver's
> remove callback. A CAN driver's remove function calls
> unregister_candev(), which calls net_device_ops::ndo_stop further down
> in the call stack for interfaces which are in the "up" state.
>
> The removal of the module causes the a warning, as
> can_rx_offload_del() deletes the NAPI, while it is still active,
> because the interface is still up.
>
> To fix the warning, first unregister the network interface, which
> calls net_device_ops::ndo_stop, which disables the NAPI, and then call
> can_rx_offload_del().
>
> Fixes: 1be37d3b0414 ("can: m_can: fix periph RX path: use rx-offload to ensure skbs are sent from softirq context")
> Cc: stable@vger.kernel.org
> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
> ---
> drivers/net/can/m_can/m_can.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
> index 884a6352c42b..7c430eaff5dd 100644
> --- a/drivers/net/can/m_can/m_can.c
> +++ b/drivers/net/can/m_can/m_can.c
> @@ -2462,9 +2462,9 @@ EXPORT_SYMBOL_GPL(m_can_class_register);
>
> void m_can_class_unregister(struct m_can_classdev *cdev)
> {
> + unregister_candev(cdev->net);
> if (cdev->is_peripheral)
> can_rx_offload_del(&cdev->offload);
> - unregister_candev(cdev->net);
> }
> EXPORT_SYMBOL_GPL(m_can_class_unregister);
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 252 bytes --]
WARNING: multiple messages have this Message-ID (diff)
From: "Markus Schneider-Pargmann" <msp@baylibre.com>
To: "Marc Kleine-Budde" <mkl@pengutronix.de>,
"Manivannan Sadhasivam" <manivannan.sadhasivam@linaro.org>,
"Thomas Kopp" <thomas.kopp@microchip.com>,
"Vincent Mailhol" <mailhol.vincent@wanadoo.fr>,
<kernel@pengutronix.de>, "Heiko Stuebner" <heiko@sntech.de>,
"Chandrasekar Ramakrishnan" <rcsekar@samsung.com>
Cc: <linux-can@vger.kernel.org>, <linux-kernel@vger.kernel.org>,
<linux-arm-kernel@lists.infradead.org>,
<linux-rockchip@lists.infradead.org>, <stable@vger.kernel.org>
Subject: Re: [PATCH 3/3] can: mcan: m_can_class_unregister: fix order of unregistration calls
Date: Mon, 05 May 2025 10:01:22 +0200 [thread overview]
Message-ID: <D9O2I6OT6RSA.JDWMLFP77KSX@baylibre.com> (raw)
In-Reply-To: <20250502-can-rx-offload-del-v1-3-59a9b131589d@pengutronix.de>
[-- Attachment #1.1: Type: text/plain, Size: 1573 bytes --]
On Fri May 2, 2025 at 4:13 PM CEST, Marc Kleine-Budde wrote:
> If a driver is removed, the driver framework invokes the driver's
> remove callback. A CAN driver's remove function calls
> unregister_candev(), which calls net_device_ops::ndo_stop further down
> in the call stack for interfaces which are in the "up" state.
>
> The removal of the module causes the a warning, as
> can_rx_offload_del() deletes the NAPI, while it is still active,
> because the interface is still up.
>
> To fix the warning, first unregister the network interface, which
> calls net_device_ops::ndo_stop, which disables the NAPI, and then call
> can_rx_offload_del().
>
> Fixes: 1be37d3b0414 ("can: m_can: fix periph RX path: use rx-offload to ensure skbs are sent from softirq context")
> Cc: stable@vger.kernel.org
> Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
Reviewed-by: Markus Schneider-Pargmann <msp@baylibre.com>
> ---
> drivers/net/can/m_can/m_can.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/can/m_can/m_can.c b/drivers/net/can/m_can/m_can.c
> index 884a6352c42b..7c430eaff5dd 100644
> --- a/drivers/net/can/m_can/m_can.c
> +++ b/drivers/net/can/m_can/m_can.c
> @@ -2462,9 +2462,9 @@ EXPORT_SYMBOL_GPL(m_can_class_register);
>
> void m_can_class_unregister(struct m_can_classdev *cdev)
> {
> + unregister_candev(cdev->net);
> if (cdev->is_peripheral)
> can_rx_offload_del(&cdev->offload);
> - unregister_candev(cdev->net);
> }
> EXPORT_SYMBOL_GPL(m_can_class_unregister);
>
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 252 bytes --]
[-- Attachment #2: Type: text/plain, Size: 170 bytes --]
_______________________________________________
Linux-rockchip mailing list
Linux-rockchip@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-rockchip
next prev parent reply other threads:[~2025-05-05 8:06 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-02 14:13 [PATCH 0/3] can: rx-offload: fix order of unregistration calls Marc Kleine-Budde
2025-05-02 14:13 ` Marc Kleine-Budde
2025-05-02 14:13 ` [PATCH 1/3] can: mcp251xfd: mcp251xfd_remove(): " Marc Kleine-Budde
2025-05-02 14:13 ` Marc Kleine-Budde
2025-05-02 14:13 ` [PATCH 2/3] can: rockchip_canfd: m_can_class_unregister: " Marc Kleine-Budde
2025-05-02 14:13 ` Marc Kleine-Budde
2025-05-05 7:58 ` Markus Schneider-Pargmann
2025-05-05 7:58 ` Markus Schneider-Pargmann
2025-05-02 14:13 ` [PATCH 3/3] can: mcan: " Marc Kleine-Budde
2025-05-02 14:13 ` Marc Kleine-Budde
2025-05-05 8:01 ` Markus Schneider-Pargmann [this message]
2025-05-05 8:01 ` Markus Schneider-Pargmann
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=D9O2I6OT6RSA.JDWMLFP77KSX@baylibre.com \
--to=msp@baylibre.com \
--cc=heiko@sntech.de \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-can@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-rockchip@lists.infradead.org \
--cc=mailhol.vincent@wanadoo.fr \
--cc=manivannan.sadhasivam@linaro.org \
--cc=mkl@pengutronix.de \
--cc=rcsekar@samsung.com \
--cc=stable@vger.kernel.org \
--cc=thomas.kopp@microchip.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.