Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 09417fbf authored by William Zhang's avatar William Zhang Committed by Greg Kroah-Hartman
Browse files

mtd: rawnand: brcmnand: Fix crash during the panic_write



commit e66dd317194daae0475fe9e5577c80aa97f16cb9 upstream.

When executing a NAND command within the panic write path, wait for any
pending command instead of calling BUG_ON to avoid crashing while
already crashing.

Fixes: 27c5b17c ("mtd: nand: add NAND driver "library" for Broadcom STB NAND controller")
Signed-off-by: default avatarWilliam Zhang <william.zhang@broadcom.com>
Reviewed-by: default avatarFlorian Fainelli <florian.fainelli@broadcom.com>
Reviewed-by: default avatarKursad Oney <kursad.oney@broadcom.com>
Reviewed-by: default avatarKamal Dasu <kamal.dasu@broadcom.com>
Cc: stable@vger.kernel.org
Signed-off-by: default avatarMiquel Raynal <miquel.raynal@bootlin.com>
Link: https://lore.kernel.org/linux-mtd/20230706182909.79151-4-william.zhang@broadcom.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent aa64f6f0
Loading
Loading
Loading
Loading
+11 −1
Original line number Diff line number Diff line
@@ -1331,6 +1331,16 @@ static void brcmnand_send_cmd(struct brcmnand_host *host, int cmd)

	dev_dbg(ctrl->dev, "send native cmd %d addr 0x%llx\n", cmd, cmd_addr);

	/*
	 * If we came here through _panic_write and there is a pending
	 * command, try to wait for it. If it times out, rather than
	 * hitting BUG_ON, just return so we don't crash while crashing.
	 */
	if (oops_in_progress) {
		if (ctrl->cmd_pending &&
			bcmnand_ctrl_poll_status(ctrl, NAND_CTRL_RDY, NAND_CTRL_RDY, 0))
			return;
	} else
		BUG_ON(ctrl->cmd_pending != 0);
	ctrl->cmd_pending = cmd;