lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite for Android: free password hash cracker in your pocket
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <alpine.DEB.2.21.2310051305530.20354@angie.orcam.me.uk>
Date:   Thu, 5 Oct 2023 13:24:12 +0100 (BST)
From:   "Maciej W. Rozycki" <macro@...am.me.uk>
To:     Dan Carpenter <dan.carpenter@...aro.org>
cc:     Su Hui <suhui@...china.com>,
        Greg Kroah-Hartman <gregkh@...uxfoundation.org>,
        rafael@...nel.org, linux-kernel@...r.kernel.org,
        kernel-janitors@...r.kernel.org
Subject: Re: [PATCH] driver base: slience unused warning

On Wed, 4 Oct 2023, Dan Carpenter wrote:

> > > This variable is been used but never be read, so gcc and W=1 give such
> > > warning.
> > > 
> > > drivers/base/module.c:36:6: error:
> > > variable ‘no_warn’ set but not used [-Werror=unused-but-set-variable]
> > > 
> > > I wanted to use "__maybe_unused" to avoid  this warning.
> > > 
> > > However it seems like a wrong using of "__maybe_unused" as Greg KH said:
> > > 
> > > "But no_warn is being used in this file, it's being set but not read
> > > which is ok.  That's a real use, so this change really isn't correct,
> > > sorry."
> > 
> >  The warning itself is a real issue to be sorted though.  Is this a use 
> > case for `#pragma GCC diagnostic'?
> 
> I thought Greg liked using __maybe_unused in this case?  This is
> drivers/base.  Do the rest of us even get a vote?  ;)
> 
> If I do have a vote then #pragma is always the worst option.  Linus has
> taught me to dislike pragmas a lot.

 I'm not a great supporter of this solution, but at least it's guaranteed 
to work by definition.  Otherwise we could try to outsmart the compiler; 
perhaps:

	(no_warn = sysfs_create_link(&drv->p->kobj, &mk->kobj,
				     "module")), no_warn;

would work.  At the end of the day it's us who told the compiler to warn 
if the result of `sysfs_create_link' is unused with all the consequences.  
And while assigning to `no_warn' technically fulfils the requirement, the 
variable itself isn't used beyond being assigned to, which the compiler 
rightfully complains about because we asked for it.  It's up to us really 
to tell the compiler what we want it to complain about and what we do not.

  Maciej

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