diff options
author | Manu Bretelle <chantr4@gmail.com> | 2023-10-18 16:01:32 -0700 |
---|---|---|
committer | Daniel Borkmann <daniel@iogearbox.net> | 2023-10-19 16:29:36 +0200 |
commit | 90704b4be0b0d6d0a7a9369d4b9aae6a579602c7 (patch) | |
tree | b7a572801da28d3dc213446b5e72b63c76986f67 /tools/bpf | |
parent | 0e133a13370389d3894891eafe54fec2c44ad735 (diff) | |
download | lwn-90704b4be0b0d6d0a7a9369d4b9aae6a579602c7.tar.gz lwn-90704b4be0b0d6d0a7a9369d4b9aae6a579602c7.zip |
bpftool: Fix printing of pointer value
When printing a pointer value, "%p" will either print the hexadecimal
value of the pointer (e.g `0x1234`), or `(nil)` when NULL.
Both of those are invalid json "integer" values and need to be wrapped
in quotes.
Before:
```
$ sudo bpftool struct_ops dump name ned_dummy_cca | grep next
"next": (nil),
$ sudo bpftool struct_ops dump name ned_dummy_cca | \
jq '.[1].bpf_struct_ops_tcp_congestion_ops.data.list.next'
parse error: Invalid numeric literal at line 29, column 34
```
After:
```
$ sudo ./bpftool struct_ops dump name ned_dummy_cca | grep next
"next": "(nil)",
$ sudo ./bpftool struct_ops dump name ned_dummy_cca | \
jq '.[1].bpf_struct_ops_tcp_congestion_ops.data.list.next'
"(nil)"
```
Signed-off-by: Manu Bretelle <chantr4@gmail.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Tested-by: Eduard Zingerman <eddyz87@gmail.com>
Acked-by: Eduard Zingerman <eddyz87@gmail.com>
Acked-by: Quentin Monnet <quentin@isovalent.com>
Link: https://lore.kernel.org/bpf/20231018230133.1593152-2-chantr4@gmail.com
Diffstat (limited to 'tools/bpf')
-rw-r--r-- | tools/bpf/bpftool/btf_dumper.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/tools/bpf/bpftool/btf_dumper.c b/tools/bpf/bpftool/btf_dumper.c index 1b7f69714604..527fe867a8fb 100644 --- a/tools/bpf/bpftool/btf_dumper.c +++ b/tools/bpf/bpftool/btf_dumper.c @@ -127,7 +127,7 @@ static void btf_dumper_ptr(const struct btf_dumper *d, print_ptr_value: if (d->is_plain_text) - jsonw_printf(d->jw, "%p", (void *)value); + jsonw_printf(d->jw, "\"%p\"", (void *)value); else jsonw_printf(d->jw, "%lu", value); } |