All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <jic23@kernel.org>
To: Haowen Bai <baihaowen@meizu.com>
Cc: Lars-Peter Clausen <lars@metafoo.de>, <linux-iio@vger.kernel.org>,
	<linux-kernel@vger.kernel.org>
Subject: Re: [PATCH V2] iio: gp2ap020a00f: Fix signedness bug
Date: Fri, 15 Apr 2022 18:52:05 +0100	[thread overview]
Message-ID: <20220415185205.26a3d352@jic23-huawei> (raw)
In-Reply-To: <1649985637-18854-1-git-send-email-baihaowen@meizu.com>

On Fri, 15 Apr 2022 09:20:37 +0800
Haowen Bai <baihaowen@meizu.com> wrote:

> function gp2ap020a00f_get_thresh_reg() is unsigned but returning -EINVAL 
> errcode, and thresh_reg_l is unsigned but receiving -EINVAL errcode. so 
> we have to change u8 -> int.
> 
> Signed-off-by: Haowen Bai <baihaowen@meizu.com>
Hi,

The return value is not checked in *read_event_val(), so if we actually got
-EINVAL (in reality we can't because the switch in *_get_thresh_reg*) always
matches) then we'd use it to index an array (after performing some maths on
the value).  So please also add a check that the return value is not
negative in read_event_val()

Same is true or write_event_val.


Note that the bug here is probably the fact we return -EINVAL in the
first place. We could just stop doing that but it would be non obvious
when looking at the code that we couldn't get a failure to match in
the switch statement - so fixing as you have done (plus the extra
check I'm requesting) is probably the neatest solution.

Thanks,

Jonathan


> ---
> V1->V2: s8 is not enough to hold an (arbitrary) error code. To be on the safe
> side we need to use int
> 
>  drivers/iio/light/gp2ap020a00f.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/iio/light/gp2ap020a00f.c b/drivers/iio/light/gp2ap020a00f.c
> index b820041159f7..b0e62d3c6fa0 100644
> --- a/drivers/iio/light/gp2ap020a00f.c
> +++ b/drivers/iio/light/gp2ap020a00f.c
> @@ -994,7 +994,7 @@ static irqreturn_t gp2ap020a00f_trigger_handler(int irq, void *data)
>  	return IRQ_HANDLED;
>  }
>  
> -static u8 gp2ap020a00f_get_thresh_reg(const struct iio_chan_spec *chan,
> +static int gp2ap020a00f_get_thresh_reg(const struct iio_chan_spec *chan,
>  					     enum iio_event_direction event_dir)
>  {
>  	switch (chan->type) {
> @@ -1025,7 +1025,7 @@ 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;
>  	int err = 0;
>  
>  	mutex_lock(&data->lock);
> @@ -1082,7 +1082,7 @@ 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;
>  	int err = IIO_VAL_INT;
>  
>  	mutex_lock(&data->lock);


  reply	other threads:[~2022-04-15 17:44 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-14 10:45 [PATCH] iio: gp2ap020a00f: Fix signedness bug Haowen Bai
2022-04-14 13:47 ` Andy Shevchenko
2022-04-15  1:20   ` [PATCH V2] " Haowen Bai
2022-04-15 17:52     ` Jonathan Cameron [this message]
2022-04-18  2:19       ` [PATCH V3] " Haowen Bai
2022-04-28 18:41         ` Jonathan Cameron
2022-04-29  1:36           ` [PATCH V4] " Haowen Bai
2022-05-01 15:03             ` Jonathan Cameron
2022-04-18  2:20       ` [PATCH V2] " baihaowen
2022-04-15  1:21   ` [PATCH] " baihaowen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220415185205.26a3d352@jic23-huawei \
    --to=jic23@kernel.org \
    --cc=baihaowen@meizu.com \
    --cc=lars@metafoo.de \
    --cc=linux-iio@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.