Re: [PATCH] Fix implicit cast warning in test_klp_state.c

Marcos Paulo de Souza
2024-02-19T14:16:12Z

On Sat, 17 Feb 2024 04:21:26 +0530 Shresth Prasad <shresthprasad7@gmail.com> wrote:

> The function `klp_get_state` returns an `int` value, but the variable
> `loglevel_state` is of type `struct klp_state *` and thus does an
> implicit cast. Explicitly casting these values fixes:
>
> - warning: assignment to \u2018struct klp_state *\u2019 from \u2018int\u2019
> makes pointer from integer without a cast [-Wint-conversion]
>
> on lines 38, 55, 68 and 80 of test_klp_state.c

I was unable to find where you saw the klp_get_state returning int. I tried
searching at the current master of live-patching repo[1], on linux-next. Can
you point where do you saw it? For me, klp_get_state return a pointer to klp_state.

Thanks,
Marcos

[1]: https://git.kernel.org/pub/scm/linux/kernel/git/livepatching/livepatching.git/tree/kernel/livepatch/state.c

>
> Signed-off-by: Shresth Prasad <shresthprasad7@gmail.com>
> ---
> .../selftests/livepatch/test_modules/test_klp_state.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/tools/testing/selftests/livepatch/test_modules/test_klp_state.c b/tools/testing/selftests/livepatch/test_modules/test_klp_state.c
> index 57a4253acb01..ae6b1ca15fc0 100644
> --- a/tools/testing/selftests/livepatch/test_modules/test_klp_state.c
> +++ b/tools/testing/selftests/livepatch/test_modules/test_klp_state.c
> @@ -35,7 +35,7 @@ static int allocate_loglevel_state(void)
> {
> struct klp_state *loglevel_state;
>
> - loglevel_state = klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE);
> + loglevel_state = (struct klp_state *)klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE);
> if (!loglevel_state)
> return -EINVAL;
>
> @@ -52,7 +52,7 @@ static void fix_console_loglevel(void)
> {
> struct klp_state *loglevel_state;
>
> - loglevel_state = klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE);
> + loglevel_state = (struct klp_state *)klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE);
> if (!loglevel_state)
> return;
>
> @@ -65,7 +65,7 @@ static void restore_console_loglevel(void)
> {
> struct klp_state *loglevel_state;
>
> - loglevel_state = klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE);
> + loglevel_state = (struct klp_state *)klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE);
> if (!loglevel_state)
> return;
>
> @@ -77,7 +77,7 @@ static void free_loglevel_state(void)
> {
> struct klp_state *loglevel_state;
>
> - loglevel_state = klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE);
> + loglevel_state = (struct klp_state *)klp_get_state(&patch, CONSOLE_LOGLEVEL_STATE);
> if (!loglevel_state)
> return;
>
> --
> 2.43.1