All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nathan Chancellor <natechancellor@gmail.com>
To: Nick Desaulniers <ndesaulniers@google.com>
Cc: lee.jones@linaro.org, daniel.thompson@linaro.org,
	jingoohan1@gmail.com, b.zolnierkie@samsung.com,
	dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] backlight: lm3639: Unconditionally call led_classdev_unregister
Date: Fri, 21 Sep 2018 23:10:47 +0000	[thread overview]
Message-ID: <20180921231047.GA25998@flashbox> (raw)
In-Reply-To: <CAKwvOdnj5M1xTKue7qZCV-2=hLTATnB-J1QOVvaVVa+8h+vq4A@mail.gmail.com>

On Fri, Sep 21, 2018 at 03:48:50PM -0700, Nick Desaulniers wrote:
> On Fri, Sep 21, 2018 at 1:23 PM Nathan Chancellor
> <natechancellor@gmail.com> wrote:
> >
> > Clang warns that the address of a pointer will always evaluated as true
> > in a boolean context.
> >
> > drivers/video/backlight/lm3639_bl.c:403:14: warning: address of
> > 'pchip->cdev_torch' will always evaluate to 'true'
> > [-Wpointer-bool-conversion]
> >         if (&pchip->cdev_torch)
> >         ~~   ~~~~~~~^~~~~~~~~~
> > drivers/video/backlight/lm3639_bl.c:405:14: warning: address of
> > 'pchip->cdev_flash' will always evaluate to 'true'
> > [-Wpointer-bool-conversion]
> >         if (&pchip->cdev_flash)
> >         ~~   ~~~~~~~^~~~~~~~~~
> > 2 warnings generated.
> >
> > These statements have been present since 2012, introduced by
> > commit 0f59858d5119 ("backlight: add new lm3639 backlight
> > driver"). Given that they have been called unconditionally since
> > then presumably without any issues, removing the always true if
> > statements to fix the warnings without any real world changes.
> >
> > Link: https://github.com/ClangBuiltLinux/linux/issues/119
> > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
> > ---
> >
> > Alternatively, it's possible the address wasn't supposed to be taken or
> > the dev in these structs should be checked instead. I don't have this
> > hardware to make that call so I would appreciate some review and
> > opinions on what was intended here.
> >
> > Thanks!
> >
> >  drivers/video/backlight/lm3639_bl.c | 6 ++----
> >  1 file changed, 2 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/video/backlight/lm3639_bl.c b/drivers/video/backlight/lm3639_bl.c
> > index cd50df5807ea..086611c7bc03 100644
> > --- a/drivers/video/backlight/lm3639_bl.c
> > +++ b/drivers/video/backlight/lm3639_bl.c
> > @@ -400,10 +400,8 @@ static int lm3639_remove(struct i2c_client *client)
> >
> >         regmap_write(pchip->regmap, REG_ENABLE, 0x00);
> >
> > -       if (&pchip->cdev_torch)
> > -               led_classdev_unregister(&pchip->cdev_torch);
> > -       if (&pchip->cdev_flash)
> > -               led_classdev_unregister(&pchip->cdev_flash);
> > +       led_classdev_unregister(&pchip->cdev_torch);
> > +       led_classdev_unregister(&pchip->cdev_flash);
> 
> led_classdev_unregister() requires that its arg is non-null (as it
> dereferences it without any kind of check).  It's not clear that
> i2c_get_clientdata() can never return a null pointer, so I think all
> references to pchip in this function should instead be guarded with a
> null check.  Would you mind making that change and sending a v2?
> 

Hi Nick,

I did a quick grep throughout the tree and I didn't see any place where
there were null checks for i2c_get_clientdata, leading me to believe
that such a check isn't necessary although I am nowhere close to an expert
into this stuff. I'm not sure I follow the rest of the request though,
where should the check be? Before regmap_write?

Furthermore, the probe function seems to make sure all of these get
initialized properly, doesn't remove imply that probe was successful?

Thank you for the comment and review!
Nathan

> >         if (pchip->bled)
> >                 device_remove_file(&(pchip->bled->dev), &dev_attr_bled_mode);
> >         return 0;
> > --
> > 2.19.0
> >
> 
> 
> -- 
> Thanks,
> ~Nick Desaulniers

WARNING: multiple messages have this Message-ID (diff)
From: Nathan Chancellor <natechancellor@gmail.com>
To: Nick Desaulniers <ndesaulniers@google.com>
Cc: lee.jones@linaro.org, daniel.thompson@linaro.org,
	jingoohan1@gmail.com, b.zolnierkie@samsung.com,
	dri-devel@lists.freedesktop.org, linux-fbdev@vger.kernel.org,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] backlight: lm3639: Unconditionally call led_classdev_unregister
Date: Fri, 21 Sep 2018 16:10:47 -0700	[thread overview]
Message-ID: <20180921231047.GA25998@flashbox> (raw)
In-Reply-To: <CAKwvOdnj5M1xTKue7qZCV-2=hLTATnB-J1QOVvaVVa+8h+vq4A@mail.gmail.com>

