Bluetooth: hci_qca: Fix NULL vs IS_ERR_OR_NULL check in qca_serdev_probe
authorMiaoqian Lin <linmq006@gmail.com>
Fri, 24 Dec 2021 08:02:49 +0000 (08:02 +0000)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 27 Jan 2022 10:03:53 +0000 (11:03 +0100)
[ Upstream commit 6845667146a28c09b5dfc401c1ad112374087944 ]

The function devm_gpiod_get_index() return error pointers on error.
Thus devm_gpiod_get_index_optional() could return NULL and error pointers.
The same as devm_gpiod_get_optional() function. Using IS_ERR_OR_NULL()
check to catch error pointers.

Fixes: 77131dfe ("Bluetooth: hci_qca: Replace devm_gpiod_get() with devm_gpiod_get_optional()")
Signed-off-by: Miaoqian Lin <linmq006@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/bluetooth/hci_qca.c

index 3c26fc8..8eb7fdd 100644 (file)
@@ -2058,14 +2058,14 @@ static int qca_serdev_probe(struct serdev_device *serdev)
 
                qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
                                               GPIOD_OUT_LOW);
-               if (!qcadev->bt_en && data->soc_type == QCA_WCN6750) {
+               if (IS_ERR_OR_NULL(qcadev->bt_en) && data->soc_type == QCA_WCN6750) {
                        dev_err(&serdev->dev, "failed to acquire BT_EN gpio\n");
                        power_ctrl_enabled = false;
                }
 
                qcadev->sw_ctrl = devm_gpiod_get_optional(&serdev->dev, "swctrl",
                                               GPIOD_IN);
-               if (!qcadev->sw_ctrl && data->soc_type == QCA_WCN6750)
+               if (IS_ERR_OR_NULL(qcadev->sw_ctrl) && data->soc_type == QCA_WCN6750)
                        dev_warn(&serdev->dev, "failed to acquire SW_CTRL gpio\n");
 
                qcadev->susclk = devm_clk_get_optional(&serdev->dev, NULL);
@@ -2087,7 +2087,7 @@ static int qca_serdev_probe(struct serdev_device *serdev)
 
                qcadev->bt_en = devm_gpiod_get_optional(&serdev->dev, "enable",
                                               GPIOD_OUT_LOW);
-               if (!qcadev->bt_en) {
+               if (IS_ERR_OR_NULL(qcadev->bt_en)) {
                        dev_warn(&serdev->dev, "failed to acquire enable gpio\n");
                        power_ctrl_enabled = false;
                }