staging: wfx: gpiod_get_value() can return an error
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Fri, 9 Oct 2020 17:13:05 +0000 (19:13 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 10 Oct 2020 10:33:59 +0000 (12:33 +0200)
Smatch complains:

    hif_rx.c:98 hif_wakeup_indication() warn: 'gpiod_get_value(wdev->pdata.gpio_wakeup)' returns positive and negative
    bh.c:24 device_wakeup() warn: 'gpiod_get_value_cansleep(wdev->pdata.gpio_wakeup)' returns positive and negative

Reported-by: Dan Carpenter <dan.carpenter@oracle.com>
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20201009171307.864608-7-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wfx/bh.c
drivers/staging/wfx/hif_rx.c

index 586b769..2ffa587 100644 (file)
@@ -21,7 +21,7 @@ static void device_wakeup(struct wfx_dev *wdev)
 
        if (!wdev->pdata.gpio_wakeup)
                return;
-       if (gpiod_get_value_cansleep(wdev->pdata.gpio_wakeup))
+       if (gpiod_get_value_cansleep(wdev->pdata.gpio_wakeup) >= 0)
                return;
 
        if (wfx_api_older_than(wdev, 1, 4)) {
index 2d42652..f99921e 100644 (file)
@@ -94,8 +94,8 @@ static int hif_startup_indication(struct wfx_dev *wdev,
 static int hif_wakeup_indication(struct wfx_dev *wdev,
                                 const struct hif_msg *hif, const void *buf)
 {
-       if (!wdev->pdata.gpio_wakeup
-           || !gpiod_get_value(wdev->pdata.gpio_wakeup)) {
+       if (!wdev->pdata.gpio_wakeup ||
+           gpiod_get_value(wdev->pdata.gpio_wakeup) == 0) {
                dev_warn(wdev->dev, "unexpected wake-up indication\n");
                return -EIO;
        }