tools/bpf/bpftool/btf.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
In cases where the SIGNED condition is met, the variable var is still
used as an unsigned long long. Therefore, the %llu format specifier
should be used to avoid incorrect data print. This patch fixes it.
Signed-off-by: Luo Yifan <luoyifan@cmss.chinamobile.com>
---
tools/bpf/bpftool/btf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/bpf/bpftool/btf.c b/tools/bpf/bpftool/btf.c
index 7d2af1ff3..ff58ff85e 100644
--- a/tools/bpf/bpftool/btf.c
+++ b/tools/bpf/bpftool/btf.c
@@ -283,7 +283,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
jsonw_end_object(w);
} else {
if (btf_kflag(t))
- printf("\n\t'%s' val=%lldLL", name,
+ printf("\n\t'%s' val=%lluLL", name,
(unsigned long long)val);
else
printf("\n\t'%s' val=%lluULL", name,
--
2.27.0
On Sun, Nov 10, 2024 at 6:48 PM Luo Yifan <luoyifan@cmss.chinamobile.com> wrote:
>
> In cases where the SIGNED condition is met, the variable var is still
> used as an unsigned long long. Therefore, the %llu format specifier
> should be used to avoid incorrect data print. This patch fixes it.
>
> Signed-off-by: Luo Yifan <luoyifan@cmss.chinamobile.com>
> ---
> tools/bpf/bpftool/btf.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/bpf/bpftool/btf.c b/tools/bpf/bpftool/btf.c
> index 7d2af1ff3..ff58ff85e 100644
> --- a/tools/bpf/bpftool/btf.c
> +++ b/tools/bpf/bpftool/btf.c
> @@ -283,7 +283,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
> jsonw_end_object(w);
> } else {
> if (btf_kflag(t))
> - printf("\n\t'%s' val=%lldLL", name,
> + printf("\n\t'%s' val=%lluLL", name,
> (unsigned long long)val);
the fix should be casting to (long long) instead
pw-bot: cr
> else
> printf("\n\t'%s' val=%lluULL", name,
> --
> 2.27.0
>
>
>
When the SIGNED condition is met, the variable `var` should be cast to
`long long` instead of `unsigned long long`.
Signed-off-by: Luo Yifan <luoyifan@cmss.chinamobile.com>
---
tools/bpf/bpftool/btf.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tools/bpf/bpftool/btf.c b/tools/bpf/bpftool/btf.c
index 547c1ccdc..d005e4fd6 100644
--- a/tools/bpf/bpftool/btf.c
+++ b/tools/bpf/bpftool/btf.c
@@ -289,7 +289,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
} else {
if (btf_kflag(t))
printf("\n\t'%s' val=%lldLL", name,
- (unsigned long long)val);
+ (long long)val);
else
printf("\n\t'%s' val=%lluULL", name,
(unsigned long long)val);
--
2.27.0
2024-11-12 15:37 UTC+0800 ~ Luo Yifan <luoyifan@cmss.chinamobile.com> > When the SIGNED condition is met, the variable `var` should be cast to > `long long` instead of `unsigned long long`. > > Signed-off-by: Luo Yifan <luoyifan@cmss.chinamobile.com> Looks good this time, thank you! Reviewed-by: Quentin Monnet <qmo@kernel.org>
2024-11-11 10:48 UTC+0800 ~ Luo Yifan <luoyifan@cmss.chinamobile.com>
> In cases where the SIGNED condition is met, the variable var is still
> used as an unsigned long long. Therefore, the %llu format specifier
> should be used to avoid incorrect data print. This patch fixes it.
>
> Signed-off-by: Luo Yifan <luoyifan@cmss.chinamobile.com>
> ---
> tools/bpf/bpftool/btf.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/bpf/bpftool/btf.c b/tools/bpf/bpftool/btf.c
> index 7d2af1ff3..ff58ff85e 100644
> --- a/tools/bpf/bpftool/btf.c
> +++ b/tools/bpf/bpftool/btf.c
> @@ -283,7 +283,7 @@ static int dump_btf_type(const struct btf *btf, __u32 id,
> jsonw_end_object(w);
> } else {
> if (btf_kflag(t))
> - printf("\n\t'%s' val=%lldLL", name,
> + printf("\n\t'%s' val=%lluLL", name,
> (unsigned long long)val);
> else
> printf("\n\t'%s' val=%lluULL", name,
Hi, I don't think your change is correct, it seems to me that we do want
to make the distinction between the signed and unsigned version here (as
for all the other enum cases in the function). What are you trying to
address, did you find a bug in the output or a warning during compilation?
Quentin
Hello, this is not a bug, but a minor change to eliminate a static checker warning. Since the var parameter has been cast to unsigned long long, the corresponding format specifier should be %llu instead of %lld.
© 2016 - 2025 Red Hat, Inc.