Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1148887ybz; Fri, 1 May 2020 15:44:02 -0700 (PDT) X-Google-Smtp-Source: APiQypLG0O+95iFier+FFoe3f4BenjPvzD0XcsRSlBDkZ9uOLxAB4Gd2/AgBuOy3FS6BnCbO3qFN X-Received: by 2002:a17:906:9718:: with SMTP id k24mr5431975ejx.229.1588373042173; Fri, 01 May 2020 15:44:02 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1588373042; cv=none; d=google.com; s=arc-20160816; b=EKOsYc2X5nNwrjpXaX5waLkAykPi9Sj4Y2ldX5f3OXjMtzGfZFrAlmEn/90m1p7uDc VI2GQwz330HBpCCNUzh0gY6mT2AnJKwZhIn0TTTL1bC05787QOAskUGfw3BM8hMExnDA Xu8juXPmo/Ns0dhNQEx9WVDYpPLoauL4lVBKTecstb6fRYZEJvrQWnJMRju+WeRhiOC0 yr9NqiIi5SiqSzGUknJfeYBRbg+wVOmiH0B2E0S+ymoEerN2pXns38WAG/nHGFRr3VEZ 7qQYnRs7eMGsdkyuAgaBveEM5MC6+l5otk0IfshropGCG8Z//EkfAsrPLizSYkvURm58 umsw== 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 :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=4LcOWjXgR/FTHxm5VCFssP9PdY6z/MQMk9dg9d3IkZk=; b=cRIo3MH3fuQsSTi1nWABUPWTpgppvvtNDJJ4pbvvH1mm0VsqiK5TFY+Glx4Zxaa7jm qpi5D+0+f3GPQhBgPVPTWl+BK8wBwGQ9pzbGm9VrKKYJ7Juf6z9/hTCWkYaminNLYDAb 3q3SCc6ZmdzR6PTTInGBNVKFxup+DOr0Uozh2Wax5Zx77CVX1lk/48J5NKeFzjjr91AS Tt9rBGH04+VWTs37PyBeE13FtZImoEs1O/LzPVKF39sOrcznIhKAiZXaI0hQ42ueX89C 1ZE7GapgEXq07jkfBF4nPwjCgqJxY+yeHTM3j+SSqVlw0G6HerS+MGeihnNKbRkvF8uI dHTQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=default header.b=jZ4WAOsM; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id e7si2417234ejq.15.2020.05.01.15.43.37; Fri, 01 May 2020 15:44:02 -0700 (PDT) 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; dkim=pass header.i=@kernel.org header.s=default header.b=jZ4WAOsM; 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=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726933AbgEAWlZ (ORCPT + 99 others); Fri, 1 May 2020 18:41:25 -0400 Received: from mail.kernel.org ([198.145.29.99]:42506 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726900AbgEAWlZ (ORCPT ); Fri, 1 May 2020 18:41:25 -0400 Received: from localhost (mobile-166-175-184-168.mycingular.net [166.175.184.168]) (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 C72E82166E; Fri, 1 May 2020 22:41:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=default; t=1588372884; bh=2Rzwabl4WPMkIvoQi8BMthTxuqjdUuAlNljzQi4IsIA=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jZ4WAOsMCK42L2fdFojVCjplvhG+1DBwPv8WjUcUCq5ISB9tcW5zM7WootBn0VY5e UtnXJomgGyhiT9Ii+KBsfnLSk5qDNTqaqD/XvEHNcnBhBRfa+DS2l9dy9qGHHeJ2Sv XbzcRld6sB1x33vonyCoUSpM6/Xgbn2ReyGUlBSo= From: Bjorn Helgaas To: Greg Kroah-Hartman , Thomas Gleixner Cc: "Rafael J . Wysocki" , Aman Sharma , linux-pci@vger.kernel.org, linux-kernel@vger.kernel.org, Bjorn Helgaas , Richard Zhu , Lucas Stach , Thierry Reding , Karthikeyan Mitran , Hou Zhiqiang , Thomas Petazzoni , Linus Walleij , Ryder Lee , Marc Gonzalez Subject: [PATCH v2 2/2] PCI: Check for platform_get_irq() failure consistently Date: Fri, 1 May 2020 17:40:42 -0500 Message-Id: <20200501224042.141366-3-helgaas@kernel.org> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200501224042.141366-1-helgaas@kernel.org> References: <20200501224042.141366-1-helgaas@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Aman Sharma The platform_get_irq*() interfaces return either a negative error number or a valid IRQ. 0 is not a valid return value, so check for "< 0" to detect failure as recommended by the function documentation. On failure, return the error number from platform_get_irq*() instead of making up a new one. Link: https://lore.kernel.org/r/cover.1583952275.git.amanharitsh123@gmail.com [bhelgaas: commit log, squash into one patch] Signed-off-by: Aman Sharma Signed-off-by: Bjorn Helgaas Cc: Richard Zhu Cc: Lucas Stach Cc: Thierry Reding Cc: Karthikeyan Mitran Cc: Hou Zhiqiang Cc: Thomas Petazzoni Cc: Linus Walleij Cc: Ryder Lee Cc: Marc Gonzalez --- drivers/pci/controller/dwc/pci-imx6.c | 4 ++-- drivers/pci/controller/dwc/pcie-tegra194.c | 4 ++-- drivers/pci/controller/mobiveil/pcie-mobiveil-host.c | 4 ++-- drivers/pci/controller/pci-aardvark.c | 3 +++ drivers/pci/controller/pci-v3-semi.c | 4 ++-- drivers/pci/controller/pcie-mediatek.c | 3 +++ drivers/pci/controller/pcie-tango.c | 4 ++-- 7 files changed, 16 insertions(+), 10 deletions(-) diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c index acfbd34032a8..8f08ae53f53e 100644 --- a/drivers/pci/controller/dwc/pci-imx6.c +++ b/drivers/pci/controller/dwc/pci-imx6.c @@ -868,9 +868,9 @@ static int imx6_add_pcie_port(struct imx6_pcie *imx6_pcie, if (IS_ENABLED(CONFIG_PCI_MSI)) { pp->msi_irq = platform_get_irq_byname(pdev, "msi"); - if (pp->msi_irq <= 0) { + if (pp->msi_irq < 0) { dev_err(dev, "failed to get MSI irq\n"); - return -ENODEV; + return pp->msi_irq; } } diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c index ae30a2fd3716..f1f945cc7bcb 100644 --- a/drivers/pci/controller/dwc/pcie-tegra194.c +++ b/drivers/pci/controller/dwc/pcie-tegra194.c @@ -2190,9 +2190,9 @@ static int tegra_pcie_dw_probe(struct platform_device *pdev) } pp->irq = platform_get_irq_byname(pdev, "intr"); - if (!pp->irq) { + if (pp->irq < 0) { dev_err(dev, "Failed to get \"intr\" interrupt\n"); - return -ENODEV; + return pp->irq; } pcie->bpmp = tegra_bpmp_get(dev); diff --git a/drivers/pci/controller/mobiveil/pcie-mobiveil-host.c b/drivers/pci/controller/mobiveil/pcie-mobiveil-host.c index a94be264240f..5907baa9b1f2 100644 --- a/drivers/pci/controller/mobiveil/pcie-mobiveil-host.c +++ b/drivers/pci/controller/mobiveil/pcie-mobiveil-host.c @@ -522,9 +522,9 @@ static int mobiveil_pcie_integrated_interrupt_init(struct mobiveil_pcie *pcie) mobiveil_pcie_enable_msi(pcie); rp->irq = platform_get_irq(pdev, 0); - if (rp->irq <= 0) { + if (rp->irq < 0) { dev_err(dev, "failed to map IRQ: %d\n", rp->irq); - return -ENODEV; + return rp->irq; } /* initialize the IRQ domains */ diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c index 2a20b649f40c..40a4257f0df1 100644 --- a/drivers/pci/controller/pci-aardvark.c +++ b/drivers/pci/controller/pci-aardvark.c @@ -973,6 +973,9 @@ static int advk_pcie_probe(struct platform_device *pdev) return PTR_ERR(pcie->base); irq = platform_get_irq(pdev, 0); + if (irq < 0) + return irq; + ret = devm_request_irq(dev, irq, advk_pcie_irq_handler, IRQF_SHARED | IRQF_NO_THREAD, "advk-pcie", pcie); diff --git a/drivers/pci/controller/pci-v3-semi.c b/drivers/pci/controller/pci-v3-semi.c index bd05221f5a22..a5bf945d2eda 100644 --- a/drivers/pci/controller/pci-v3-semi.c +++ b/drivers/pci/controller/pci-v3-semi.c @@ -777,9 +777,9 @@ static int v3_pci_probe(struct platform_device *pdev) /* Get and request error IRQ resource */ irq = platform_get_irq(pdev, 0); - if (irq <= 0) { + if (irq < 0) { dev_err(dev, "unable to obtain PCIv3 error IRQ\n"); - return -ENODEV; + return irq; } ret = devm_request_irq(dev, irq, v3_irq, 0, "PCIv3 error", v3); diff --git a/drivers/pci/controller/pcie-mediatek.c b/drivers/pci/controller/pcie-mediatek.c index cb982891b22b..ebfa7d5a4e2d 100644 --- a/drivers/pci/controller/pcie-mediatek.c +++ b/drivers/pci/controller/pcie-mediatek.c @@ -651,6 +651,9 @@ static int mtk_pcie_setup_irq(struct mtk_pcie_port *port, } port->irq = platform_get_irq(pdev, port->slot); + if (port->irq < 0) + return port->irq; + irq_set_chained_handler_and_data(port->irq, mtk_pcie_intr_handler, port); diff --git a/drivers/pci/controller/pcie-tango.c b/drivers/pci/controller/pcie-tango.c index 21a208da3f59..18c2c4313eb5 100644 --- a/drivers/pci/controller/pcie-tango.c +++ b/drivers/pci/controller/pcie-tango.c @@ -273,9 +273,9 @@ static int tango_pcie_probe(struct platform_device *pdev) writel_relaxed(0, pcie->base + SMP8759_ENABLE + offset); virq = platform_get_irq(pdev, 1); - if (virq <= 0) { + if (virq < 0) { dev_err(dev, "Failed to map IRQ\n"); - return -ENXIO; + return virq; } irq_dom = irq_domain_create_linear(fwnode, MSI_MAX, &dom_ops, pcie); -- 2.25.1