]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
iio: light: gp2ap020a00f: correct return type to int
authorEthan Tidmore <ethantidmore06@gmail.com>
Mon, 23 Feb 2026 03:40:12 +0000 (21:40 -0600)
committerJonathan Cameron <Jonathan.Cameron@huawei.com>
Mon, 23 Feb 2026 21:09:06 +0000 (21:09 +0000)
The function gp2ap020a00f_get_thresh_reg() can return -EINVAL in its
error path. Yet, the function has return type of u8. Added error
checking for gp2ap020a00f_get_thresh_reg() return value.

Detected by Smatch:
drivers/iio/light/gp2ap020a00f.c:1013 gp2ap020a00f_get_thresh_reg() warn:
signedness bug returning '(-22)'

Reviewed-by: Andy Shevchenko <andriy.shevchenko@intel.com>
Signed-off-by: Ethan Tidmore <ethantidmore06@gmail.com>
Signed-off-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
drivers/iio/light/gp2ap020a00f.c

index 7cee15db3a1a8ab8c26d110581fc46aed30e3e1d..6fe4486101b84b18fda1bd5dcf980f376228a0f5 100644 (file)
@@ -993,8 +993,8 @@ done:
        return IRQ_HANDLED;
 }
 
-static u8 gp2ap020a00f_get_thresh_reg(const struct iio_chan_spec *chan,
-                                            enum iio_event_direction event_dir)
+static int gp2ap020a00f_get_thresh_reg(const struct iio_chan_spec *chan,
+                                      enum iio_event_direction event_dir)
 {
        switch (chan->type) {
        case IIO_PROXIMITY:
@@ -1024,11 +1024,14 @@ static int gp2ap020a00f_write_event_val(struct iio_dev *indio_dev,
        struct gp2ap020a00f_data *data = iio_priv(indio_dev);
        bool event_en = false;
        u8 thresh_val_id;
-       u8 thresh_reg_l;
+       int thresh_reg_l;
 
        guard(mutex)(&data->lock);
 
        thresh_reg_l = gp2ap020a00f_get_thresh_reg(chan, dir);
+       if (thresh_reg_l < 0)
+               return thresh_reg_l;
+
        thresh_val_id = GP2AP020A00F_THRESH_VAL_ID(thresh_reg_l);
        if (thresh_val_id > GP2AP020A00F_THRESH_PH)
                return -EINVAL;
@@ -1070,11 +1073,13 @@ static int gp2ap020a00f_read_event_val(struct iio_dev *indio_dev,
                                       int *val, int *val2)
 {
        struct gp2ap020a00f_data *data = iio_priv(indio_dev);
-       u8 thresh_reg_l;
+       int thresh_reg_l;
 
        guard(mutex)(&data->lock);
 
        thresh_reg_l = gp2ap020a00f_get_thresh_reg(chan, dir);
+       if (thresh_reg_l < 0)
+               return thresh_reg_l;
        if (thresh_reg_l > GP2AP020A00F_PH_L_REG)
                return -EINVAL;