Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp898260pxb; Tue, 1 Feb 2022 12:43:28 -0800 (PST) X-Google-Smtp-Source: ABdhPJyyxCu1gIvKqeSFmwltrjgVkgI2WH/3/AZET1owisy2BpJlwm2n0GYO5ckloSCgaKL45XS9 X-Received: by 2002:a17:90a:be15:: with SMTP id a21mr4365760pjs.36.1643748208105; Tue, 01 Feb 2022 12:43:28 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1643748208; cv=none; d=google.com; s=arc-20160816; b=c8rsBCEA6dmco0xagDlryBnOot17rOELl88A6CHu+X7iwZf2LmOHurvff6fZQV/MXr gXm3WRmPMMS/S7kilnFwBm9gKI76u6SDdqYtki8eR/T636O6xpiKavt8AxG8ztQzjRdy l2DiA19ME2Mp+fCJ+VdD4VXIOuTyG3BsKfesBLCq1KEpHKyepG8J1iwtbLlTCVPnNXAl GqFuHDSl6PxE8Jt6tekxvMXFwhupXqjXOFwtzH548Ww/UmL98RD1faaK9k/gzBVPKs78 XB+lJrGZU0Hn1CK3DzaGAxESlDPmd3PPGLwu/Qv7aQ8O7MjQ+Iv6v4gwVX4/u2MhF/pp dg3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=fa9gh+NQkHuJp6CtCpTYvi2pW007XlzldR7gyiZdUgM=; b=gRBv7UHJoeid6N16Aw2EhO0hlV5neHqb95ZvVUsGN3Sl9ImzKyShhDJsk3gx/Fo2M0 kqhon1KvCDYpN3kXQP6P42N5M0MCdssxY94r0SZRW0Ivmomt1XERZdmAC0L0wjK5cV2r 6sH4AbyAc1rFByo3jAdK9tT/9dHqfic4ma3M1a9kUcasHoyB4qd1ErZnL3oVLtR4A4kz hZhIKNQ0o4vg4gXslK74tXopNWj8kHtaWViQDEqbiRuoqWlsKPD+jMYWHrBpo1T4xC1m qL3UvTxdkERbCMt0Gf4Gsk6oC0aSYsWQammEF3+Wmen7lpO+67LPo0XV+V5TrKBQdfey kVsg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=marcan.st Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id k20si15710056pll.387.2022.02.01.12.43.16; Tue, 01 Feb 2022 12:43:28 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=marcan.st Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1380113AbiAaQJm (ORCPT + 99 others); Mon, 31 Jan 2022 11:09:42 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:59622 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1380144AbiAaQIa (ORCPT ); Mon, 31 Jan 2022 11:08:30 -0500 Received: from mail.marcansoft.com (marcansoft.com [IPv6:2a01:298:fe:f::2]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 752C0C06174E; Mon, 31 Jan 2022 08:08:23 -0800 (PST) Received: from [127.0.0.1] (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hector@marcansoft.com) by mail.marcansoft.com (Postfix) with ESMTPSA id 65BF241EA2; Mon, 31 Jan 2022 16:08:14 +0000 (UTC) From: Hector Martin To: Kalle Valo , "David S. Miller" , Jakub Kicinski , Rob Herring , "Rafael J. Wysocki" , Len Brown , Arend van Spriel , Franky Lin , Hante Meuleman , Wright Feng , Dmitry Osipenko Cc: Hector Martin , Sven Peter , Alyssa Rosenzweig , Mark Kettenis , =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= , Pieter-Paul Giesberts , Linus Walleij , Hans de Goede , "John W. Linville" , "brian m. carlson" , Andy Shevchenko , linux-wireless@vger.kernel.org, netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-acpi@vger.kernel.org, brcm80211-dev-list.pdl@broadcom.com, SHA-cyfmac-dev-list@infineon.com, Arend van Spriel , stable@vger.kernel.org Subject: [PATCH v4 6/9] brcmfmac: pcie: Fix crashes due to early IRQs Date: Tue, 1 Feb 2022 01:07:10 +0900 Message-Id: <20220131160713.245637-7-marcan@marcan.st> X-Mailer: git-send-email 2.33.0 In-Reply-To: <20220131160713.245637-1-marcan@marcan.st> References: <20220131160713.245637-1-marcan@marcan.st> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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. Fixes: 9e37f045d5e7 ("brcmfmac: Adding PCIe bus layer support.") Reviewed-by: Linus Walleij Reviewed-by: Arend van Spriel Cc: stable@vger.kernel.org Signed-off-by: Hector Martin --- .../wireless/broadcom/brcm80211/brcmfmac/pcie.c | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c index c25f48db1f60..3ff4997e1c97 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c @@ -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; -- 2.33.0