2020-03-03 06:53:05

by Zhenzhong Duan

[permalink] [raw]
Subject: [PATCH 0/2] Add -Wunused to x86 boot module and fix build warning

[PATCH 1/2] is based on previous discuss in link below
https://lore.kernel.org/patchwork/patch/1175001/#1379873

[PATCH 2/2] drop true/false change per Thomas suggestion.

This two patches is a series, the warning in patch2 will not trigger
without patch1 by default.

Zhenzhong Duan (2):
x86/boot: Add -Wunused to KBUILD_CFLAGS
x86/boot/KASLR: Fix unused variable warning

arch/x86/boot/compressed/Makefile | 2 +-
arch/x86/boot/compressed/kaslr.c | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)

--
2.17.1


2020-03-03 06:53:19

by Zhenzhong Duan

[permalink] [raw]
Subject: [PATCH 1/2] x86/boot: Add -Wunused to KBUILD_CFLAGS

Compile warning option in arch/x86/boot/compressed is different from
other part of the kernel for some history reason. But "-Wunused" is
safe to be added to point out unused variable issue.

Link: https://lore.kernel.org/patchwork/patch/1175001/#1379873
Suggested-by: Borislav Petkov <[email protected]>
Signed-off-by: Zhenzhong Duan <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
---
arch/x86/boot/compressed/Makefile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/boot/compressed/Makefile b/arch/x86/boot/compressed/Makefile
index 26050ae0b27e..cb9743ec453a 100644
--- a/arch/x86/boot/compressed/Makefile
+++ b/arch/x86/boot/compressed/Makefile
@@ -37,7 +37,7 @@ KBUILD_CFLAGS += $(call cc-option,-ffreestanding)
KBUILD_CFLAGS += $(call cc-option,-fno-stack-protector)
KBUILD_CFLAGS += $(call cc-disable-warning, address-of-packed-member)
KBUILD_CFLAGS += $(call cc-disable-warning, gnu)
-KBUILD_CFLAGS += -Wno-pointer-sign
+KBUILD_CFLAGS += -Wno-pointer-sign -Wunused
KBUILD_CFLAGS += $(call cc-option,-fmacro-prefix-map=$(srctree)/=)

KBUILD_AFLAGS := $(KBUILD_CFLAGS) -D__ASSEMBLY__
--
2.17.1

2020-03-03 06:53:56

by Zhenzhong Duan

[permalink] [raw]
Subject: [PATCH 2/2] x86/boot/KASLR: Fix unused variable warning

Local variable 'i' is referenced only when CONFIG_MEMORY_HOTREMOVE and
CONFIG_ACPI are defined, but definition of variable 'i' is out of guard.
If any of the two macros is undefined, below warning triggers during
build, fix it by moving 'i' in the guard.

arch/x86/boot/compressed/kaslr.c:698:6: warning: unused variable ‘i’ [-Wunused-variable]

