Well, the repo location I use is git://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git. It seem klp_get_state return struct klp_state. The definition of this function in my repo as follows: struct klp_state *klp_get_state(struct klp_patch *patch, unsigned long id) { struct klp_state *state; klp_for_each_state(patch, state) { if (state->id == id) return state; } return NULL; } EXPORT_SYMBOL_GPL(klp_get_state); Are you sure there is really a need for forced conversion? > 2024年2月19日 22:16,Marcos Paulo de Souza <mpdesouza@xxxxxxxx> 写道: > > On Sat, 17 Feb 2024 04:21:26 +0530 Shresth Prasad <shresthprasad7@xxxxxxxxx> 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@xxxxxxxxx> >> --- >> .../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 >