Sparse reports a warning at bpf_array_map_seq_start() "warning: incorrect type in return expression (different address spaces)" The root cause is the function expect a return of type void * but instead got a percpu value in one of the return. To fix this a variable of type void * is created and the complainining return value is saved into the variable and return. Fix incorrect type in return expression Signed-off-by: Jules Irenge <jbi.octave@xxxxxxxxx> --- kernel/bpf/arraymap.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/kernel/bpf/arraymap.c b/kernel/bpf/arraymap.c index 624527401d4d..b1914168c23a 100644 --- a/kernel/bpf/arraymap.c +++ b/kernel/bpf/arraymap.c @@ -548,6 +548,7 @@ static void *bpf_array_map_seq_start(struct seq_file *seq, loff_t *pos) struct bpf_map *map = info->map; struct bpf_array *array; u32 index; + void *pptrs; if (info->index >= map->max_entries) return NULL; @@ -556,8 +557,10 @@ static void *bpf_array_map_seq_start(struct seq_file *seq, loff_t *pos) ++*pos; array = container_of(map, struct bpf_array, map); index = info->index & array->index_mask; - if (info->percpu_value_buf) - return array->pptrs[index]; + if (info->percpu_value_buf) { + pptrs = &array->pptrs[index]; + return pptrs; + } return array_map_elem_ptr(array, index); } -- 2.35.1