Re: [Crash-utility] [PATCH] Add eBPF program name to "bpf -p|-P" options output

2020-03-05 Thread Dave Anderson



- Original Message -
> "bpftool prog list" command displays eBPF program name if available.
> Also, the crash "bpf -m|-M" options display eBPF map name.  But the
> "bpf -p|-P" options don't display its name.  It would be useful in
> finding the program which we want to see.

Looks good -- queued for crash-7.2.9:
  
  
https://github.com/crash-utility/crash/commit/007f844e6ddd53b777f6e0eb3261309bbc5e3fee

Thanks,
  Dave


> 
> Signed-off-by: Kazuhito Hagio 
> ---
>  bpf.c | 12 
>  defs.h|  1 +
>  help.c|  3 ++-
>  symbols.c |  2 ++
>  4 files changed, 17 insertions(+), 1 deletion(-)
> 
> diff --git a/bpf.c b/bpf.c
> index 39ced88..cb6b0ed 100644
> --- a/bpf.c
> +++ b/bpf.c
> @@ -194,6 +194,7 @@ bpf_init(struct bpf_info *bpf)
>   MEMBER_OFFSET_INIT(bpf_prog_pages, "bpf_prog", "pages");
>   MEMBER_OFFSET_INIT(bpf_prog_aux_load_time, "bpf_prog_aux", 
> "load_time");
>   MEMBER_OFFSET_INIT(bpf_prog_aux_user, "bpf_prog_aux", "user");
> + MEMBER_OFFSET_INIT(bpf_prog_aux_name, "bpf_prog_aux", "name");
>   MEMBER_OFFSET_INIT(bpf_map_key_size, "bpf_map", "key_size");
>   MEMBER_OFFSET_INIT(bpf_map_value_size, "bpf_map", "value_size");
>   MEMBER_OFFSET_INIT(bpf_map_max_entries, "bpf_map", 
> "max_entries");
> @@ -452,6 +453,17 @@ do_bpf(ulong flags, ulong prog_id, ulong map_id, int
> radix)
>   bpf_prog_gpl_compatible(buf1, 
> (ulong)bpf->proglist[i].value);
>   fprintf(fp, " GPL_COMPATIBLE: %s", buf1);
>  
> + fprintf(fp, "  NAME: ");
> + if (VALID_MEMBER(bpf_prog_aux_name)) {
> + 
> BCOPY(>bpf_prog_aux_buf[OFFSET(bpf_prog_aux_name)], buf1, 16);
> + buf1[16] = NULLCHAR;
> + if (strlen(buf1))
> + fprintf(fp, "\"%s\"", buf1);
> + else
> + fprintf(fp, "(unused)");
> + } else
> + fprintf(fp, "(unknown)");
> +
>   fprintf(fp, "  UID: ");
>   if (VALID_MEMBER(bpf_prog_aux_user) && 
> VALID_MEMBER(user_struct_uid)) {
>   user = ULONG(bpf->bpf_prog_aux_buf + 
> OFFSET(bpf_prog_aux_user));
> diff --git a/defs.h b/defs.h
> index fbd19b0..e852ddf 100644
> --- a/defs.h
> +++ b/defs.h
> @@ -2078,6 +2078,7 @@ struct offset_table {/* stash of
> commonly-used offsets */
>   long bpf_map_memory;
>   long bpf_map_memory_pages;
>   long bpf_map_memory_user;
> + long bpf_prog_aux_name;
>  };
>  
>  struct size_table { /* stash of commonly-used sizes */
> diff --git a/help.c b/help.c
> index 5c313af..eda5ce9 100644
> --- a/help.c
> +++ b/help.c
> @@ -2412,7 +2412,8 @@ char *help_bpf[] = {
>  "-p ID  displays the basic information specific to the program ID, plus
>  the",
>  "   size in bytes of its translated bytecode, the size in bytes of
>  its",
>  "   jited code, the number of bytes locked into memory, the time
>  that",
> -"   the program was loaded, whether it is GPL compatible, and its
> UID.",
> +"   the program was loaded, whether it is GPL compatible, its name",
> +"   string, and its UID.",
>  "-P same as -p, but displays the basic and extra data for all
>  programs.",
>  "-m ID  displays the basic information specific to the map ID, plus
>  the",
>  "   size in bytes of its key and value, the maximum number of
>  key-value",
> diff --git a/symbols.c b/symbols.c
> index f1f659b..9c3032d 100644
> --- a/symbols.c
> +++ b/symbols.c
> @@ -10494,6 +10494,8 @@ dump_offset_table(char *spec, ulong makestruct)
>   OFFSET(bpf_prog_aux_load_time));
>   fprintf(fp, " bpf_prog_aux_user: %ld\n",
>   OFFSET(bpf_prog_aux_user));
> + fprintf(fp, " bpf_prog_aux_name: %ld\n",
> + OFFSET(bpf_prog_aux_name));
>   fprintf(fp, "   user_struct_uid: %ld\n",
>   OFFSET(user_struct_uid));
>  
> --
> 2.24.1
> 
> 

--
Crash-utility mailing list
Crash-utility@redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility



[Crash-utility] [PATCH] Add eBPF program name to "bpf -p|-P" options output

2020-03-05 Thread 萩尾 一仁
"bpftool prog list" command displays eBPF program name if available.
Also, the crash "bpf -m|-M" options display eBPF map name.  But the
"bpf -p|-P" options don't display its name.  It would be useful in
finding the program which we want to see.

Signed-off-by: Kazuhito Hagio 
---
 bpf.c | 12 
 defs.h|  1 +
 help.c|  3 ++-
 symbols.c |  2 ++
 4 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/bpf.c b/bpf.c
index 39ced88..cb6b0ed 100644
--- a/bpf.c
+++ b/bpf.c
@@ -194,6 +194,7 @@ bpf_init(struct bpf_info *bpf)
MEMBER_OFFSET_INIT(bpf_prog_pages, "bpf_prog", "pages");
MEMBER_OFFSET_INIT(bpf_prog_aux_load_time, "bpf_prog_aux", 
"load_time");
MEMBER_OFFSET_INIT(bpf_prog_aux_user, "bpf_prog_aux", "user");
+   MEMBER_OFFSET_INIT(bpf_prog_aux_name, "bpf_prog_aux", "name");
MEMBER_OFFSET_INIT(bpf_map_key_size, "bpf_map", "key_size");
MEMBER_OFFSET_INIT(bpf_map_value_size, "bpf_map", "value_size");
MEMBER_OFFSET_INIT(bpf_map_max_entries, "bpf_map", 
"max_entries");
@@ -452,6 +453,17 @@ do_bpf(ulong flags, ulong prog_id, ulong map_id, int radix)
bpf_prog_gpl_compatible(buf1, 
(ulong)bpf->proglist[i].value);
fprintf(fp, " GPL_COMPATIBLE: %s", buf1);
 
+   fprintf(fp, "  NAME: ");
+   if (VALID_MEMBER(bpf_prog_aux_name)) {
+   
BCOPY(>bpf_prog_aux_buf[OFFSET(bpf_prog_aux_name)], buf1, 16);
+   buf1[16] = NULLCHAR;
+   if (strlen(buf1))
+   fprintf(fp, "\"%s\"", buf1);
+   else
+   fprintf(fp, "(unused)");
+   } else
+   fprintf(fp, "(unknown)");
+
fprintf(fp, "  UID: ");
if (VALID_MEMBER(bpf_prog_aux_user) && 
VALID_MEMBER(user_struct_uid)) {
user = ULONG(bpf->bpf_prog_aux_buf + 
OFFSET(bpf_prog_aux_user));
diff --git a/defs.h b/defs.h
index fbd19b0..e852ddf 100644
--- a/defs.h
+++ b/defs.h
@@ -2078,6 +2078,7 @@ struct offset_table {/* stash of 
commonly-used offsets */
long bpf_map_memory;
long bpf_map_memory_pages;
long bpf_map_memory_user;
+   long bpf_prog_aux_name;
 };
 
 struct size_table { /* stash of commonly-used sizes */
diff --git a/help.c b/help.c
index 5c313af..eda5ce9 100644
--- a/help.c
+++ b/help.c
@@ -2412,7 +2412,8 @@ char *help_bpf[] = {
 "-p ID  displays the basic information specific to the program ID, plus 
the",
 "   size in bytes of its translated bytecode, the size in bytes of 
its",
 "   jited code, the number of bytes locked into memory, the time that",
-"   the program was loaded, whether it is GPL compatible, and its 
UID.",
+"   the program was loaded, whether it is GPL compatible, its name",
+"   string, and its UID.",
 "-P same as -p, but displays the basic and extra data for all 
programs.",
 "-m ID  displays the basic information specific to the map ID, plus the", 
 "   size in bytes of its key and value, the maximum number of 
key-value",
diff --git a/symbols.c b/symbols.c
index f1f659b..9c3032d 100644
--- a/symbols.c
+++ b/symbols.c
@@ -10494,6 +10494,8 @@ dump_offset_table(char *spec, ulong makestruct)
OFFSET(bpf_prog_aux_load_time));
fprintf(fp, " bpf_prog_aux_user: %ld\n",
OFFSET(bpf_prog_aux_user));
+   fprintf(fp, " bpf_prog_aux_name: %ld\n",
+   OFFSET(bpf_prog_aux_name));
fprintf(fp, "   user_struct_uid: %ld\n",
OFFSET(user_struct_uid));
 
-- 
2.24.1


--
Crash-utility mailing list
Crash-utility@redhat.com
https://www.redhat.com/mailman/listinfo/crash-utility