From: Justin He <Justin.He@arm.com>
To: Sasha Levin <sashal@kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>,
"stable@vger.kernel.org" <stable@vger.kernel.org>
Cc: Lijian Zhang <Lijian.Zhang@arm.com>,
"David S . Miller" <davem@davemloft.net>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Subject: RE: [PATCH AUTOSEL 5.13 09/21] qed: fix possible unpaired spin_{un}lock_bh in _qed_mcp_cmd_and_union()
Date: Tue, 27 Jul 2021 13:30:15 +0000 [thread overview]
Message-ID: <AM6PR08MB4376DF5C31C64EBFCB0276ECF7E99@AM6PR08MB4376.eurprd08.prod.outlook.com> (raw)
In-Reply-To: <20210727131908.834086-9-sashal@kernel.org>
Hi, Sasha
> -----Original Message-----
> From: Sasha Levin <sashal@kernel.org>
> Sent: Tuesday, July 27, 2021 9:19 PM
> To: linux-kernel@vger.kernel.org; stable@vger.kernel.org
> Cc: Justin He <Justin.He@arm.com>; Lijian Zhang <Lijian.Zhang@arm.com>;
> David S . Miller <davem@davemloft.net>; Sasha Levin <sashal@kernel.org>;
> netdev@vger.kernel.org
> Subject: [PATCH AUTOSEL 5.13 09/21] qed: fix possible unpaired
> spin_{un}lock_bh in _qed_mcp_cmd_and_union()
>
> From: Jia He <justin.he@arm.com>
If possible, please stop taking this commit to any stable version because
it has been reverted by later commit.
This patch is harmless but pointless.
Sorry for the inconvenience.
--
Cheers,
Justin (Jia He)
>
> [ Upstream commit 6206b7981a36476f4695d661ae139f7db36a802d ]
>
> Liajian reported a bug_on hit on a ThunderX2 arm64 server with FastLinQ
> QL41000 ethernet controller:
> BUG: scheduling while atomic: kworker/0:4/531/0x00000200
> [qed_probe:488()]hw prepare failed
> kernel BUG at mm/vmalloc.c:2355!
> Internal error: Oops - BUG: 0 [#1] SMP
> CPU: 0 PID: 531 Comm: kworker/0:4 Tainted: G W 5.4.0-77-generic #86-
> Ubuntu
> pstate: 00400009 (nzcv daif +PAN -UAO)
> Call trace:
> vunmap+0x4c/0x50
> iounmap+0x48/0x58
> qed_free_pci+0x60/0x80 [qed]
> qed_probe+0x35c/0x688 [qed]
> __qede_probe+0x88/0x5c8 [qede]
> qede_probe+0x60/0xe0 [qede]
> local_pci_probe+0x48/0xa0
> work_for_cpu_fn+0x24/0x38
> process_one_work+0x1d0/0x468
> worker_thread+0x238/0x4e0
> kthread+0xf0/0x118
> ret_from_fork+0x10/0x18
>
> In this case, qed_hw_prepare() returns error due to hw/fw error, but in
> theory work queue should be in process context instead of interrupt.
>
> The root cause might be the unpaired spin_{un}lock_bh() in
> _qed_mcp_cmd_and_union(), which causes botton half is disabled incorrectly.
>
> Reported-by: Lijian Zhang <Lijian.Zhang@arm.com>
> Signed-off-by: Jia He <justin.he@arm.com>
> Signed-off-by: David S. Miller <davem@davemloft.net>
> Signed-off-by: Sasha Levin <sashal@kernel.org>
> ---
> drivers/net/ethernet/qlogic/qed/qed_mcp.c | 23 +++++++++++++++++------
> 1 file changed, 17 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/ethernet/qlogic/qed/qed_mcp.c
> b/drivers/net/ethernet/qlogic/qed/qed_mcp.c
> index cd882c453394..caeef25c89bb 100644
> --- a/drivers/net/ethernet/qlogic/qed/qed_mcp.c
> +++ b/drivers/net/ethernet/qlogic/qed/qed_mcp.c
> @@ -474,14 +474,18 @@ _qed_mcp_cmd_and_union(struct qed_hwfn *p_hwfn,
>
> spin_lock_bh(&p_hwfn->mcp_info->cmd_lock);
>
> - if (!qed_mcp_has_pending_cmd(p_hwfn))
> + if (!qed_mcp_has_pending_cmd(p_hwfn)) {
> + spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock);
> break;
> + }
>
> rc = qed_mcp_update_pending_cmd(p_hwfn, p_ptt);
> - if (!rc)
> + if (!rc) {
> + spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock);
> break;
> - else if (rc != -EAGAIN)
> + } else if (rc != -EAGAIN) {
> goto err;
> + }
>
> spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock);
>
> @@ -498,6 +502,8 @@ _qed_mcp_cmd_and_union(struct qed_hwfn *p_hwfn,
> return -EAGAIN;
> }
>
> + spin_lock_bh(&p_hwfn->mcp_info->cmd_lock);
> +
> /* Send the mailbox command */
> qed_mcp_reread_offsets(p_hwfn, p_ptt);
> seq_num = ++p_hwfn->mcp_info->drv_mb_seq;
> @@ -524,14 +530,18 @@ _qed_mcp_cmd_and_union(struct qed_hwfn *p_hwfn,
>
> spin_lock_bh(&p_hwfn->mcp_info->cmd_lock);
>
> - if (p_cmd_elem->b_is_completed)
> + if (p_cmd_elem->b_is_completed) {
> + spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock);
> break;
> + }
>
> rc = qed_mcp_update_pending_cmd(p_hwfn, p_ptt);
> - if (!rc)
> + if (!rc) {
> + spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock);
> break;
> - else if (rc != -EAGAIN)
> + } else if (rc != -EAGAIN) {
> goto err;
> + }
>
> spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock);
> } while (++cnt < max_retries);
> @@ -554,6 +564,7 @@ _qed_mcp_cmd_and_union(struct qed_hwfn *p_hwfn,
> return -EAGAIN;
> }
>
> + spin_lock_bh(&p_hwfn->mcp_info->cmd_lock);
> qed_mcp_cmd_del_elem(p_hwfn, p_cmd_elem);
> spin_unlock_bh(&p_hwfn->mcp_info->cmd_lock);
>
> --
> 2.30.2
IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.
next prev parent reply other threads:[~2021-07-27 13:31 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-07-27 13:18 [PATCH AUTOSEL 5.13 01/21] regulator: rtmv20: Fix wrong mask for strobe-polarity-high Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 02/21] regulator: rt5033: Fix n_voltages settings for BUCK and LDO Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 03/21] spi: stm32h7: fix full duplex irq handler handling Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 04/21] ASoC: tlv320aic31xx: fix reversed bclk/wclk master bits Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 05/21] regulator: mtk-dvfsrc: Fix wrong dev pointer for devm_regulator_register Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 06/21] USB: core: Fix incorrect pipe calculation in do_proc_control() Sasha Levin
2021-07-27 13:28 ` Greg Kroah-Hartman
2021-07-27 18:54 ` Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 07/21] r8152: Fix potential PM refcount imbalance Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 08/21] r8152: Fix a deadlock by doubly PM resume Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 09/21] qed: fix possible unpaired spin_{un}lock_bh in _qed_mcp_cmd_and_union() Sasha Levin
2021-07-27 13:30 ` Justin He [this message]
2021-07-27 18:54 ` Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 10/21] ASoC: rt5682: Fix the issue of garbled recording after powerd_dbus_suspend Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 11/21] mt7530 fix mt7530_fdb_write vid missing ivl bit Sasha Levin
2021-07-27 13:18 ` [PATCH AUTOSEL 5.13 12/21] net: Fix zero-copy head len calculation Sasha Levin
2021-07-27 13:19 ` [PATCH AUTOSEL 5.13 13/21] ASoC: ti: j721e-evm: Fix unbalanced domain activity tracking during startup Sasha Levin
2021-07-27 13:19 ` [PATCH AUTOSEL 5.13 14/21] ASoC: ti: j721e-evm: Check for not initialized parent_clk_id Sasha Levin
2021-07-27 13:19 ` [PATCH AUTOSEL 5.13 15/21] efi/mokvar: Reserve the table only if it is in boot services data Sasha Levin
2021-07-27 13:19 ` [PATCH AUTOSEL 5.13 16/21] nvme: fix nvme_setup_command metadata trace event Sasha Levin
2021-07-27 13:19 ` [PATCH AUTOSEL 5.13 17/21] drm/amd/display: Fix comparison error in dcn21 DML Sasha Levin
2021-07-27 13:19 ` [PATCH AUTOSEL 5.13 18/21] drm/amd/display: Fix max vstartup calculation for modes with borders Sasha Levin
2021-07-27 13:19 ` [PATCH AUTOSEL 5.13 19/21] io_uring: never attempt iopoll reissue from release path Sasha Levin
2021-07-27 13:19 ` [PATCH AUTOSEL 5.13 20/21] io_uring: explicitly catch any illegal async queue attempt Sasha Levin
2021-07-27 13:19 ` [PATCH AUTOSEL 5.13 21/21] ACPI: fix NULL pointer dereference Sasha Levin
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=AM6PR08MB4376DF5C31C64EBFCB0276ECF7E99@AM6PR08MB4376.eurprd08.prod.outlook.com \
--to=justin.he@arm.com \
--cc=Lijian.Zhang@arm.com \
--cc=davem@davemloft.net \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=sashal@kernel.org \
--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
all inboxes | Powered by JetHome®