2018-09-11 17:44:42

by Laura Abbott

[permalink] [raw]
Subject: [PATCHv2] misc: kgdbts: Fix restrict error

kgdbts current fails when compiled with restrict:

drivers/misc/kgdbts.c: In function ‘configure_kgdbts’:
drivers/misc/kgdbts.c:1070:2: error: ‘strcpy’ source argument is the same as destination [-Werror=restrict]
strcpy(config, opt);
^~~~~~~~~~~~~~~~~~~

As the error says, config is being used in both the source and destination.
Refactor the code to avoid the extra copy and put the parsing closer to
the actual location.

Signed-off-by: Laura Abbott <[email protected]>
---
v2: Refactored to move the verbose setting into kgbts_run_tests per
suggestion of Daniel Thompson
---
drivers/misc/kgdbts.c | 16 ++++++----------
1 file changed, 6 insertions(+), 10 deletions(-)

diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
index 6193270e7b3d..de20bdaa148d 100644
--- a/drivers/misc/kgdbts.c
+++ b/drivers/misc/kgdbts.c
@@ -985,6 +985,12 @@ static void kgdbts_run_tests(void)
int nmi_sleep = 0;
int i;

+ verbose = 0;
+ if (strstr(config, "V1"))
+ verbose = 1;
+ if (strstr(config, "V2"))
+ verbose = 2;
+
ptr = strchr(config, 'F');
if (ptr)
fork_test = simple_strtol(ptr + 1, NULL, 10);
@@ -1068,13 +1074,6 @@ static int kgdbts_option_setup(char *opt)
return -ENOSPC;
}
strcpy(config, opt);
-
- verbose = 0;
- if (strstr(config, "V1"))
- verbose = 1;
- if (strstr(config, "V2"))
- verbose = 2;
-
return 0;
}

@@ -1086,9 +1085,6 @@ static int configure_kgdbts(void)

if (!strlen(config) || isspace(config[0]))
goto noconfig;
- err = kgdbts_option_setup(config);
- if (err)
- goto noconfig;

final_ack = 0;
run_plant_and_detach_test(1);
--
2.17.1



2018-09-18 23:15:55

by Daniel Thompson

[permalink] [raw]
Subject: Re: [PATCHv2] misc: kgdbts: Fix restrict error

On Tue, Sep 11, 2018 at 10:44:03AM -0700, Laura Abbott wrote:
> kgdbts current fails when compiled with restrict:
>
> drivers/misc/kgdbts.c: In function ‘configure_kgdbts’:
> drivers/misc/kgdbts.c:1070:2: error: ‘strcpy’ source argument is the same as destination [-Werror=restrict]
> strcpy(config, opt);
> ^~~~~~~~~~~~~~~~~~~
>
> As the error says, config is being used in both the source and destination.
> Refactor the code to avoid the extra copy and put the parsing closer to
> the actual location.
>
> Signed-off-by: Laura Abbott <[email protected]>

Acked-by: Daniel Thompson <[email protected]>

> ---
> v2: Refactored to move the verbose setting into kgbts_run_tests per
> suggestion of Daniel Thompson
> ---
> drivers/misc/kgdbts.c | 16 ++++++----------
> 1 file changed, 6 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/misc/kgdbts.c b/drivers/misc/kgdbts.c
> index 6193270e7b3d..de20bdaa148d 100644
> --- a/drivers/misc/kgdbts.c
> +++ b/drivers/misc/kgdbts.c
> @@ -985,6 +985,12 @@ static void kgdbts_run_tests(void)
> int nmi_sleep = 0;
> int i;
>
> + verbose = 0;
> + if (strstr(config, "V1"))
> + verbose = 1;
> + if (strstr(config, "V2"))
> + verbose = 2;
> +
> ptr = strchr(config, 'F');
> if (ptr)
> fork_test = simple_strtol(ptr + 1, NULL, 10);
> @@ -1068,13 +1074,6 @@ static int kgdbts_option_setup(char *opt)
> return -ENOSPC;
> }
> strcpy(config, opt);
> -
> - verbose = 0;
> - if (strstr(config, "V1"))
> - verbose = 1;
> - if (strstr(config, "V2"))
> - verbose = 2;
> -
> return 0;
> }
>
> @@ -1086,9 +1085,6 @@ static int configure_kgdbts(void)
>
> if (!strlen(config) || isspace(config[0]))
> goto noconfig;
> - err = kgdbts_option_setup(config);
> - if (err)
> - goto noconfig;
>
> final_ack = 0;
> run_plant_and_detach_test(1);
> --
> 2.17.1
>