All of lore.kernel.org
 help / color / mirror / Atom feed
From: Oleg Nesterov <oleg@redhat.com>
To: David Howells <dhowells@redhat.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
	Andrew Tridgell <tridge@samba.org>,
	Eric Paris <eparis@parisplace.org>,
	Jakub Jelinek <jakub@redhat.com>,
	James Morris <jmorris@namei.org>,
	Roland McGrath <roland@redhat.com>,
	Stephen Smalley <sds@tycho.nsa.gov>,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH] signals: check_kill_permission: don't check creds if same_thread_group()
Date: Tue, 18 May 2010 16:08:40 +0200	[thread overview]
Message-ID: <20100518140840.GA4096@redhat.com> (raw)
In-Reply-To: <25639.1274190647@redhat.com>

On 05/18, David Howells wrote:
>
> Oleg Nesterov <oleg@redhat.com> wrote:
>
> > Yes, but both current_cred() and same_thread_group(current, t) call
> > get_current(), and gcc doesn't cache the result because we call
> > audit_signal_info() in between.
>
> Sorry, yes.  I was reading get_current() as current_cred() for some reason.
>
> However, you are _still_ calling get_current() twice...  So that bit of your
> changelog isn't really correct.

If I read kernel/signal.s correctly - no.

Well, yes, get_current() is still called twice inside check_kill_permission().
But this is because we have audit_signal_info()->audit_dummy_context() which
uses current too.

But "cred = current_cred()" and same_thread_group(current, t) read
gs:current_task only once, so this change really helps (although the
optimization is very minor, of course).

> In fact, get_current() should be __attribute_const__ since it can't change
> whilst you're looking at it, except within switch_to(), probably in a piece of
> assembly code, so gcc should be free to cache it as long as it likes.

Agreed! I thought about this many times.

Oleg.


  reply	other threads:[~2010-05-18 14:11 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-05-17 19:54 [PATCH] signals: check_kill_permission: don't check creds if same_thread_group() Oleg Nesterov
2010-05-18  1:25 ` Roland McGrath
2010-05-18  8:55 ` David Howells
2010-05-18 13:39   ` Oleg Nesterov
2010-05-18 13:50     ` David Howells
2010-05-18 14:08       ` Oleg Nesterov [this message]
2010-05-20 19:42 ` Andrew Morton
2010-05-20 20:02   ` Roland McGrath

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=20100518140840.GA4096@redhat.com \
    --to=oleg@redhat.com \
    --cc=akpm@linux-foundation.org \
    --cc=dhowells@redhat.com \
    --cc=eparis@parisplace.org \
    --cc=jakub@redhat.com \
    --cc=jmorris@namei.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=roland@redhat.com \
    --cc=sds@tycho.nsa.gov \
    --cc=tridge@samba.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.