Fixes: 690eaa532057 ("x86/boot/KASLR: Limit KASLR to extract the kernel in immovable memory only")
Signed-off-by: Zhenzhong Duan <[email protected]>
Cc: Thomas Gleixner <[email protected]>
Cc: Ingo Molnar <[email protected]>
Cc: Borislav Petkov <[email protected]>
Cc: "H. Peter Anvin" <[email protected]>
Cc: Dave Hansen <[email protected]>
Cc: "Rafael J. Wysocki" <[email protected]>
---
arch/x86/boot/compressed/kaslr.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c
index d7408af55738..62bc46684581 100644
--- a/arch/x86/boot/compressed/kaslr.c
+++ b/arch/x86/boot/compressed/kaslr.c
@@ -695,7 +695,6 @@ static bool process_mem_region(struct mem_vector *region,
unsigned long long minimum,
unsigned long long image_size)
{
- int i;
/*
* If no immovable memory found, or MEMORY_HOTREMOVE disabled,
* use @region directly.
@@ -711,6 +710,7 @@ static bool process_mem_region(struct mem_vector *region,
}

#if defined(CONFIG_MEMORY_HOTREMOVE) && defined(CONFIG_ACPI)
+ int i;
/*
* If immovable memory found, filter the intersection between
* immovable memory and @region.
--
2.17.1

2020-03-03 22:57:21

by Dave Hansen

[permalink] [raw]
Subject: Re: [PATCH 2/2] x86/boot/KASLR: Fix unused variable warning

On 3/2/20 10:52 PM, Zhenzhong Duan wrote:
> Local variable 'i' is referenced only when CONFIG_MEMORY_HOTREMOVE and
> CONFIG_ACPI are defined, but definition of variable 'i' is out of guard.
> If any of the two macros is undefined, below warning triggers during
> build, fix it by moving 'i' in the guard.
>
> arch/x86/boot/compressed/kaslr.c:698:6: warning: unused variable ‘i’ [-Wunused-variable]
...
> diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c
> index d7408af55738..62bc46684581 100644
> --- a/arch/x86/boot/compressed/kaslr.c
> +++ b/arch/x86/boot/compressed/kaslr.c
> @@ -695,7 +695,6 @@ static bool process_mem_region(struct mem_vector *region,
> unsigned long long minimum,
> unsigned long long image_size)
> {
> - int i;
> /*
> * If no immovable memory found, or MEMORY_HOTREMOVE disabled,
> * use @region directly.
> @@ -711,6 +710,7 @@ static bool process_mem_region(struct mem_vector *region,
> }
>
> #if defined(CONFIG_MEMORY_HOTREMOVE) && defined(CONFIG_ACPI)
> + int i;

Won't this just result in a different warning since it now it will
declare 'i' in the middle of the function once CONFIG_MEMORY_HOTREMOVE
and ACPI are enabled?

2020-03-05 04:04:33

by Zhenzhong Duan

[permalink] [raw]
Subject: Re: [PATCH 2/2] x86/boot/KASLR: Fix unused variable warning

On Wed, Mar 4, 2020 at 6:56 AM Dave Hansen <[email protected]> wrote:
>
> On 3/2/20 10:52 PM, Zhenzhong Duan wrote:
> > Local variable 'i' is referenced only when CONFIG_MEMORY_HOTREMOVE and
> > CONFIG_ACPI are defined, but definition of variable 'i' is out of guard.
> > If any of the two macros is undefined, below warning triggers during
> > build, fix it by moving 'i' in the guard.
> >
> > arch/x86/boot/compressed/kaslr.c:698:6: warning: unused variable ‘i’ [-Wunused-variable]
> ...
> > diff --git a/arch/x86/boot/compressed/kaslr.c b/arch/x86/boot/compressed/kaslr.c
> > index d7408af55738..62bc46684581 100644
> > --- a/arch/x86/boot/compressed/kaslr.c
> > +++ b/arch/x86/boot/compressed/kaslr.c
> > @@ -695,7 +695,6 @@ static bool process_mem_region(struct mem_vector *region,
> > unsigned long long minimum,
> > unsigned long long image_size)
> > {
> > - int i;
> > /*
> > * If no immovable memory found, or MEMORY_HOTREMOVE disabled,
> > * use @region directly.
> > @@ -711,6 +710,7 @@ static bool process_mem_region(struct mem_vector *region,
> > }
> >
> > #if defined(CONFIG_MEMORY_HOTREMOVE) && defined(CONFIG_ACPI)
> > + int i;
>
> Won't this just result in a different warning since it now it will
> declare 'i' in the middle of the function once CONFIG_MEMORY_HOTREMOVE
> and ACPI are enabled?

I didn't see a different warning with both configs enabled, because
-std=gnu89 isn't
enforced in arch/x86/boot/compressed but it does in other part of kernel.
C99 and above allows declaration in middule of the function.

Zhenzhong