All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jiri Olsa <olsajiri@gmail.com>
To: Anquan Wu <leiqi96@hotmail.com>
Cc: andrii@kernel.org, daniel@iogearbox.net, martin.lau@linux.dev,
	song@kernel.org, yhs@fb.com, kpsingh@kernel.org,
	bpf@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] libbpf: fix the name of a reused map
Date: Tue, 12 Jul 2022 10:31:45 +0200	[thread overview]
Message-ID: <Ys0xcf2yRG4fjkBY@krava> (raw)
In-Reply-To: <OSZP286MB1725CEA1C95C5CB8E7CCC53FB8869@OSZP286MB1725.JPNP286.PROD.OUTLOOK.COM>

On Tue, Jul 12, 2022 at 11:15:40AM +0800, Anquan Wu wrote:
> BPF map name is limited to BPF_OBJ_NAME_LEN.
> A map name is defined as being longer than BPF_OBJ_NAME_LEN,
> it will be truncated to BPF_OBJ_NAME_LEN when a userspace program
> calls libbpf to create the map. A pinned map also generates a path
> in the /sys. If the previous program wanted to reuse the map,
> it can not get bpf_map by name, because the name of the map is only
> partially the same as the name which get from pinned path.
> 
> The syscall information below show that map name "process_pinned_map"
> is truncated to "process_pinned_".
> 
>     bpf(BPF_OBJ_GET, {pathname="/sys/fs/bpf/process_pinned_map",
>     bpf_fd=0, file_flags=0}, 144) = -1 ENOENT (No such file or directory)
> 
>     bpf(BPF_MAP_CREATE, {map_type=BPF_MAP_TYPE_HASH, key_size=4,
>     value_size=4,max_entries=1024, map_flags=0, inner_map_fd=0,
>     map_name="process_pinned_",map_ifindex=0, btf_fd=3, btf_key_type_id=6,
>     btf_value_type_id=10,btf_vmlinux_value_type_id=0}, 72) = 4
> 
> This patch check that if the name of pinned map are the same as the
> actual name for the first (BPF_OBJ_NAME_LEN - 1),
> bpf map still uses the name which is included in bpf object.
> 
> Signed-off-by: Anquan Wu <leiqi96@hotmail.com>
> ---
> 
> v2: compare against zero explicitly
> 
> v1: https://lore.kernel.org/linux-kernel/OSZP286MB1725A2361FA2EE8432C4D5F4B8879@OSZP286MB1725.JPNP286.PROD.OUTLOOK.COM/
> ---
>  tools/lib/bpf/libbpf.c | 8 +++++++-
>  1 file changed, 7 insertions(+), 1 deletion(-)
> 
> diff --git a/tools/lib/bpf/libbpf.c b/tools/lib/bpf/libbpf.c
> index e89cc9c885b3..7b4d3604dfb4 100644
> --- a/tools/lib/bpf/libbpf.c
> +++ b/tools/lib/bpf/libbpf.c
> @@ -4328,6 +4328,7 @@ int bpf_map__reuse_fd(struct bpf_map *map, int fd)
>  {
>  	struct bpf_map_info info = {};
>  	__u32 len = sizeof(info);
> +	__u32 name_len;
>  	int new_fd, err;
>  	char *new_name;
>  
> @@ -4337,7 +4338,12 @@ int bpf_map__reuse_fd(struct bpf_map *map, int fd)
>  	if (err)
>  		return libbpf_err(err);
>  
> -	new_name = strdup(info.name);
> +	name_len = strlen(info.name);
> +	if (name_len == BPF_OBJ_NAME_LEN - 1 && strncmp(map->name, info.name, name_len) == 0)

so what if the map->name is different after 'name_len' ?

jirka

> +		new_name = strdup(map->name);
> +	else
> +		new_name = strdup(info.name);
> +
>  	if (!new_name)
>  		return libbpf_err(-errno);
>  
> -- 
> 2.32.0
> 

  reply	other threads:[~2022-07-12  8:31 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-07-12  3:15 [PATCH v2] libbpf: fix the name of a reused map Anquan Wu
2022-07-12  8:31 ` Jiri Olsa [this message]
2022-07-13  5:44   ` Anquan Wu
2022-07-13  5:59   ` Anquan Wu
2022-07-14  5:24     ` Andrii Nakryiko
2022-07-14  6:00 ` patchwork-bot+netdevbpf
2023-11-28 11:09 Anquan Wu
2023-11-28 11:14 Anquan Wu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Ys0xcf2yRG4fjkBY@krava \
    --to=olsajiri@gmail.com \
    --cc=andrii@kernel.org \
    --cc=bpf@vger.kernel.org \
    --cc=daniel@iogearbox.net \
    --cc=kpsingh@kernel.org \
    --cc=leiqi96@hotmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=martin.lau@linux.dev \
    --cc=song@kernel.org \
    --cc=yhs@fb.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.