Re: [PATCH] driver base: slience unused warning

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Kernel Development]     [Kernel Announce]     [Kernel Newbies]     [Linux Networking Development]     [Share Photos]     [IDE]     [Security]     [Git]     [Netfilter]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Device Mapper]

  Powered by Linux