On Fri, Dec 23, 2022 at 09:51:37PM +0700, Ammar Faizi wrote:
> From: Ammar Faizi <[email protected]>
>
> Compiling with clang-16:
>
> drivers/base/module.c:36:6: error: variable 'no_warn' set but not \
> used [-Werror,-Wunused-but-set-variable]
> int no_warn;
> ^
> 1 error generated.
>
> A reason the @no_warn variable exists is:
> sysfs_create_link() return value needs not be ignored to silence
> another warning.
>
> So don't remove @no_warn, but add a '(void)no_warn;'.
>
> Cc: LLVM Mailing List <[email protected]>
> Signed-off-by: Ammar Faizi <[email protected]>
> ---
> drivers/base/module.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/drivers/base/module.c b/drivers/base/module.c
> index 46ad4d636731..42f0b3b9e7f8 100644
> --- a/drivers/base/module.c
> +++ b/drivers/base/module.c
> @@ -59,22 +59,23 @@ void module_add_driver(struct module *mod, struct device_driver *drv)
> return;
>
> /* Don't check return codes; these calls are idempotent */
> no_warn = sysfs_create_link(&drv->p->kobj, &mk->kobj, "module");
> driver_name = make_driver_name(drv);
> if (driver_name) {
> module_create_drivers_dir(mk);
> no_warn = sysfs_create_link(mk->drivers_dir, &drv->p->kobj,
> driver_name);
> kfree(driver_name);
> }
> + (void)no_warn;
Ick, no, that's horrid and is NOT ok for kernel code, sorry.
Please fix the compiler, this is not a "fix" in any sense of the word
and is not going to work at all for kernel code.
sorry,
greg k-h
On 12/23/22 10:02 PM, Greg Kroah-Hartman wrote:
> Ick, no, that's horrid and is NOT ok for kernel code, sorry.
>
> Please fix the compiler, this is not a "fix" in any sense of the word
> and is not going to work at all for kernel code.
Agree.
Sorry for the noise. It turned out I messed up my clang compiler flags.
I forgot to do a "git reset --hard" before recompiling.
This has nothing todo with the upstream kernel.
--
Ammar Faizi
On Fri, Dec 23, 2022 at 10:31:57PM +0700, Ammar Faizi wrote:
> On 12/23/22 10:02 PM, Greg Kroah-Hartman wrote:
> > Ick, no, that's horrid and is NOT ok for kernel code, sorry.
> >
> > Please fix the compiler, this is not a "fix" in any sense of the word
> > and is not going to work at all for kernel code.
It is possible that the compiler should not emit
-Wunused-but-set-variable when the variable is assigned the return
value of a function marked with __attribute__((warn_unused_result)) but
neither compiler does that today, you'll see the exact same warning from
GCC 12.2.0:
drivers/base/module.c: In function ‘module_add_driver’:
drivers/base/module.c:36:13: error: variable ‘no_warn’ set but not used [-Werror=unused-but-set-variable]
36 | int no_warn;
| ^~~~~~~
cc1: all warnings being treated as errors
This has come up before too:
https://lore.kernel.org/[email protected]/
> Agree.
>
> Sorry for the noise. It turned out I messed up my clang compiler flags.
> I forgot to do a "git reset --hard" before recompiling.
>
> This has nothing todo with the upstream kernel.
This warning is in W=1, which are warnings that we want to turn on at
some point but the current instances need to be fixed first, so I would
say this is still relevant to the upstream kernel.
Cheers,
Nathan