Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp1452909ybz; Sat, 18 Apr 2020 01:03:46 -0700 (PDT) X-Google-Smtp-Source: APiQypJQwMJbGi21UZgEtNKdyo0+yGqERysBbfjd43G7QcAoCOJGZes2VhmB9ymd7nFhfCehqRJC X-Received: by 2002:aa7:d0d6:: with SMTP id u22mr6493589edo.262.1587197026157; Sat, 18 Apr 2020 01:03:46 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1587197026; cv=none; d=google.com; s=arc-20160816; b=McGYcuaQn15rbUylcGTmwtLO5KyWyy140g4l6D3vGr1rY4V+meYhaeqj7bOMgnjWaV LVhl6n12A/Vcntfnu0sahSJEcKw1dHUAJoMu4J/uG7ddTV/5lvXhPgWZGYzyX2MQ96Km p5mNjx83P29a5PrvNzveyzsdCu27mKOksXNK6AHCYQxBiNC89pbSpg1AzsyiO4ZInzAx 0ssxyCv6ZgHpmCp3CU+kexqJhE5dMFBDApEB85zUPisPEe5B1Ikq4t1mbPNGeJNOPxoA KXdVUCptLOWNMt9XF+DWrGTg0WHu44sDs7XRFh2viAINskXlRvxKXEI5A3K3VAN0HZso Yzvw== 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 :message-id:date:subject:cc:to:from; bh=miecnWgHuG0Z2ilWD1NaID1/3b8VSc8rZihGn36MdQ0=; b=xFzVxG4mvImGkwLxZ6hL73m9kT6pew5dSqg/QD6ysDJXPqba8A1y1yqDiQo5lkfyWA DmTxp7pirFyajI6UCNVNcxEHv0NH/vhCEJ6+WV8TVumOTf44rf3HNVlKcAM4Mz7TEbuD 7z8p4hTovgmghRD95KVE7QhLumQ9iF91Z5asLtSz7fcSlVMF6M+7L83aSrmzrNm/9nf3 UglVX2zHS+AqzyU1ehbbJFUJVVIlUTT3wufX4Clf7W4XuD2MM6jIXc83NORrts/PDt0j lXNfHxo735drWpG+tqTBMjpNFrUrWpZM18xj/miK88w0X+qJ7+pMfl+H167R3fGrny9i D14A== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id cc19si18580010edb.111.2020.04.18.01.03.21; Sat, 18 Apr 2020 01:03:46 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1725879AbgDRIBk (ORCPT + 99 others); Sat, 18 Apr 2020 04:01:40 -0400 Received: from cmccmta3.chinamobile.com ([221.176.66.81]:10914 "EHLO cmccmta3.chinamobile.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1725856AbgDRIBj (ORCPT ); Sat, 18 Apr 2020 04:01:39 -0400 Received: from spf.mail.chinamobile.com (unknown[172.16.121.13]) by rmmx-syy-dmz-app09-12009 (RichMail) with SMTP id 2ee95e9ab3ce5d6-ab6a1; Sat, 18 Apr 2020 16:01:21 +0800 (CST) X-RM-TRANSID: 2ee95e9ab3ce5d6-ab6a1 X-RM-TagInfo: emlType=0 X-RM-SPAM-FLAG: 00000000 Received: from localhost.localdomain (unknown[112.1.172.61]) by rmsmtp-syy-appsvr07-12007 (RichMail) with SMTP id 2ee75e9ab3cff46-7159e; Sat, 18 Apr 2020 16:01:21 +0800 (CST) X-RM-TRANSID: 2ee75e9ab3cff46-7159e From: Tang Bin To: minyard@acm.org, arnd@arndb.de, gregkh@linuxfoundation.org Cc: openipmi-developer@lists.sourceforge.net, linux-kernel@vger.kernel.org, Tang Bin , Shengju Zhang Subject: [PATCH v2] ipmi:bt-bmc: Fix error handling and status check Date: Sat, 18 Apr 2020 16:02:29 +0800 Message-Id: <20200418080228.19028-1-tangbin@cmss.chinamobile.com> X-Mailer: git-send-email 2.20.1.windows.1 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 If the function platform_get_irq() failed, the negative value returned will not be detected here. So fix error handling in bt_bmc_config_irq(). And if devm_request_irq() failed, 'bt_bmc->irq' is assigned to zero maybe redundant, it may be more suitable for using the correct negative values to make the status check in the function bt_bmc_remove(). Signed-off-by: Shengju Zhang Signed-off-by: Tang Bin --- Changes from v1 - fix the code of status check --- drivers/char/ipmi/bt-bmc.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/drivers/char/ipmi/bt-bmc.c b/drivers/char/ipmi/bt-bmc.c index cd0349bff..33d3a5d50 100644 --- a/drivers/char/ipmi/bt-bmc.c +++ b/drivers/char/ipmi/bt-bmc.c @@ -399,15 +399,14 @@ static int bt_bmc_config_irq(struct bt_bmc *bt_bmc, struct device *dev = &pdev->dev; int rc; - bt_bmc->irq = platform_get_irq(pdev, 0); - if (!bt_bmc->irq) - return -ENODEV; + bt_bmc->irq = platform_get_irq_optional(pdev, 0); + if (bt_bmc->irq < 0) + return bt_bmc->irq; rc = devm_request_irq(dev, bt_bmc->irq, bt_bmc_irq, IRQF_SHARED, DEVICE_NAME, bt_bmc); if (rc < 0) { dev_warn(dev, "Unable to request IRQ %d\n", bt_bmc->irq); - bt_bmc->irq = 0; return rc; } @@ -474,7 +473,7 @@ static int bt_bmc_probe(struct platform_device *pdev) bt_bmc_config_irq(bt_bmc, pdev); - if (bt_bmc->irq) { + if (bt_bmc->irq >= 0) { dev_info(dev, "Using IRQ %d\n", bt_bmc->irq); } else { dev_info(dev, "No IRQ; using timer\n"); @@ -500,7 +499,7 @@ static int bt_bmc_remove(struct platform_device *pdev) struct bt_bmc *bt_bmc = dev_get_drvdata(&pdev->dev); misc_deregister(&bt_bmc->miscdev); - if (!bt_bmc->irq) + if (bt_bmc->irq < 0) del_timer_sync(&bt_bmc->poll_timer); return 0; } -- 2.20.1.windows.1