All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 2/2] bpf: Fix warning of incorrect type in return expression
@ 2022-09-03 19:02 Jules Irenge
  2022-09-06 18:29 ` Alexei Starovoitov
  0 siblings, 1 reply; 2+ messages in thread
From: Jules Irenge @ 2022-09-03 19:02 UTC (permalink / raw)
  To: martin.lau
  Cc: Elana.Copperman, ast, daniel, andrii, song, yhs, john.fastabend,
	kpsingh, linux-kernel, bpf, sdf, haoluo

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@gmail.com>
---
 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


^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 2/2] bpf: Fix warning of incorrect type in return expression
  2022-09-03 19:02 [PATCH 2/2] bpf: Fix warning of incorrect type in return expression Jules Irenge
@ 2022-09-06 18:29 ` Alexei Starovoitov
  0 siblings, 0 replies; 2+ messages in thread
From: Alexei Starovoitov @ 2022-09-06 18:29 UTC (permalink / raw)
  To: Jules Irenge
  Cc: Martin KaFai Lau, Elana.Copperman, Alexei Starovoitov,
	Daniel Borkmann, Andrii Nakryiko, Song Liu, Yonghong Song,
	John Fastabend, KP Singh, LKML, bpf, Stanislav Fomichev, Hao Luo

On Sat, Sep 3, 2022 at 12:02 PM Jules Irenge <jbi.octave@gmail.com> wrote:
>
> 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@gmail.com>
> ---
>  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;
> +       }

Somebody will surely send a patch to optimize above back
to original code.
Please find a different way to shut up sparse or just ignore it.

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-09-06 18:29 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-03 19:02 [PATCH 2/2] bpf: Fix warning of incorrect type in return expression Jules Irenge
2022-09-06 18:29 ` Alexei Starovoitov

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.