FAILED: patch "[PATCH] brcmfmac: pcie: Fix crashes due to early IRQs" failed to apply to 4.14-stable tree
Subsystems (2)
[email protected]
maintainerThe patch below does not apply to the 4.14-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From b50255c83b914defd61a57fbc81d452334b63f4c Mon Sep 17 00:00:00 2001
From: Hector Martin <[email protected]>
Date: Tue, 1 Feb 2022 01:07:10 +0900
Subject: [PATCH] brcmfmac: pcie: Fix crashes due to early IRQs
The driver was enabling IRQs before the message processing was initialized. This could cause IRQs to come in too early and crash the driver. Instead, move the IRQ enable and hostready to a bus preinit function, at which point everything is properly initialized.
drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +13 -3
@@ -1315,6 +1315,18 @@ static void brcmf_pcie_down(struct device *dev) { } +static int brcmf_pcie_preinit (struct device *dev) +{ +struct brcmf_bus *bus_if =dev_get_drvdata (dev); +struct brcmf_pciedev *buspub = bus_if->bus_priv.pcie; + +brcmf_dbg (PCIE ,"Enter\n" ); + +brcmf_pcie_intr_enable (buspub->devinfo); +brcmf_pcie_hostready (buspub->devinfo); + +return 0 ; +}static int brcmf_pcie_tx (struct device *dev,struct sk_buff *skb) {
@@ -1423,6 +1435,7 @@ static int brcmf_pcie_reset(struct device *dev) }static const struct brcmf_bus_ops brcmf_pcie_bus_ops = { + .preinit = brcmf_pcie_preinit, .txdata = brcmf_pcie_tx, .stop = brcmf_pcie_down, .txctl = brcmf_pcie_tx_ctlpkt,
@@ -1795,9 +1808,6 @@ static void brcmf_pcie_setup(struct device *dev, int ret,init_waitqueue_head (&devinfo->mbdata_resp_wait); -brcmf_pcie_intr_enable (devinfo); -brcmf_pcie_hostready (devinfo); - ret =brcmf_attach (&devinfo->pdev->dev);if (ret) goto fail;