linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Peter Zijlstra <peterz@infradead.org>
To: Josh Poimboeuf <jpoimboe@redhat.com>
Cc: Sumit Garg <sumit.garg@linaro.org>,
	Oliver Sang <oliver.sang@intel.com>,
	jbaron@akamai.com, lkp@lists.01.org,
	kbuild test robot <lkp@intel.com>,
	Jarkko Sakkinen <jarkko@kernel.org>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] objtool,static_call: Don't emit static_call_site for .exit.text
Date: Thu, 18 Mar 2021 09:47:29 +0100	[thread overview]
Message-ID: <YFMToXI/3qjlMur4@hirez.programming.kicks-ass.net> (raw)
In-Reply-To: <YFMPmkMoae5cRzh+@hirez.programming.kicks-ass.net>

On Thu, Mar 18, 2021 at 09:30:18AM +0100, Peter Zijlstra wrote:
> On Thu, Mar 18, 2021 at 08:59:45AM +0100, Peter Zijlstra wrote:
> > On Wed, Mar 17, 2021 at 07:02:12PM -0500, Josh Poimboeuf wrote:
> > > On Wed, Mar 17, 2021 at 01:45:57PM +0100, Peter Zijlstra wrote:
> > > > arguably it simply isn't a good idea to use static_call() in __exit
> > > > code anyway, since module unload is never a performance critical path.
> > > 
> > > Couldn't you make the same argument about __init functions, which are
> > > allowed to do static calls?
> > 
> > I suppose we could indeed make that argument. Much of that code was
> > copied from jump_label without much consideration. And I now I suppose
> > I'll have to consider jump_label in __exit too :/
> > 
> > > We might consider a STATIC_CALL_SITE_EXIT flag, but I suppose we've run
> > > out of flag space.
> > 
> > Yeah, we're definitely short on flags. Let me try and figure out when
> > exactly it's all discarded.
> 
> Ha!, x86 stuffs .exit.text in [__init_begin, __init_end) and it is
> discarded right along with initmem.
> 
> But that means it should match init and be tagged init and all *should*
> work, but somehow it doesn't... clearly I'm missing something again
> ARGH!

I found a race, look at this:

kernel_init()
	...
	free_initmem();
	...
	system_state = SYSTEM_RUNNING;

vs

__static_call_update()
	...
	if (static_call_is_init()) {
		if (system_state >= SYSTEM_RUNNING)
			continue;
	}


And this is *after* SMP bringup. Somehow I don't think you hit this
race, it is extremely unlikely

(jump_label has the exact same issue fwiw)

      reply	other threads:[~2021-03-18  8:48 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20210315142345.GB4401@xsang-OptiPlex-9020>
     [not found] ` <CAFA6WYNMHAqqmNfncmJm3+BUYCktXouRtV_udSxQb7eifPmX+Q@mail.gmail.com>
     [not found]   ` <20210317030101.GB22345@xsang-OptiPlex-9020>
     [not found]     ` <CAFA6WYMb-C2L7DmGnhWgxjuuvP=qxPA4-s4q+knxH+iWXypHmw@mail.gmail.com>
     [not found]       ` <YFHAsgNhe8c3ZHQN@hirez.programming.kicks-ass.net>
     [not found]         ` <YFHE9CjanDAD4l5M@hirez.programming.kicks-ass.net>
     [not found]           ` <YFHFjarVo7HAP7pg@hirez.programming.kicks-ass.net>
     [not found]             ` <CAFA6WYNs-rQLUGPMwc-p0q_KRvR16rm-x55gDqw828c7-C1qeA@mail.gmail.com>
2021-03-17 12:45               ` [PATCH] objtool,static_call: Don't emit static_call_site for .exit.text Peter Zijlstra
2021-03-17 13:37                 ` Sumit Garg
2021-03-17 21:55                   ` Jarkko Sakkinen
2021-03-18  4:42                     ` Sumit Garg
2021-03-17 21:01                 ` Jarkko Sakkinen
2021-03-18  0:02                 ` Josh Poimboeuf
2021-03-18  7:59                   ` Peter Zijlstra
2021-03-18  8:30                     ` Peter Zijlstra
2021-03-18  8:47                       ` Peter Zijlstra [this message]

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=YFMToXI/3qjlMur4@hirez.programming.kicks-ass.net \
    --to=peterz@infradead.org \
    --cc=jarkko@kernel.org \
    --cc=jbaron@akamai.com \
    --cc=jpoimboe@redhat.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lkp@intel.com \
    --cc=lkp@lists.01.org \
    --cc=oliver.sang@intel.com \
    --cc=sumit.garg@linaro.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).