From patchwork Sat Apr 15 21:21:33 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: tip-bot2 for Thomas Gleixner X-Patchwork-Id: 83771 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1244023vqo; Sat, 15 Apr 2023 14:29:32 -0700 (PDT) X-Google-Smtp-Source: AKy350YSt/dTe5jpx/1qYQ04xKigRh4NFEq0RkC13sypQ619cKc/X2nWebYz5bQWli0zcUxEJQ30 X-Received: by 2002:a05:6a20:428e:b0:ec:1bf0:4e51 with SMTP id o14-20020a056a20428e00b000ec1bf04e51mr13820027pzj.12.1681594171796; Sat, 15 Apr 2023 14:29:31 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681594171; cv=none; d=google.com; s=arc-20160816; b=zYmN2WvwGeVOc7xxbcWaXWqxzbTylpLzAfuR8/PTx5LDUZTLIoAztuXOraX+/K4872 wIAvJF6tREJVsrQvCaIgJKGZu2QlhaucD0h7LH8GsIWQKo/4h99mKiXiK3xBCzkPaN6h bgiFN4Ut7KunAGJDI1IrlLhlXVLm8jh6o8ZtvEOX3qLSdbCgIjCPLySqLon/4VaA6t5v 9heZrebUT3fSEOdzE2yIM7PioMzaQfgAXyrMXbFzrz479zvsZLWm4tf0eSD3Pmq5qnx+ kI8D728JOlegnOiEEtL8SneW+eEJDUy7tryD19mMp4XUHowneYAAkvZapLyE9+cgYGVv vzeg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:robot-unsubscribe :robot-id:message-id:mime-version:references:in-reply-to:cc:subject :to:reply-to:sender:from:dkim-signature:dkim-signature:date; bh=+TUSThRTgdTWs/ai6cPSjjl0Mnq13OWeaBORpLGVL2c=; b=J4+EqFEQxapQolXScomqAb/e9sa1V5RXruaEWQqiSaY+ME7HJm5pr0z7JITqAqij+6 idCm7Bf1pCovfSZKg6hm9Gbu0tTsAYwdT9FePO70EbadaikWsc1XxugUyuoqLJvjvsp4 tgMW1f2eEIvgQRQXFpmkb0zWmkuFOIc3dX5BTuPRX6T+9n7yM1iZ6if7/jVfmjS31j0e nyJJP8DgS4lzr6VdgEO9j33oaNgjL/IerU55BGyp4Jk+Z97m/aWMPnFx/rZbmrmnlMZ6 Q7uUjB1f8P4iYrPoh530BlqookQ9bRJYWKp2t0vlonhdx6fF/GI4A/6CCU8vjGLJ9dZ3 XDkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=pWc+tjnO; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=LmCsz3t5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id w20-20020a63d754000000b004fb921d0184si8115452pgi.146.2023.04.15.14.29.15; Sat, 15 Apr 2023 14:29:31 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=pWc+tjnO; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e header.b=LmCsz3t5; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=linutronix.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229908AbjDOVVi (ORCPT + 99 others); Sat, 15 Apr 2023 17:21:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60912 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229642AbjDOVVg (ORCPT ); Sat, 15 Apr 2023 17:21:36 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [193.142.43.55]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 361CB30F3; Sat, 15 Apr 2023 14:21:35 -0700 (PDT) Date: Sat, 15 Apr 2023 21:21:33 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1681593693; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+TUSThRTgdTWs/ai6cPSjjl0Mnq13OWeaBORpLGVL2c=; b=pWc+tjnOt6127IJkmF4dTlGBXvZWNIbFDs4Nqw8azUryWap2LnQN/hvkZhHRZij+j+lT8n VX0kDH85d6ZAEhXcqhAAzl3+/Yz3npl8EHX9EG21YcfX3yJxAMPV1mZHNDqrTQJcig8ie+ gXg//fw1qTyMmza06XLIoZof7GCvXDayiigNunoCqYbSmqAaTdGzLnOx6UZ2MPWdVY3Gru OSByYgZ/CIymsymGfZhuhomxzrtKuWdVZUKbOLl3mzZWMG5k8JjPmegkBCGEo5l8poXrv5 rnMjoVJTvuA6uPL4NBnA/1g1kPVRP8lxu01jMfP/mZ9Jb2OLow7Sax5znZtp3g== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1681593693; h=from:from:sender:sender:reply-to:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=+TUSThRTgdTWs/ai6cPSjjl0Mnq13OWeaBORpLGVL2c=; b=LmCsz3t5fubHF/YUISNn3GBTQ/pZhIj9Mp7VogmousplRXLJmGtJ6P2vyoZR7sW3+L57jr BDMqrBcrE8AtaWAw== From: "tip-bot2 for Thomas Gleixner" Sender: tip-bot2@linutronix.de Reply-to: linux-kernel@vger.kernel.org To: linux-tip-commits@vger.kernel.org Subject: [tip: irq/urgent] PCI/MSI: Remove over-zealous hardware size check in pci_msix_validate_entries() Cc: David Laight , Thomas Gleixner , stable@vger.kernel.org, x86@kernel.org, linux-kernel@vger.kernel.org, maz@kernel.org In-Reply-To: <87v8i3sg62.ffs@tglx> References: <87v8i3sg62.ffs@tglx> MIME-Version: 1.0 Message-ID: <168159369349.404.3067509099059917093.tip-bot2@tip-bot2> Robot-ID: Robot-Unsubscribe: Contact to get blacklisted from these emails X-Spam-Status: No, score=-4.4 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_MED,SPF_HELO_NONE, SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1762818734042249019?= X-GMAIL-MSGID: =?utf-8?q?1763279290388455629?= The following commit has been merged into the irq/urgent branch of tip: Commit-ID: 84d9651e13fb9820041d19262a55906851524c0f Gitweb: https://git.kernel.org/tip/84d9651e13fb9820041d19262a55906851524c0f Author: Thomas Gleixner AuthorDate: Mon, 10 Apr 2023 21:14:45 +02:00 Committer: Thomas Gleixner CommitterDate: Sat, 15 Apr 2023 23:17:32 +02:00 PCI/MSI: Remove over-zealous hardware size check in pci_msix_validate_entries() pci_msix_validate_entries() validates the entries array which is handed in by the caller for a MSI-X interrupt allocation. Aside of consistency failures it also detects a failure when the size of the MSI-X hardware table in the device is smaller than the size of the entries array. That's wrong for the case of range allocations where the caller provides the minimum and the maximum number of vectors to allocate, when the hardware size is greater or equal than the mininum, but smaller than the maximum. Remove the hardware size check completely from that function and just ensure that the entires array up to the maximum size is consistent. The limitation and range checking versus the hardware size happens independently of that afterwards anyway because the entries array is optional. Fixes: 4644d22eb673 ("PCI/MSI: Validate MSI-X contiguous restriction early") Reported-by: David Laight Signed-off-by: Thomas Gleixner Cc: stable@vger.kernel.org Link: https://lore.kernel.org/r/87v8i3sg62.ffs@tglx --- drivers/pci/msi/msi.c | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/drivers/pci/msi/msi.c b/drivers/pci/msi/msi.c index 1f71662..24899d9 100644 --- a/drivers/pci/msi/msi.c +++ b/drivers/pci/msi/msi.c @@ -750,8 +750,7 @@ out_disable: return ret; } -static bool pci_msix_validate_entries(struct pci_dev *dev, struct msix_entry *entries, - int nvec, int hwsize) +static bool pci_msix_validate_entries(struct pci_dev *dev, struct msix_entry *entries, int nvev) { bool nogap; int i, j; @@ -762,10 +761,6 @@ static bool pci_msix_validate_entries(struct pci_dev *dev, struct msix_entry *en nogap = pci_msi_domain_supports(dev, MSI_FLAG_MSIX_CONTIGUOUS, DENY_LEGACY); for (i = 0; i < nvec; i++) { - /* Entry within hardware limit? */ - if (entries[i].entry >= hwsize) - return false; - /* Check for duplicate entries */ for (j = i + 1; j < nvec; j++) { if (entries[i].entry == entries[j].entry) @@ -805,7 +800,7 @@ int __pci_enable_msix_range(struct pci_dev *dev, struct msix_entry *entries, int if (hwsize < 0) return hwsize; - if (!pci_msix_validate_entries(dev, entries, nvec, hwsize)) + if (!pci_msix_validate_entries(dev, entries, nvec)) return -EINVAL; if (hwsize < nvec) {