diff mbox series

[v2,03/19] powerpc: Mark variables as unused

Message ID 20180328193307.978-1-malat@debian.org (mailing list archive)
State Superseded
Headers show
Series [v2,01/19] powerpc/powermac: Mark variable x as unused | expand

Commit Message

Mathieu Malaterre March 28, 2018, 7:33 p.m. UTC
Add gcc attribute unused for two variables. Fix warnings treated as errors
with W=1:

  arch/powerpc/kernel/prom_init.c:1388:8: error: variable ‘path’ set but not used [-Werror=unused-but-set-variable]

Suggested-by: Christophe Leroy <christophe.leroy@c-s.fr>
Signed-off-by: Mathieu Malaterre <malat@debian.org>
---
v2: move path within ifdef DEBUG_PROM

 arch/powerpc/kernel/prom_init.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Christophe Leroy March 29, 2018, 4:14 p.m. UTC | #1
Mathieu Malaterre <malat@debian.org> a écrit :

> Add gcc attribute unused for two variables. Fix warnings treated as errors
> with W=1:
>
>   arch/powerpc/kernel/prom_init.c:1388:8: error: variable ‘path’ set  
> but not used [-Werror=unused-but-set-variable]
>
> Suggested-by: Christophe Leroy <christophe.leroy@c-s.fr>
> Signed-off-by: Mathieu Malaterre <malat@debian.org>
> ---
> v2: move path within ifdef DEBUG_PROM
>
>  arch/powerpc/kernel/prom_init.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/powerpc/kernel/prom_init.c  
> b/arch/powerpc/kernel/prom_init.c
> index acf4b2e0530c..4163b11abb6c 100644
> --- a/arch/powerpc/kernel/prom_init.c
> +++ b/arch/powerpc/kernel/prom_init.c
> @@ -603,7 +603,7 @@ static void __init early_cmdline_parse(void)
>  	const char *opt;
>
>  	char *p;
> -	int l = 0;
> +	int l __maybe_unused = 0;
>
>  	prom_cmd_line[0] = 0;
>  	p = prom_cmd_line;
> @@ -1385,7 +1385,7 @@ static void __init reserve_mem(u64 base, u64 size)
>  static void __init prom_init_mem(void)
>  {
>  	phandle node;
> -	char *path, type[64];
> +	char *path __maybe_unused, type[64];

You should enclose that in an ifdef DEBUG_PROM instead of hiding the warning

Christophe

>  	unsigned int plen;
>  	cell_t *p, *endp;
>  	__be32 val;
> @@ -1406,7 +1406,6 @@ static void __init prom_init_mem(void)
>  	prom_debug("root_size_cells: %x\n", rsc);
>
>  	prom_debug("scanning memory:\n");
> -	path = prom_scratch;
>
>  	for (node = 0; prom_next_node(&node); ) {
>  		type[0] = 0;
> @@ -1431,6 +1430,7 @@ static void __init prom_init_mem(void)
>  		endp = p + (plen / sizeof(cell_t));
>
>  #ifdef DEBUG_PROM
> +		path = prom_scratch;
>  		memset(path, 0, PROM_SCRATCH_SIZE);
>  		call_prom("package-to-path", 3, 1, node, path, PROM_SCRATCH_SIZE-1);
>  		prom_debug("  node %s :\n", path);
> --
> 2.11.0
Michael Ellerman April 5, 2018, 5:57 a.m. UTC | #2
LEROY Christophe <christophe.leroy@c-s.fr> writes:

> Mathieu Malaterre <malat@debian.org> a écrit :
>
>> Add gcc attribute unused for two variables. Fix warnings treated as errors
>> with W=1:
>>
>>   arch/powerpc/kernel/prom_init.c:1388:8: error: variable ‘path’ set  
>> but not used [-Werror=unused-but-set-variable]
>>
>> Suggested-by: Christophe Leroy <christophe.leroy@c-s.fr>
>> Signed-off-by: Mathieu Malaterre <malat@debian.org>
>> ---
>> v2: move path within ifdef DEBUG_PROM
>>
>>  arch/powerpc/kernel/prom_init.c | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/powerpc/kernel/prom_init.c  
>> b/arch/powerpc/kernel/prom_init.c
>> index acf4b2e0530c..4163b11abb6c 100644
>> --- a/arch/powerpc/kernel/prom_init.c
>> +++ b/arch/powerpc/kernel/prom_init.c
>> @@ -603,7 +603,7 @@ static void __init early_cmdline_parse(void)
>>  	const char *opt;
>>
>>  	char *p;
>> -	int l = 0;
>> +	int l __maybe_unused = 0;
>>
>>  	prom_cmd_line[0] = 0;
>>  	p = prom_cmd_line;
>> @@ -1385,7 +1385,7 @@ static void __init reserve_mem(u64 base, u64 size)
>>  static void __init prom_init_mem(void)
>>  {
>>  	phandle node;
>> -	char *path, type[64];
>> +	char *path __maybe_unused, type[64];
>
> You should enclose that in an ifdef DEBUG_PROM instead of hiding the warning

I disagree, the result is horrible:

 static void __init prom_init_mem(void)
 {
	phandle node;
-	char *path, type[64];
+#ifdef DEBUG_PROM
+	char *path;
+#endif
+	char type[64];
	unsigned int plen;
	cell_t *p, *endp;
	__be32 val;


The right fix is to move the debug logic into a helper, and put the path
in there, eg. something like (not tested):

diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
index f9d6befb55a6..b02fa2ccc70b 100644
--- a/arch/powerpc/kernel/prom_init.c
+++ b/arch/powerpc/kernel/prom_init.c
@@ -1389,6 +1389,18 @@ static void __init reserve_mem(u64 base, u64 size)
 	mem_reserve_cnt = cnt + 1;
 }
 
+#ifdef DEBUG_PROM
+static void prom_debug_path(phandle node)
+{
+	char *path;
+	path = prom_scratch;
+	memset(path, 0, PROM_SCRATCH_SIZE);
+	call_prom("package-to-path", 3, 1, node, path, PROM_SCRATCH_SIZE-1);
+	prom_debug("  node %s :\n", path);
+}
+#else
+static void prom_debug_path(phandle node) { }
+#endif /* DEBUG_PROM */
 /*
  * Initialize memory allocation mechanism, parse "memory" nodes and
  * obtain that way the top of memory and RMO to setup out local allocator
@@ -1441,11 +1453,7 @@ static void __init prom_init_mem(void)
 		p = regbuf;
 		endp = p + (plen / sizeof(cell_t));
 
-#ifdef DEBUG_PROM
-		memset(path, 0, PROM_SCRATCH_SIZE);
-		call_prom("package-to-path", 3, 1, node, path, PROM_SCRATCH_SIZE-1);
-		prom_debug("  node %s :\n", path);
-#endif /* DEBUG_PROM */
+		prom_debug_path(node);
 
 		while ((endp - p) >= (rac + rsc)) {
 			unsigned long base, size;


Although that also begs the question of why the hell do we need path at
all, and not just use prom_scratch directly?

cheers
Christophe Leroy April 5, 2018, 7:01 a.m. UTC | #3
Michael Ellerman <mpe@ellerman.id.au> a écrit :

> LEROY Christophe <christophe.leroy@c-s.fr> writes:
>
>> Mathieu Malaterre <malat@debian.org> a écrit :
>>
>>> Add gcc attribute unused for two variables. Fix warnings treated as errors
>>> with W=1:
>>>
>>>   arch/powerpc/kernel/prom_init.c:1388:8: error: variable ‘path’ set
>>> but not used [-Werror=unused-but-set-variable]
>>>
>>> Suggested-by: Christophe Leroy <christophe.leroy@c-s.fr>
>>> Signed-off-by: Mathieu Malaterre <malat@debian.org>
>>> ---
>>> v2: move path within ifdef DEBUG_PROM
>>>
>>>  arch/powerpc/kernel/prom_init.c | 6 +++---
>>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/arch/powerpc/kernel/prom_init.c
>>> b/arch/powerpc/kernel/prom_init.c
>>> index acf4b2e0530c..4163b11abb6c 100644
>>> --- a/arch/powerpc/kernel/prom_init.c
>>> +++ b/arch/powerpc/kernel/prom_init.c
>>> @@ -603,7 +603,7 @@ static void __init early_cmdline_parse(void)
>>>  	const char *opt;
>>>
>>>  	char *p;
>>> -	int l = 0;
>>> +	int l __maybe_unused = 0;
>>>
>>>  	prom_cmd_line[0] = 0;
>>>  	p = prom_cmd_line;
>>> @@ -1385,7 +1385,7 @@ static void __init reserve_mem(u64 base, u64 size)
>>>  static void __init prom_init_mem(void)
>>>  {
>>>  	phandle node;
>>> -	char *path, type[64];
>>> +	char *path __maybe_unused, type[64];
>>
>> You should enclose that in an ifdef DEBUG_PROM instead of hiding the warning
>
> I disagree, the result is horrible:
>
>  static void __init prom_init_mem(void)
>  {
> 	phandle node;
> -	char *path, type[64];
> +#ifdef DEBUG_PROM
> +	char *path;
> +#endif
> +	char type[64];
> 	unsigned int plen;
> 	cell_t *p, *endp;
> 	__be32 val;
>
>
> The right fix is to move the debug logic into a helper, and put the path
> in there, eg. something like (not tested):
>
> diff --git a/arch/powerpc/kernel/prom_init.c  
> b/arch/powerpc/kernel/prom_init.c
> index f9d6befb55a6..b02fa2ccc70b 100644
> --- a/arch/powerpc/kernel/prom_init.c
> +++ b/arch/powerpc/kernel/prom_init.c
> @@ -1389,6 +1389,18 @@ static void __init reserve_mem(u64 base, u64 size)
>  	mem_reserve_cnt = cnt + 1;
>  }
>
> +#ifdef DEBUG_PROM
> +static void prom_debug_path(phandle node)
> +{
> +	char *path;
> +	path = prom_scratch;
> +	memset(path, 0, PROM_SCRATCH_SIZE);
> +	call_prom("package-to-path", 3, 1, node, path, PROM_SCRATCH_SIZE-1);
> +	prom_debug("  node %s :\n", path);
> +}
> +#else
> +static void prom_debug_path(phandle node) { }

Or put the ifdef inside the function to avoid double definition ?

> +#endif /* DEBUG_PROM */
>  /*
>   * Initialize memory allocation mechanism, parse "memory" nodes and
>   * obtain that way the top of memory and RMO to setup out local allocator
> @@ -1441,11 +1453,7 @@ static void __init prom_init_mem(void)
>  		p = regbuf;
>  		endp = p + (plen / sizeof(cell_t));
>
> -#ifdef DEBUG_PROM
> -		memset(path, 0, PROM_SCRATCH_SIZE);
> -		call_prom("package-to-path", 3, 1, node, path, PROM_SCRATCH_SIZE-1);
> -		prom_debug("  node %s :\n", path);
> -#endif /* DEBUG_PROM */
> +		prom_debug_path(node);
>
>  		while ((endp - p) >= (rac + rsc)) {
>  			unsigned long base, size;
>
>
> Although that also begs the question of why the hell do we need path at
> all, and not just use prom_scratch directly?

Wondering the same, why not use prom_scratch directly

Christophe

>
> cheers
diff mbox series

Patch

diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c
index acf4b2e0530c..4163b11abb6c 100644
--- a/arch/powerpc/kernel/prom_init.c
+++ b/arch/powerpc/kernel/prom_init.c
@@ -603,7 +603,7 @@  static void __init early_cmdline_parse(void)
 	const char *opt;
 
 	char *p;
-	int l = 0;
+	int l __maybe_unused = 0;
 
 	prom_cmd_line[0] = 0;
 	p = prom_cmd_line;
@@ -1385,7 +1385,7 @@  static void __init reserve_mem(u64 base, u64 size)
 static void __init prom_init_mem(void)
 {
 	phandle node;
-	char *path, type[64];
+	char *path __maybe_unused, type[64];
 	unsigned int plen;
 	cell_t *p, *endp;
 	__be32 val;
@@ -1406,7 +1406,6 @@  static void __init prom_init_mem(void)
 	prom_debug("root_size_cells: %x\n", rsc);
 
 	prom_debug("scanning memory:\n");
-	path = prom_scratch;
 
 	for (node = 0; prom_next_node(&node); ) {
 		type[0] = 0;
@@ -1431,6 +1430,7 @@  static void __init prom_init_mem(void)
 		endp = p + (plen / sizeof(cell_t));
 
 #ifdef DEBUG_PROM
+		path = prom_scratch;
 		memset(path, 0, PROM_SCRATCH_SIZE);
 		call_prom("package-to-path", 3, 1, node, path, PROM_SCRATCH_SIZE-1);
 		prom_debug("  node %s :\n", path);