All of lore.kernel.org
 help / color / mirror / Atom feed
From: baihaowen <baihaowen@meizu.com>
To: Jonathan Cameron <jic23@kernel.org>
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: Mon, 18 Apr 2022 10:20:34 +0800	[thread overview]
Message-ID: <3d1b3b5b-6125-f14b-6a0b-85f5c94d6f7a@meizu.com> (raw)
In-Reply-To: <20220415185205.26a3d352@jic23-huawei>

在 4/16/22 1:52 AM, Jonathan Cameron 写道:
> 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);
hi Jonathan Cameron

Thank you for your suggestion. resended :).

-- 
Haowen Bai


  parent reply	other threads:[~2022-04-18  2:20 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
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       ` baihaowen [this message]
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=3d1b3b5b-6125-f14b-6a0b-85f5c94d6f7a@meizu.com \
    --to=baihaowen@meizu.com \
    --cc=jic23@kernel.org \
    --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.