Received: by 2002:a25:ab43:0:0:0:0:0 with SMTP id u61csp251719ybi; Wed, 29 May 2019 20:40:50 -0700 (PDT) X-Google-Smtp-Source: APXvYqzxCJj+dAhJh71mjPjcz5YksruAElLHix+njoAKQguOrdhOd52u5xQsVAjSZKMTANrfinzc X-Received: by 2002:a62:d044:: with SMTP id p65mr1481489pfg.37.1559187650252; Wed, 29 May 2019 20:40:50 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1559187650; cv=none; d=google.com; s=arc-20160816; b=bTrPhY2jPZ6FtI+5t36Ix3Gbs7t+kAVh92Ly4SNQ/WL2/13C0fs3xbFRaEtnaMSnOV zLq0o+d7NvNFflhx6OU25UZP+J8nA0rtOMQHwFvHkU22zMaaN7gBdcXP8hAhxvftWdDU GiY09kplHbw0KoMvOT4pfDmvNRncOH2pS6hyIAQW26butuxqURQZbCbdvjKfPGvevcsR uq0Tu+3tLC9YP5YYH1c+oaBt+Cpf8L9sEskRSH430maHbJHNCANp3BcnrGx2Ni/NEjA+ TwKZTPDe2b0rYOgxP+4DOY1sjr7kVspYlEjZgLTGX5fMbICnKHYKCr9PSDkOVPNhwMt1 vtsQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=ogr8mNq7IQ1fCk1PufHeq2DuuxCl5QcGarDhsNP+zns=; b=rINqYZQYxWE6q0ExqIbH6Gf2MUgVOIuNVCjtf6DvlffTe/J+wuD5nJrF3iG1YFESih 4ZlPCpD2g/sfSy1ulZnxX1cQ6bKTKRQYdi/1zzSOTU7vbVjEHy+ct5Lcg3HqzYnklt1v 6/6yK7H+0Crz8dkC+49htY1lCblKbbSk4+/5I/UWqtcDCWIbIAaWtdR4NqwO/CXe3sUI bMfFT/LOk7Sfte5qf+CZc6qPo/GmiPT//Qq34PODsExsAw5cg3U7QRToeteEbwCDwS4k /WynqsR1IdUNnTq84D0wI8yRgsLfB+ONpfdyUKiPmtTzEH8e2NYJzsA20H84j3BbCEN/ TJAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pMAxvOPS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id v5si1896610pgs.285.2019.05.29.20.40.32; Wed, 29 May 2019 20:40:50 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=pMAxvOPS; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732961AbfE3DWx (ORCPT + 99 others); Wed, 29 May 2019 23:22:53 -0400 Received: from mail.kernel.org ([198.145.29.99]:45190 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729306AbfE3DRI (ORCPT ); Wed, 29 May 2019 23:17:08 -0400 Received: from localhost (ip67-88-213-2.z213-88-67.customer.algx.net [67.88.213.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPSA id 41CEB24677; Thu, 30 May 2019 03:17:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1559186228; bh=C3ZDdjFT/jI5HBPcnzTA83LDoHog36YyeaKM7WpykOw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pMAxvOPSvBNBgPLmkzd6cfyztutsU7ERvAk45gB2fv3WogcZNSoe/IwnwAuOBjUv7 omjBum5CzkV5vAD8gpicYaLcqI7ToFdSUH2pU5NuwSRREdlrZBkhsGE7+S36yWeRBm jPBscdyT0G2VKILBSaWxdMqfAz6Kh6z1DMdxUkhg= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Johannes Berg , Luca Coelho , Sasha Levin Subject: [PATCH 4.19 083/276] iwlwifi: pcie: dont crash on invalid RX interrupt Date: Wed, 29 May 2019 20:04:01 -0700 Message-Id: <20190530030531.510521696@linuxfoundation.org> X-Mailer: git-send-email 2.21.0 In-Reply-To: <20190530030523.133519668@linuxfoundation.org> References: <20190530030523.133519668@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org [ Upstream commit 30f24eabab8cd801064c5c37589d803cb4341929 ] If for some reason the device gives us an RX interrupt before we're ready for it, perhaps during device power-on with misconfigured IRQ causes mapping or so, we can crash trying to access the queues. Prevent that by checking that we actually have RXQs and that they were properly allocated. Signed-off-by: Johannes Berg Signed-off-by: Luca Coelho Signed-off-by: Sasha Levin --- drivers/net/wireless/intel/iwlwifi/pcie/rx.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c index b2905f01b7df3..6dcd5374d9b4d 100644 --- a/drivers/net/wireless/intel/iwlwifi/pcie/rx.c +++ b/drivers/net/wireless/intel/iwlwifi/pcie/rx.c @@ -1388,10 +1388,15 @@ static struct iwl_rx_mem_buffer *iwl_pcie_get_rxb(struct iwl_trans *trans, static void iwl_pcie_rx_handle(struct iwl_trans *trans, int queue) { struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans); - struct iwl_rxq *rxq = &trans_pcie->rxq[queue]; + struct iwl_rxq *rxq; u32 r, i, count = 0; bool emergency = false; + if (WARN_ON_ONCE(!trans_pcie->rxq || !trans_pcie->rxq[queue].bd)) + return; + + rxq = &trans_pcie->rxq[queue]; + restart: spin_lock(&rxq->lock); /* uCode's read index (stored in shared DRAM) indicates the last Rx -- 2.20.1