From patchwork Sun Apr 16 12:18:08 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: 83848 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp1528435vqo; Sun, 16 Apr 2023 05:28:37 -0700 (PDT) X-Google-Smtp-Source: AKy350af5YFZQT24N6ieeViJnT4K43zhL5FCGkBVPICwYMueweMhI5TgFwZS8y7OJcrQU/5rtaDZ X-Received: by 2002:a05:6a00:1821:b0:63c:6485:d5fd with SMTP id y33-20020a056a00182100b0063c6485d5fdmr410429pfa.2.1681648116986; Sun, 16 Apr 2023 05:28:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1681648116; cv=none; d=google.com; s=arc-20160816; b=ZKaXAwcpcR722G1/fan4+7KFmSJzHSshgeIUoYXNDEtfJ/y7mvJhCKZ0dH07FbcRFj 4It3+zUdCSPDo1EPhsyJG30i6mw00toQqkU1MBbIrXSEGDHar2B4Y/vSWCbtbjK+LAOJ HDbvfvu23hHBm/N1W/wF/UkY+FvkkTT3ds9LPn217Eza5f9RFx/fxs3Ae450SZg4ZD+x gpkMQGNmXCCeULeeZ2X0U1/2+aIsJuV8xv2KhNKRkJtDj18YjCaszJElE/0KRLK++q+j wB1RbZyDB7WDFyx2Qn1+NG1taVy2bQJ0LQTE7VotUoo7CbHefw1zClBGpYe2JpgqblCu G7QA== 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=Gm13XR83C+iXnaO/oyyAu8Erv5pXx7ACG/cP6MvwbWQ=; b=InyvrHG8yJ5DIUPl1h+BHEUtf3U0r23DY1eJ/IbsM2i8Rx05dHEVF7jKAi9n/xQETH P/KMulg8ar/YBg43a2WbiLYi7DZ9ts7RM7VBmIRHOsU19/bw3fuvIb6j9cLwrdtjNjpN QovLEzHAdu8y/3HVtxsEFb8791OglCvLm0qXcxX/S7rNbzBzQuCuTOkzrsa9bNz8CCp1 ar2Mv5zCl0gemqH/jIt1aol8sR271uXdClEKnB7eqlHQ6+7lgjEQlurWxWsSyViq/QhU fP3hoxon9jEFSoR1oemyyh79nmah3IwPySdvQgnTRZJSId8GwCjHfHQY/sy50qljkgkD a+ww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linutronix.de header.s=2020 header.b=bve1NIyg; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e; 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 k9-20020aa79729000000b00625c6092a13si9777660pfg.220.2023.04.16.05.28.20; Sun, 16 Apr 2023 05:28:36 -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=bve1NIyg; dkim=neutral (no key) header.i=@linutronix.de header.s=2020e; 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 S230064AbjDPMSO (ORCPT + 99 others); Sun, 16 Apr 2023 08:18:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:42858 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229458AbjDPMSN (ORCPT ); Sun, 16 Apr 2023 08:18:13 -0400 Received: from galois.linutronix.de (Galois.linutronix.de [IPv6:2a0a:51c0:0:12e:550::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2B2244C02; Sun, 16 Apr 2023 05:18:12 -0700 (PDT) Date: Sun, 16 Apr 2023 12:18:08 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020; t=1681647489; 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=Gm13XR83C+iXnaO/oyyAu8Erv5pXx7ACG/cP6MvwbWQ=; b=bve1NIygEl2stF03kSSMBPHqV1XxEAS/5iCfaLdhmgZCdr2HpJTBT5gI+f+Gv16TBiqEFT tk0f/hEA9qJLZK7KHOi0mYjCDacBgq83wKQxxeBHWnJDG7v/yxEGItbMBhcLszreY+li7g YVWMLXCNZQ3qGGS/uE38nhgE6u9ooCkfz85LoM4jA1DstZFtKz+I2gbrmhTzJb66Ex1ayD MXAlX6jKKwFZSDzahPmaM3NcKlga7FFZZLBYkYow3Gj78L3qoVJ2c+gemnlQAN6e64wDVS biMHjuziyPWbdf0nvkvXnk9GtKaa+yFQC+BfgZPkph6+t9rJelHWu71yPcepGg== DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=linutronix.de; s=2020e; t=1681647489; 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=Gm13XR83C+iXnaO/oyyAu8Erv5pXx7ACG/cP6MvwbWQ=; b=JUuWxIgM0LjUfDfcnmUKrD3lFtYJKxhL8J5h8saCI7Ou4UMchX9x7KqmyzdLv76i//n8zC Vx3fRBhuB4yEw9BQ== 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: <168164748857.404.4755357620928545423.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,T_SCC_BODY_TEXT_LINE,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?1763335856046639627?= The following commit has been merged into the irq/urgent branch of tip: Commit-ID: e3c026be4d3ca046799fde55ccbae9d0f059fb93 Gitweb: https://git.kernel.org/tip/e3c026be4d3ca046799fde55ccbae9d0f059fb93 Author: Thomas Gleixner AuthorDate: Mon, 10 Apr 2023 21:14:45 +02:00 Committer: Thomas Gleixner CommitterDate: Sun, 16 Apr 2023 14:11:51 +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..ef1d885 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 nvec) { 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) {