On Fri, Sep 21, 2018 at 03:48:50PM -0700, Nick Desaulniers wrote:
> On Fri, Sep 21, 2018 at 1:23 PM Nathan Chancellor
> <natechancellor@gmail.com> wrote:
> >
> > Clang warns that the address of a pointer will always evaluated as true
> > in a boolean context.
> >
> > drivers/video/backlight/lm3639_bl.c:403:14: warning: address of
> > 'pchip->cdev_torch' will always evaluate to 'true'
> > [-Wpointer-bool-conversion]
> >         if (&pchip->cdev_torch)
> >         ~~   ~~~~~~~^~~~~~~~~~
> > drivers/video/backlight/lm3639_bl.c:405:14: warning: address of
> > 'pchip->cdev_flash' will always evaluate to 'true'
> > [-Wpointer-bool-conversion]
> >         if (&pchip->cdev_flash)
> >         ~~   ~~~~~~~^~~~~~~~~~
> > 2 warnings generated.
> >
> > These statements have been present since 2012, introduced by
> > commit 0f59858d5119 ("backlight: add new lm3639 backlight
> > driver"). Given that they have been called unconditionally since
> > then presumably without any issues, removing the always true if
> > statements to fix the warnings without any real world changes.
> >
> > Link: https://github.com/ClangBuiltLinux/linux/issues/119
> > Signed-off-by: Nathan Chancellor <natechancellor@gmail.com>
> > ---
> >
> > Alternatively, it's possible the address wasn't supposed to be taken or
> > the dev in these structs should be checked instead. I don't have this
> > hardware to make that call so I would appreciate some review and
> > opinions on what was intended here.
> >
> > Thanks!
> >
> >  drivers/video/backlight/lm3639_bl.c | 6 ++----
> >  1 file changed, 2 insertions(+), 4 deletions(-)
> >
> > diff --git a/drivers/video/backlight/lm3639_bl.c b/drivers/video/backlight/lm3639_bl.c
> > index cd50df5807ea..086611c7bc03 100644
> > --- a/drivers/video/backlight/lm3639_bl.c
> > +++ b/drivers/video/backlight/lm3639_bl.c
> > @@ -400,10 +400,8 @@ static int lm3639_remove(struct i2c_client *client)
> >
> >         regmap_write(pchip->regmap, REG_ENABLE, 0x00);
> >
> > -       if (&pchip->cdev_torch)
> > -               led_classdev_unregister(&pchip->cdev_torch);
> > -       if (&pchip->cdev_flash)
> > -               led_classdev_unregister(&pchip->cdev_flash);
> > +       led_classdev_unregister(&pchip->cdev_torch);
> > +       led_classdev_unregister(&pchip->cdev_flash);
> 
> led_classdev_unregister() requires that its arg is non-null (as it
> dereferences it without any kind of check).  It's not clear that
> i2c_get_clientdata() can never return a null pointer, so I think all
> references to pchip in this function should instead be guarded with a
> null check.  Would you mind making that change and sending a v2?
> 

Hi Nick,

I did a quick grep throughout the tree and I didn't see any place where
there were null checks for i2c_get_clientdata, leading me to believe
that such a check isn't necessary although I am nowhere close to an expert
into this stuff. I'm not sure I follow the rest of the request though,
where should the check be? Before regmap_write?

Furthermore, the probe function seems to make sure all of these get
initialized properly, doesn't remove imply that probe was successful?

Thank you for the comment and review!
Nathan

> >         if (pchip->bled)
> >                 device_remove_file(&(pchip->bled->dev), &dev_attr_bled_mode);
> >         return 0;
> > --
> > 2.19.0
> >
> 
> 
> -- 
> Thanks,
> ~Nick Desaulniers

  reply	other threads:[~2018-09-21 23:10 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-09-21 20:21 [PATCH] backlight: lm3639: Unconditionally call led_classdev_unregister Nathan Chancellor
2018-09-21 20:21 ` Nathan Chancellor
2018-09-21 22:48 ` Nick Desaulniers
2018-09-21 22:48   ` Nick Desaulniers
2018-09-21 23:10   ` Nathan Chancellor [this message]
2018-09-21 23:10     ` Nathan Chancellor
2018-09-24 21:41     ` Nick Desaulniers
2018-09-24 21:41       ` Nick Desaulniers
2018-09-26  8:59       ` Daniel Thompson
2018-09-26  8:59         ` Daniel Thompson
2018-09-26  8:59         ` Daniel Thompson
2018-10-09  9:10 ` Lee Jones
2018-10-09  9:10   ` Lee Jones

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=20180921231047.GA25998@flashbox \
    --to=natechancellor@gmail.com \
    --cc=b.zolnierkie@samsung.com \
    --cc=daniel.thompson@linaro.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=jingoohan1@gmail.com \
    --cc=lee.jones@linaro.org \
    --cc=linux-fbdev@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=ndesaulniers@google.com \
    /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.