Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp4535600ybb; Tue, 14 Apr 2020 09:09:16 -0700 (PDT) X-Google-Smtp-Source: APiQypIxv5KnezAKDRE68BZCYyqIWApce2Db5k+0EtDWNx7P1Pbx/M3qVYRUmCmPb3SnKLOVqX6e X-Received: by 2002:a17:906:548:: with SMTP id k8mr809669eja.259.1586880556363; Tue, 14 Apr 2020 09:09:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586880556; cv=none; d=google.com; s=arc-20160816; b=ml2cRdaEk4ebeolpKp+cpOkjVmv6uWWNpAGzg3RCyJ9lqOzamIvjFZ6V5MgWz42dVy yF5jRVgwBaOhBDk/oj22I9nqvr3VIdkgbEq4TLO+pnQBYxDF5ki76SKUGGEBK9KglF/y EmBH8mXdMhdxkXvo0+er6mXD7ZUjk1FUWhLg0qU00k7027J0GjyvGN5GuYYqOeM49wHZ u8MIB9nTCisCVu5bSzVnRSqT333/3zOptJELZt9GeDNIXOMNTUa1LGTkRVQaffwM4yu6 aWMxrklZdT0l8vi6mdjwDBf99xu7F6+/8++FEk2HBAXqrBSjqC9Sx0JfYgoS5xoFU6ZX pUqA== 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=X8XFFqC2ZXaqkLW5MqVS9EI68QM+RMeS3aqVz/nZ8fY=; b=oRD+I+NP35OXCMs7urwHHzg6itGxZ0izOXCr0ekrx4qDs2xZFEl0avCmLf0lzGcWbR jvZVvzurVlSaSxzmP6CE0atskDRExxJfo8dQtgWNAnpwq2cE4xgRDgf4a8YCST8bwXwe 0q/l9R/PEpP6/xIfa3az0HCOAf+mjx7iANbCZ56C2+t05tdv8YjO9/g4jsn6EZQBxwRS ZBlJMJljNB4wItp2/xEAT1aNqLBvahVo1e/BXurUMZKE+KQ9E43aML72OlsNBghJYHz1 a8JiepS69w3jmKKiQ4Lq1ShrUUPup0m31C3LHHXjgHInhj+e0xHd35Qahdgk8xGeC54f L1kQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for 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 k14si8230198ejb.62.2020.04.14.09.08.52; Tue, 14 Apr 2020 09:09:16 -0700 (PDT) Received-SPF: pass (google.com: best guess record for 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: best guess record for 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 S1733167AbgDNONr (ORCPT + 99 others); Tue, 14 Apr 2020 10:13:47 -0400 Received: from cmccmta2.chinamobile.com ([221.176.66.80]:11702 "EHLO cmccmta2.chinamobile.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728815AbgDNONo (ORCPT ); Tue, 14 Apr 2020 10:13:44 -0400 Received: from spf.mail.chinamobile.com (unknown[172.16.121.11]) by rmmx-syy-dmz-app07-12007 (RichMail) with SMTP id 2ee75e95c4f7db4-5501f; Tue, 14 Apr 2020 22:13:14 +0800 (CST) X-RM-TRANSID: 2ee75e95c4f7db4-5501f X-RM-TagInfo: emlType=0 X-RM-SPAM-FLAG: 00000000 Received: from localhost.localdomain (unknown[112.3.208.246]) by rmsmtp-syy-appsvr06-12006 (RichMail) with SMTP id 2ee65e95c4f78b7-93ad2; Tue, 14 Apr 2020 22:13:14 +0800 (CST) X-RM-TRANSID: 2ee65e95c4f78b7-93ad2 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 3/3] ipmi:bt-bmc: Fix error handling and status check Date: Tue, 14 Apr 2020 22:14:24 +0800 Message-Id: <20200414141423.4968-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: Tang Bin Signed-off-by: Shengju Zhang --- drivers/char/ipmi/bt-bmc.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/drivers/char/ipmi/bt-bmc.c b/drivers/char/ipmi/bt-bmc.c index 1d4bf5c65..1740c6dc8 100644 --- a/drivers/char/ipmi/bt-bmc.c +++ b/drivers/char/ipmi/bt-bmc.c @@ -399,16 +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) { - bt_bmc->irq = 0; + if (rc < 0) return rc; - } /* * Configure IRQs on the bmc clearing the H2B and HBUSY bits; @@ -499,7 +497,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