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@suse.com 写道:
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
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