From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.remote-ip=100.103.45.18 ARC-Seal: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; cv=none; t=1794585691; b=pdKGwTm16u3HQESnQXiTqA823yLdzkj8cK96rfGpLEApV+FRZlgPLvjfzQ8WQuDQg1jU ywPdMCOVXrKnluqYWJOFzVBw7SmhifVS8BVWeaTsef+WnC6THjf6UoIib02KpD1HxbJMs ADi/y9gClkKa5/YT25KS0NGSlsqh2X2shm8qvxgjcle/+tb2pVa08mzLu/hI4HSj+OQ8O sjGmfB9FjnTjO8IcsCaWuSQyMDxmGswYZmW2Gm8uxPltti6sp2IR2ldLZ11V7Nl9uyOHq XfRJjPzyOPfpyxSnBz3GgSTkZ6/RN0cbtFiWf8AIaOMYuxlk/vM/Vixxbitx45CuAEg== ARC-Message-Signature: i=1; d=subspace.kernel.org; s=arc20261015; a=rsa-sha256; c=relaxed/relaxed; t=1794585691; h=Received:DKIM-Signature:From:To:Cc:Subject:Date:Message-ID:X-Mailer: In-Reply-To:References:User-Agent:X-stable:X-Patchwork-Hint: MIME-Version:Content-Transfer-Encoding; bh=dleerQDlpa4CNqXPb/WvWbXZNZu4+2IGjpD934DsEDA=; b=ya0UMBWcSeZTx17iHvOGzxQ4TZiDvPHIpXL/JYMwsF0vFWpVmsSrmoehLBm5gmnmIPsE 47Wsz63gACMiw6F68XCJzi93ts4iwlMoFJbOyyFmittlqxkpNB/8YcZJL/RgfxQegG6sS Mbvx8QQ21ypmcJJvio3WsypTRl7VFPrMuJa2FN/KG1Mzbx0nWU3lpmbfxc/C8vhF1WVRm cHcXNi1gGQgxmdq3rtxbQCmigJTri5PuaR/WyfU/BSq947fr08EoNnuO05Nu9FZSg1ScZ hz4AbIzuCcUhXsyFd2BUKcqVfAeh014w0F7EV8NLMmKQAdI4MHBfIRRhcMGTwfjwXmg== ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass header.d=linuxfoundation.org header.i=@linuxfoundation.org header.a=rsa-sha256 header.s=korg header.b=LoNasgXt; arc=none smtp.remote-ip=100.103.45.18 Received: from smtp.kernel.org (quasi.space.kernel.org [100.103.45.18]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (prime256v1)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id A5FAD60A380B; Fri, 13 Nov 2026 16:01:31 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linuxfoundation.org header.i=@linuxfoundation.org header.a=rsa-sha256 header.s=korg header.b=LoNasgXt Received: by smtp.kernel.org (Postfix) with ESMTPSA id 5125B1F000C4; Fri, 13 Nov 2026 16:01:31 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linuxfoundation.org; s=korg; t=1794585691; bh=dleerQDlpa4CNqXPb/WvWbXZNZu4+2IGjpD934DsEDA=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=LoNasgXtmvvdrbOPTILDU5jQKJj5XFTXfoop34eFVFfQryXsu4zHCcNg98xMtRBw4 hcTioijdQ+D/nl/rBX70XLXi+ejbG0z5LCo1hkwmChu+egRqIFsOmsSFLZUq/L7uNH VcuB2bUABawN+emmkZqN3ve8BStMUiCFBWH/mLwQ= From: Greg Kroah-Hartman To: stable@vger.kernel.org Cc: Greg Kroah-Hartman , patches@lists.linux.dev, ChunYuZhiQiang , Vincent Mailhol , Marc Kleine-Budde , Sasha Levin Subject: [PATCH 7.3 300/507] can: dev: can_fill_info(): dont wake up controller if interface is down Date: Fri, 13 Nov 2026 10:50:04 -0500 Message-ID: <20261113153805.412896718@linuxfoundation.org> X-Mailer: git-send-email 2.56.0 In-Reply-To: <20261113153753.358973689@linuxfoundation.org> References: <20261113153753.358973689@linuxfoundation.org> User-Agent: quilt/0.69 X-stable: review X-Patchwork-Hint: ignore X-Mailing-List: stable@vger.kernel.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 7.3-stable review patch. If anyone has any objections, please let me know. ------------------ From: ChunYuZhiQiang [ Upstream commit 75332c410c8190d61499001c5516af977ca426c3 ] If the interface is down, the CAN controller might be powered down and its clocks gated. Don't call do_get_berr_counter() to read the bus error counters if the interface is down, and adjust can_get_size() to match. This removes one trigger for a synchronous external abort seen on i.MX8QXP when "ip link show" is run on a flexcan interface that was never brought up. The underlying cause is platform-specific: on i.MX8QXP the CAN clocks are gated through the SCU LPCG and the subsystem shares the IMX_SC_R_CAN_0 power domain, and there is a window after pm_runtime_resume_and_get() returns where the clock has not reached the module yet. This patch avoids the netlink query path while the interface is down, but does not root-cause the LPCG window itself. As a result, IFLA_CAN_BERR_COUNTER is no longer reported for down interfaces. Userspace must treat the attribute as optional. The issue was triggered on an i.MX8QXP board by running "ip link show" without ever bringing the interface up: Internal error: synchronous external abort: 0000000096000210 pc : flexcan_read_le+0x0/0x18 lr : flexcan_get_berr_counter+0x4c/0x8c Call trace: flexcan_read_le+0x0/0x18 flexcan_get_berr_counter+0x4c/0x8c can_fill_info+0x1f8/0x434 rtnl_fill_ifinfo+0x8fc/0xbb4 rtnl_dump_ifinfo+0x364/0x448 This is the same class of problem fixed for m_can in commit 91a55c72a821 ("can: m_can: m_can_get_berr_counter(): don't wake up controller if interface is down"). Fixes: ec56acfef2af1 ("can: flexcan: flexcan_get_berr_counter(): switch on clocks before accessing ecr register") Cc: stable@vger.kernel.org Signed-off-by: ChunYuZhiQiang Reviewed-by: Vincent Mailhol Link: https://patch.msgid.link/20261027065012.191348-1-chunyuzhiqiang@yinhe.ht Signed-off-by: Marc Kleine-Budde Signed-off-by: Sasha Levin --- drivers/net/can/dev/netlink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/can/dev/netlink.c b/drivers/net/can/dev/netlink.c index 766d455950f55..b958c04d53db6 100644 --- a/drivers/net/can/dev/netlink.c +++ b/drivers/net/can/dev/netlink.c @@ -812,7 +812,7 @@ static size_t can_get_size(const struct net_device *dev) size += nla_total_size(sizeof(u32)); /* IFLA_CAN_STATE */ size += nla_total_size(sizeof(struct can_ctrlmode)); /* IFLA_CAN_CTRLMODE */ size += nla_total_size(sizeof(u32)); /* IFLA_CAN_RESTART_MS */ - if (priv->do_get_berr_counter) /* IFLA_CAN_BERR_COUNTER */ + if (priv->do_get_berr_counter && netif_running(dev)) /* IFLA_CAN_BERR_COUNTER */ size += nla_total_size(sizeof(struct can_berr_counter)); if (priv->termination_const) { size += nla_total_size(sizeof(priv->termination)); /* IFLA_CAN_TERMINATION */ @@ -1006,7 +1006,7 @@ static int can_fill_info(struct sk_buff *skb, const struct net_device *dev) nla_put(skb, IFLA_CAN_CTRLMODE, sizeof(cm), &cm) || nla_put_u32(skb, IFLA_CAN_RESTART_MS, priv->restart_ms) || - (priv->do_get_berr_counter && + (priv->do_get_berr_counter && netif_running(dev) && !priv->do_get_berr_counter(dev, &bec) && nla_put(skb, IFLA_CAN_BERR_COUNTER, sizeof(bec), &bec)) || -- 2.53.0