All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] kdb: kdb_main: refactor code in kdb_md_line
@ 2018-08-15 15:06 Gustavo A. R. Silva
  2018-08-16  9:32 ` Daniel Thompson
  0 siblings, 1 reply; 3+ messages in thread
From: Gustavo A. R. Silva @ 2018-08-15 15:06 UTC (permalink / raw)
  To: Daniel Thompson, Jason Wessel
  Cc: kgdb-bugreport, linux-kernel, Gustavo A. R. Silva

Replace the whole switch statement with a for loop.
This makes the code much clear and easy to read.

This also addresses the following Coverity warnings:

Addresses-Coverity-ID: 115090 ("Missing break in switch")
Addresses-Coverity-ID: 115091 ("Missing break in switch")
Addresses-Coverity-ID: 114700 ("Missing break in switch")

Suggested-by: Daniel Thompson <daniel.thompson@linaro.org>
Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
---
 kernel/debug/kdb/kdb_main.c | 20 ++------------------
 1 file changed, 2 insertions(+), 18 deletions(-)

diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
index 2ddfce8..4b896a6 100644
--- a/kernel/debug/kdb/kdb_main.c
+++ b/kernel/debug/kdb/kdb_main.c
@@ -1538,25 +1538,9 @@ static void kdb_md_line(const char *fmtstr, unsigned long addr,
 			wc.word = word;
 #define printable_char(c) \
 	({unsigned char __c = c; isascii(__c) && isprint(__c) ? __c : '.'; })
-			switch (bytesperword) {
-			case 8:
+			for (i = 0; i < bytesperword; i++)
 				*c++ = printable_char(*cp++);
-				*c++ = printable_char(*cp++);
-				*c++ = printable_char(*cp++);
-				*c++ = printable_char(*cp++);
-				addr += 4;
-			case 4:
-				*c++ = printable_char(*cp++);
-				*c++ = printable_char(*cp++);
-				addr += 2;
-			case 2:
-				*c++ = printable_char(*cp++);
-				addr++;
-			case 1:
-				*c++ = printable_char(*cp++);
-				addr++;
-				break;
-			}
+			addr += bytesperword;
 #undef printable_char
 		}
 	}
-- 
2.7.4


^ permalink raw reply related	[flat|nested] 3+ messages in thread

* Re: [PATCH] kdb: kdb_main: refactor code in kdb_md_line
  2018-08-15 15:06 [PATCH] kdb: kdb_main: refactor code in kdb_md_line Gustavo A. R. Silva
@ 2018-08-16  9:32 ` Daniel Thompson
  2018-08-16 13:47   ` Gustavo A. R. Silva
  0 siblings, 1 reply; 3+ messages in thread
From: Daniel Thompson @ 2018-08-16  9:32 UTC (permalink / raw)
  To: Gustavo A. R. Silva; +Cc: Jason Wessel, kgdb-bugreport, linux-kernel

On Wed, Aug 15, 2018 at 10:06:16AM -0500, Gustavo A. R. Silva wrote:
> Replace the whole switch statement with a for loop.
> This makes the code much clear and easy to read.
> 
> This also addresses the following Coverity warnings:
> 
> Addresses-Coverity-ID: 115090 ("Missing break in switch")
> Addresses-Coverity-ID: 115091 ("Missing break in switch")
> Addresses-Coverity-ID: 114700 ("Missing break in switch")
> 
> Suggested-by: Daniel Thompson <daniel.thompson@linaro.org>
> Signed-off-by: Gustavo A. R. Silva <gustavo@embeddedor.com>
> ---
>  kernel/debug/kdb/kdb_main.c | 20 ++------------------
>  1 file changed, 2 insertions(+), 18 deletions(-)
> 
> diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
> index 2ddfce8..4b896a6 100644
> --- a/kernel/debug/kdb/kdb_main.c
> +++ b/kernel/debug/kdb/kdb_main.c
> @@ -1538,25 +1538,9 @@ static void kdb_md_line(const char *fmtstr, unsigned long addr,
>  			wc.word = word;
>  #define printable_char(c) \
>  	({unsigned char __c = c; isascii(__c) && isprint(__c) ? __c : '.'; })
> -			switch (bytesperword) {
> -			case 8:
> +			for (i = 0; i < bytesperword; i++)

i already a control variable for the outer loop. It is not safe to reuse
it here.


Daniel.

>  				*c++ = printable_char(*cp++);
> -				*c++ = printable_char(*cp++);
> -				*c++ = printable_char(*cp++);
> -				*c++ = printable_char(*cp++);
> -				addr += 4;
> -			case 4:
> -				*c++ = printable_char(*cp++);
> -				*c++ = printable_char(*cp++);
> -				addr += 2;
> -			case 2:
> -				*c++ = printable_char(*cp++);
> -				addr++;
> -			case 1:
> -				*c++ = printable_char(*cp++);
> -				addr++;
> -				break;
> -			}
> +			addr += bytesperword;
>  #undef printable_char
>  		}
>  	}
> -- 
> 2.7.4
> 

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [PATCH] kdb: kdb_main: refactor code in kdb_md_line
  2018-08-16  9:32 ` Daniel Thompson
@ 2018-08-16 13:47   ` Gustavo A. R. Silva
  0 siblings, 0 replies; 3+ messages in thread
From: Gustavo A. R. Silva @ 2018-08-16 13:47 UTC (permalink / raw)
  To: Daniel Thompson; +Cc: Jason Wessel, kgdb-bugreport, linux-kernel



On 8/16/18 4:32 AM, Daniel Thompson wrote:

>> diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
>> index 2ddfce8..4b896a6 100644
>> --- a/kernel/debug/kdb/kdb_main.c
>> +++ b/kernel/debug/kdb/kdb_main.c
>> @@ -1538,25 +1538,9 @@ static void kdb_md_line(const char *fmtstr, unsigned long addr,
>>  			wc.word = word;
>>  #define printable_char(c) \
>>  	({unsigned char __c = c; isascii(__c) && isprint(__c) ? __c : '.'; })
>> -			switch (bytesperword) {
>> -			case 8:
>> +			for (i = 0; i < bytesperword; i++)
> 
> i already a control variable for the outer loop. It is not safe to reuse
> it here.
> 

Oh I see. I'll send v2 shortly.

Thanks
--
Gustavo

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-08-16 13:47 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-08-15 15:06 [PATCH] kdb: kdb_main: refactor code in kdb_md_line Gustavo A. R. Silva
2018-08-16  9:32 ` Daniel Thompson
2018-08-16 13:47   ` Gustavo A. R. Silva

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.