All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH bpf-next] bpf: Update max_entries for array maps
@ 2022-10-25  9:28 Florian Lehner
  2022-10-26  3:35 ` Hou Tao
  0 siblings, 1 reply; 2+ messages in thread
From: Florian Lehner @ 2022-10-25  9:28 UTC (permalink / raw)
  To: bpf
  Cc: ast, daniel, andrii, martin.lau, song, yhs, john.fastabend,
	kpsingh, sdf, haoluo, jolsa, Florian Lehner

To improve memory handling and alignment max_entries is rounded up
before using its value to allocate memory.
This can lead to a situation where more memory is allocated than usable
if max_entries is no adjusted accordingly. So this change updates
max_entries in order to make the allocated memory available.

Signed-off-by: Florian Lehner <dev@der-flo.net>
---
 kernel/bpf/arraymap.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/kernel/bpf/arraymap.c b/kernel/bpf/arraymap.c
index 832b2659e96e..9411fa255ccc 100644
--- a/kernel/bpf/arraymap.c
+++ b/kernel/bpf/arraymap.c
@@ -145,6 +145,7 @@ static struct bpf_map *array_map_alloc(union bpf_attr *attr)
 	/* copy mandatory map attributes */
 	bpf_map_init_from_attr(&array->map, attr);
 	array->elem_size = elem_size;
+	array->map.max_entries = max_entries;
 
 	if (percpu && bpf_array_alloc_percpu(array)) {
 		bpf_map_area_free(array);
-- 
2.37.3


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

* Re: [PATCH bpf-next] bpf: Update max_entries for array maps
  2022-10-25  9:28 [PATCH bpf-next] bpf: Update max_entries for array maps Florian Lehner
@ 2022-10-26  3:35 ` Hou Tao
  0 siblings, 0 replies; 2+ messages in thread
From: Hou Tao @ 2022-10-26  3:35 UTC (permalink / raw)
  To: Florian Lehner, bpf
  Cc: ast, daniel, andrii, martin.lau, song, yhs, john.fastabend,
	kpsingh, sdf, haoluo, jolsa

Hi,

On 10/25/2022 5:28 PM, Florian Lehner wrote:
> To improve memory handling and alignment max_entries is rounded up
> before using its value to allocate memory.
> This can lead to a situation where more memory is allocated than usable
> if max_entries is no adjusted accordingly. So this change updates
> max_entries in order to make the allocated memory available.
>
> Signed-off-by: Florian Lehner <dev@der-flo.net>
> ---
>  kernel/bpf/arraymap.c | 1 +
>  1 file changed, 1 insertion(+)
>
> diff --git a/kernel/bpf/arraymap.c b/kernel/bpf/arraymap.c
> index 832b2659e96e..9411fa255ccc 100644
> --- a/kernel/bpf/arraymap.c
> +++ b/kernel/bpf/arraymap.c
> @@ -145,6 +145,7 @@ static struct bpf_map *array_map_alloc(union bpf_attr *attr)
>  	/* copy mandatory map attributes */
>  	bpf_map_init_from_attr(&array->map, attr);
>  	array->elem_size = elem_size;
> +	array->map.max_entries = max_entries;
>  
>  	if (percpu && bpf_array_alloc_percpu(array)) {
>  		bpf_map_area_free(array);
The override of max_entries is unnecessary and is also wrong.
bpf_array_alloc_percpu() will use array->map.max_entries to allocate per-cpu
value, and if using the rounded-up max_entries, there will be memory waste
because the extra allocated per-cpu values should not be accessible to bpf
program or user-space program.


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

end of thread, other threads:[~2022-10-26  3:36 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-25  9:28 [PATCH bpf-next] bpf: Update max_entries for array maps Florian Lehner
2022-10-26  3:35 ` Hou Tao

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.