All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Miroslav Benes <mbenes@suse.cz>
Cc: jpoimboe@redhat.com, tglx@linutronix.de,
	linux-kernel@vger.kernel.org, joro@8bytes.org,
	boris.ostrovsky@oracle.com, jgross@suse.com, x86@kernel.org,
	mbenes@suse.com, rostedt@goodmis.org, dvyukov@google.com,
	elver@google.com, Andi Kleen <andi@firstfloor.org>
Subject: Re: [PATCH v2 02/24] objtool: Introduce CFI hash
Date: Thu, 1 Jul 2021 10:35:34 +0200	[thread overview]
Message-ID: <YN1+VkWmKyIk4zlo@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <alpine.LSU.2.21.2106301431120.32505@pobox.suse.cz>

On Wed, Jun 30, 2021 at 02:45:57PM +0200, Miroslav Benes wrote:
> > @@ -2725,15 +2820,24 @@ static int validate_branch(struct objtoo
> >  
> >  			if (insn->visited & visited)
> >  				return 0;
> > -		}
> > +		} else
> > +			nr_visited++;
> 
> just a coding style
> 
> 	} else {
> 		nr_visited++;
> 	}
> 
> > @@ -3192,6 +3304,13 @@ int check(struct objtool_file *file)
> >  		warnings += ret;
> >  	}
> >  
> > +	if (stats) {
> > +		printf("nr_visited: %ld\n", nr_visited);
> 
> Could we make this nr_insns_visited?

Both done.

> > +		printf("nr_cfi: %ld\n", nr_cfi);
> > +		printf("nr_cfi_reused: %ld\n", nr_cfi_reused);
> > +		printf("nr_cfi_cache: %ld\n", nr_cfi_cache);
> > +	}
> > +
> > +++ b/tools/objtool/orc_gen.c
> > @@ -13,13 +13,19 @@
> >  #include <objtool/warn.h>
> >  #include <objtool/endianness.h>
> >  
> > -static int init_orc_entry(struct orc_entry *orc, struct cfi_state *cfi)
> > +static int init_orc_entry(struct orc_entry *orc, struct cfi_state *cfi,
> > +			  struct instruction *insn)
> >  {
> > -	struct instruction *insn = container_of(cfi, struct instruction, cfi);
> >  	struct cfi_reg *bp = &cfi->regs[CFI_BP];
> >  
> >  	memset(orc, 0, sizeof(*orc));
> >  
> > +	if (!cfi) {
> > +		orc->end = 0;
> > +		orc->sp_reg = ORC_REG_UNDEFINED;
> > +		return 0;
> > +	}
> > +
> 
> This looks strange. You access cfi a couple of lines earlier (bp cfi_reg 
> initialization).

That's a relative address compute, it doesn't actually dereference the
pointer.

> Is it even possible to have cfi == NULL here? The second call site below 
> has a check and the first one should not happen (insn->cfip should be 
> always set if I am not missing something).

I can happen for instructions that are not visited, like NOP fillers
between functions. Remove the check and try to build a file :-)

  reply	other threads:[~2021-07-01  8:37 UTC|newest]

