All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Hao Luo <haoluo@google.com>
Cc: Arnaldo Carvalho de Melo <arnaldo.melo@gmail.com>,
	Andrii Nakryiko <andrii.nakryiko@gmail.com>,
	Jiri Olsa <jolsa@kernel.org>,
	dwarves@vger.kernel.org
Subject: Re: [PATCH] btf_encoder: Check var type after checking var addr.
Date: Tue, 27 Oct 2020 08:19:40 -0300	[thread overview]
Message-ID: <20201027111940.GH2449445@kernel.org> (raw)
In-Reply-To: <20201026221822.29021-1-haoluo@google.com>

Em Mon, Oct 26, 2020 at 03:18:22PM -0700, Hao Luo escreveu:
> Commit 2e719cc ("btf_encoder: revamp how per-CPU variables are
> encoded") adds percpu_var_exists() to filter out the symbols that
> are not percpu var. However, the check comes after checking the
> var's type. There can be symbols that are of zero type. If we hit
> that, btf_encoder will not work without '--btf_encode_force'.
> So we should check percpu_var_exists before checking var's type.
> 
> Tested:
>  haoluo@haoluo:~/kernel/tip$ gcc --version
>  gcc (GCC) 10.2.0
>  Copyright (C) 2020 Free Software Foundation, Inc.
>  This is free software; see the source for copying conditions.  There is NO
>  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
> 
>  Before:
> 
>  haoluo@haoluo:~/kernel/tip$ make clean -s
>  haoluo@haoluo:~/kernel/tip$ make -j 32 -s
>    LINK     resolve_btfids
>  error: found variable in CU 'kernel/bpf/btf.c' that has void type
>  Encountered error while encoding BTF.
>  FAILED: load BTF from vmlinux: Unknown error -2make: *** [Makefile:1164: vmlinux] Error 255
> 
>  After:
> 
>  haoluo@haoluo:~/kernel/tip$ make clean -s
>  haoluo@haoluo:~/kernel/tip$ make -j 32 -s
>    LINK     resolve_btfids
>  haoluo@haoluo:~/kernel/tip$

Thanks, tested and applied.

- Arnaldo

 
> Fixes: 2e719cc ("btf_encoder: revamp how per-CPU variables are encoded")
> Signed-off-by: Hao Luo <haoluo@google.com>
> ---
>  btf_encoder.c | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/btf_encoder.c b/btf_encoder.c
> index 2a6455b..b5f8f3e 100644
> --- a/btf_encoder.c
> +++ b/btf_encoder.c
> @@ -441,9 +441,12 @@ int cu__encode_btf(struct cu *cu, int verbose, bool force,
>  		if (var->spec)
>  			var = var->spec;
>  
> +		if (!percpu_var_exists(addr, &size, &name))
> +			continue; /* not a per-CPU variable */
> +
>  		if (var->ip.tag.type == 0) {
> -			fprintf(stderr, "error: found variable in CU '%s' that has void type\n",
> -				cu->name);
> +			fprintf(stderr, "error: found variable '%s' in CU '%s' that has void type\n",
> +				name, cu->name);
>  			if (force)
>  				continue;
>  			err = -1;
> @@ -452,8 +455,6 @@ int cu__encode_btf(struct cu *cu, int verbose, bool force,
>  
>  		type = var->ip.tag.type + type_id_off;
>  		linkage = var->external ? BTF_VAR_GLOBAL_ALLOCATED : BTF_VAR_STATIC;
> -		if (!percpu_var_exists(addr, &size, &name))
> -			continue; /* not a per-CPU variable */
>  
>  		if (btf_elf__verbose) {
>  			printf("Variable '%s' from CU '%s' at address 0x%lx encoded\n",
> -- 
> 2.29.0.rc1.297.gfa9743e501-goog
> 

-- 

- Arnaldo

  parent reply	other threads:[~2020-10-27 11:19 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-10-26 22:18 [PATCH] btf_encoder: Check var type after checking var addr Hao Luo
2020-10-26 23:22 ` Andrii Nakryiko
2020-10-27 11:19 ` Arnaldo Carvalho de Melo [this message]
2020-10-27 11:20 ` Jiri Olsa

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=20201027111940.GH2449445@kernel.org \
    --to=acme@kernel.org \
    --cc=andrii.nakryiko@gmail.com \
    --cc=arnaldo.melo@gmail.com \
    --cc=dwarves@vger.kernel.org \
    --cc=haoluo@google.com \
    --cc=jolsa@kernel.org \
    /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.