Received: by 2002:a25:8b91:0:0:0:0:0 with SMTP id j17csp806697ybl; Fri, 24 Jan 2020 09:52:02 -0800 (PST) X-Google-Smtp-Source: APXvYqw1gEgo/u5K3g7xJny5cBhXAcPQzFPTylB/k7est3qw+tQMXX4HO5PPYAUyhmItIkI4C5xh X-Received: by 2002:a9d:7517:: with SMTP id r23mr3397837otk.235.1579888321934; Fri, 24 Jan 2020 09:52:01 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1579888321; cv=none; d=google.com; s=arc-20160816; b=WWznWe9zgLXIE0sijF26Wk5BKfyNNbYCo8/gpwrXbwmD/GSVI9ttVA+1QrlK1L29Sd KVQOk8pFVwZX3ng6yG5h/0wl6+d0+x3if8h4KA8Yf9z8j4VFOC/U9CVCOuaOTXDET9VJ 6t7HUX7gvWWFu9Acc8/ruA3JTA/TSoxcmGdTrbHmWTLrGW/k17amC8J9DM4qecW2u128 QrkmSeip5BItodJqVsLECEOiUrfkoYqjZu/agZnPUXX9d5ma+2jBWmn4g+o6sS2VvRSf SSX33Vl0k5q1kUS297zikjOPeVvsd62dWvj2B5FY8EzGqRXMVaMLvE2kDsa0eKFHlpTj VerQ== 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=9NFLfjoJUwKR6gpKP4X/miJP/EmDgbcA7WVZWo8EyZg=; b=LNUFt7In8/FnureW08lv7neBQdOr1nDRd6bIeOKEK7V9+7Zjb9jtHh+lRCeIi158+0 0CgToOvcHbbIILDpsB1xH0d2Meo75bi5EPK5brWAhJUthKzXI0YfsPfpvXXoOAiq3Sb6 gaOydhM6oDPAScBhylUxDv0yAcShQudLodC3hD9fN0HZ+n8FUSSYrUXhxBE9+jXFA2T5 inM32KqHI891nqa4i7pvXQa3MKQ3SznkBIMB5ouTHN+wKTlPg3hDWM1AackVb7DScQuE zmOQL+RQFZA14zZwEbYXgw/IMB55HxO7JRfdVhe9AFTMM1mPXbgy0mVntUyRMTI9LZIS KneQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=BhRP2wA2; 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 p26si3081931oto.240.2020.01.24.09.51.49; Fri, 24 Jan 2020 09:52:01 -0800 (PST) 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=BhRP2wA2; 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 S2390514AbgAXLR2 (ORCPT + 99 others); Fri, 24 Jan 2020 06:17:28 -0500 Received: from mail.kernel.org ([198.145.29.99]:54408 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726173AbgAXLR1 (ORCPT ); Fri, 24 Jan 2020 06:17:27 -0500 Received: from localhost (ip-213-127-102-57.ip.prioritytelecom.net [213.127.102.57]) (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 20FED2087E; Fri, 24 Jan 2020 11:17:25 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1579864646; bh=+J6A71TgH4yJh6jNm/ZKKrDF7h0ZOORpwyKyg3R/p94=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=BhRP2wA2c53yV4IIAGbxV4TymXXWE+C8wuWlMAwyIe8ofWlpeQI30ZjPwBnzB/Bir c/SKTsWBDI8F3zmdf/vzH4wN7D1kTeO1Yqln1lF1NTVE/5rVJLglqOBpVJYAXVQttS AOfy9rNf65MZPWGcGwlL/C9YfQeno8zSespaAciQ= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Kishon Vijay Abraham I , Lorenzo Pieralisi , Sasha Levin Subject: [PATCH 4.19 312/639] PCI: dwc: Fix dw_pcie_ep_find_capability() to return correct capability offset Date: Fri, 24 Jan 2020 10:28:02 +0100 Message-Id: <20200124093126.050826344@linuxfoundation.org> X-Mailer: git-send-email 2.25.0 In-Reply-To: <20200124093047.008739095@linuxfoundation.org> References: <20200124093047.008739095@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 From: Kishon Vijay Abraham I [ Upstream commit 421db1ab287eebe80fd203eb009ae92836c586ad ] commit beb4641a787d ("PCI: dwc: Add MSI-X callbacks handler") while adding MSI-X callback handler, introduced dw_pcie_ep_find_capability() and __dw_pcie_ep_find_next_cap() for finding the MSI and MSIX capability. However if MSI or MSIX capability is the last capability (i.e there are no additional items in the capabilities list and the Next Capability Pointer is set to '0'), __dw_pcie_ep_find_next_cap will return '0' even though MSI or MSIX capability may be present because of incorrect ordering of the "next_cap_ptr" check. Fix it. Fixes: beb4641a787d ("PCI: dwc: Add MSI-X callbacks handler") Signed-off-by: Kishon Vijay Abraham I Signed-off-by: Lorenzo Pieralisi Signed-off-by: Sasha Levin --- drivers/pci/controller/dwc/pcie-designware-ep.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/drivers/pci/controller/dwc/pcie-designware-ep.c b/drivers/pci/controller/dwc/pcie-designware-ep.c index 739d97080d3bd..a3d07d9c598bf 100644 --- a/drivers/pci/controller/dwc/pcie-designware-ep.c +++ b/drivers/pci/controller/dwc/pcie-designware-ep.c @@ -46,16 +46,19 @@ static u8 __dw_pcie_ep_find_next_cap(struct dw_pcie *pci, u8 cap_ptr, u8 cap_id, next_cap_ptr; u16 reg; + if (!cap_ptr) + return 0; + reg = dw_pcie_readw_dbi(pci, cap_ptr); - next_cap_ptr = (reg & 0xff00) >> 8; cap_id = (reg & 0x00ff); - if (!next_cap_ptr || cap_id > PCI_CAP_ID_MAX) + if (cap_id > PCI_CAP_ID_MAX) return 0; if (cap_id == cap) return cap_ptr; + next_cap_ptr = (reg & 0xff00) >> 8; return __dw_pcie_ep_find_next_cap(pci, next_cap_ptr, cap); } @@ -67,9 +70,6 @@ static u8 dw_pcie_ep_find_capability(struct dw_pcie *pci, u8 cap) reg = dw_pcie_readw_dbi(pci, PCI_CAPABILITY_LIST); next_cap_ptr = (reg & 0x00ff); - if (!next_cap_ptr) - return 0; - return __dw_pcie_ep_find_next_cap(pci, next_cap_ptr, cap); } -- 2.20.1