Thread overview: 101+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-24  9:40 [PATCH v2 00/24] objtool/x86: noinstr vs PARAVIRT Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 01/24] x86/xen: Mark cpu_bringup_and_idle() as dead_end_function Peter Zijlstra
2021-06-24 10:49   ` Juergen Gross
2021-06-30 11:47   ` Miroslav Benes
2021-08-20 19:22   ` Josh Poimboeuf
2021-08-20 19:31     ` Josh Poimboeuf
2021-08-23  8:40       ` Juergen Gross
2021-08-30  5:55         ` Juergen Gross
2021-08-30  7:48           ` Peter Zijlstra
2021-08-30  7:56             ` Juergen Gross
2021-09-15 15:49       ` [tip: objtool/core] x86/xen: Move hypercall_page to top of the file tip-bot2 for Josh Poimboeuf
2021-09-15 15:49   ` [tip: objtool/core] x86/xen: Mark cpu_bringup_and_idle() as dead_end_function tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 02/24] objtool: Introduce CFI hash Peter Zijlstra
2021-06-30 12:45   ` Miroslav Benes
2021-07-01  8:35     ` Peter Zijlstra [this message]
2021-07-01  8:53       ` Miroslav Benes
2021-08-20 22:27   ` Josh Poimboeuf
2021-08-25 10:13     ` Peter Zijlstra
2021-08-25 12:49       ` Peter Zijlstra
2021-08-25 10:15     ` Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 03/24] objtool: Handle __sanitize_cov*() tail calls Peter Zijlstra
2021-06-25 11:05   ` Marco Elver
2021-06-28  9:07     ` Peter Zijlstra
2021-06-25 13:38   ` Steven Rostedt
2021-06-26  8:18     ` Peter Zijlstra
2021-06-29  1:07       ` Steven Rostedt
2021-08-20 23:17   ` Josh Poimboeuf
2021-08-25 10:19     ` Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 04/24] x86/kvm: Always inline sev_*guest() Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 05/24] x86/kvm: Always inline vmload() / vmsave() Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 06/24] x86: Always inline context_tracking_guest_enter() Peter Zijlstra
2021-08-20 23:22   ` Josh Poimboeuf
2021-08-20 23:34     ` Josh Poimboeuf
2021-08-25 12:16       ` Peter Zijlstra
     [not found]         ` <YSZxtBHNJzoUbqdE@ravnborg.org>
2021-08-26  4:10           ` Josh Poimboeuf
2021-08-25 13:38       ` Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 07/24] x86/kvm: Always inline to_svm() Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 08/24] x86/kvm: Always inline evmcs_write64() Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 09/24] x86: Always inline ip_within_syscall_gap() Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 10/24] x86/sev: Fix noinstr for vc_ghcb_invalidate() Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 11/24] locking/lockdep: Avoid RCU-induced noinstr fail Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 12/24] x86/paravirt: Mark arch_local_irq_*() __always_inline Peter Zijlstra
2021-06-24 10:51   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 13/24] x86/paravirt: Use PVOP_* for paravirt calls Peter Zijlstra
2021-06-24 10:52   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 14/24] x86/xen: Make read_cr2() noinstr Peter Zijlstra
2021-06-24 10:55   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 15/24] x86/xen: Make write_cr2() noinstr Peter Zijlstra
2021-06-24 10:56   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 16/24] x86/xen: Make get_debugreg() noinstr Peter Zijlstra
2021-06-24 10:57   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 17/24] x86/xen: Make set_debugreg() noinstr Peter Zijlstra
2021-06-24 10:59   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 18/24] x86/xen: Make save_fl() noinstr Peter Zijlstra
2021-06-24 11:07   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 19/24] x86/xen: Make hypercall_page noinstr Peter Zijlstra
2021-06-24 11:08   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 20/24] x86/xen: Make irq_enable() noinstr Peter Zijlstra
2021-06-24 11:09   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 21/24] x86/xen: Make irq_disable() noinstr Peter Zijlstra
2021-06-24 11:10   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 22/24] x86/xen: Mark xen_force_evtchn_callback() noinstr Peter Zijlstra
2021-06-24 11:11   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 23/24] x86/xen: Rework the xen_{cpu,irq,mmu}_ops[] arrays Peter Zijlstra
2021-06-24 12:12   ` Juergen Gross
2021-09-15 15:49   ` [tip: objtool/core] x86/xen: Rework the xen_{cpu,irq,mmu}_opsarrays tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24  9:41 ` [PATCH v2 24/24] objtool: Support pv_opsindirect calls for noinstr Peter Zijlstra
2021-09-15 15:49   ` [tip: objtool/core] " tip-bot2 for Peter Zijlstra
2021-09-17 12:58   ` tip-bot2 for Peter Zijlstra
2021-06-24 13:05 ` [PATCH v2 00/24] objtool/x86: noinstr vs PARAVIRT Steven Rostedt

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=YN1+VkWmKyIk4zlo@hirez.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=andi@firstfloor.org \
    --cc=boris.ostrovsky@oracle.com \
    --cc=dvyukov@google.com \
    --cc=elver@google.com \
    --cc=jgross@suse.com \
    --cc=joro@8bytes.org \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mbenes@suse.com \
    --cc=mbenes@suse.cz \
    --cc=rostedt@goodmis.org \
    --cc=tglx@linutronix.de \
    --cc=x86@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.