From: Vasiliy Kulikov <segoon@openwall.com>
To: kernel-hardening@lists.openwall.com
Cc: Ingo Molnar <mingo@elte.hu>,
"Paul E. McKenney" <paul.mckenney@linaro.org>,
Manuel Lauss <manuel.lauss@googlemail.com>,
linux-kernel@vger.kernel.org, Richard Weinberger <richard@nod.at>,
torvalds@linux-foundation.org, Marc Zyngier <maz@misterjones.org>
Subject: Re: [kernel-hardening] Re: initcall dependency problem (ns vs. threads)
Date: Mon, 1 Aug 2011 22:34:01 +0400 [thread overview]
Message-ID: <20110801183401.GA27647@albatros> (raw)
In-Reply-To: <20110801112021.25ec9041.akpm@linux-foundation.org>
On Mon, Aug 01, 2011 at 11:20 -0700, Andrew Morton wrote:
> There's not really enough detail here for me to suggest a fix without
> actually doing some work. Which ipc initialization function is being
> called to late?
The call sequence is:
static int __init ipc_init(void)
{
...
shm_init();
...
}
__initcall(ipc_init);
void __init shm_init (void)
{
shm_init_ns(&init_ipc_ns);
...
void shm_init_ns(struct ipc_namespace *ns)
{
...
ipc_init_ids(&shm_ids(ns));
void ipc_init_ids(struct ipc_ids *ids)
{
init_rwsem(&ids->rw_mutex);
...
The code triggering the oops (called from do_exit()):
void exit_shm(struct task_struct *task)
{
...
down_write(&shm_ids(ns).rw_mutex);
> Which thread is using which data structures before
> which initialization function has been run?
Actually, it doesn't matter. If ANY thread exits before init_rwsem()
then exit_shm() would use uninitialized shm_ids(ns).rw_mutex.
> Are we talking about init_ipc_ns.ids[] here? If so, did you try
> initializing the three rwsems at compile-time?
No, good idea. I'll do it.
IMO moving specific initializer is bad by design. There should be a
guarantee what resources are accessible on what boot stage. I suppose
it should be: all thread related information (including ns data) is
accessible for the moment of threads' code execution.
Thanks,
--
Vasiliy Kulikov
http://www.openwall.com - bringing security into open computing environments
next prev parent reply other threads:[~2011-08-01 18:34 UTC|newest]
Thread overview: 53+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-08-01 18:01 [kernel-hardening] initcall dependency problem (ns vs. threads) Vasiliy Kulikov
2011-08-01 18:01 ` Vasiliy Kulikov
2011-08-01 18:20 ` [kernel-hardening] " Andrew Morton
2011-08-01 18:20 ` Andrew Morton
2011-08-01 18:34 ` Vasiliy Kulikov [this message]
2011-08-01 19:03 ` [kernel-hardening] " Vasiliy Kulikov
2011-08-01 19:07 ` Andrew Morton
2011-08-01 19:22 ` Vasiliy Kulikov
2011-08-02 0:01 ` Linus Torvalds
2011-08-02 12:45 ` [kernel-hardening] [PATCH] shm: fix a race between shm_exit() and shm_init() Vasiliy Kulikov
2011-08-02 12:45 ` Vasiliy Kulikov
2011-08-02 12:51 ` [kernel-hardening] " Manuel Lauss
2011-08-02 12:51 ` Manuel Lauss
2011-08-02 13:23 ` [kernel-hardening] " Richard Weinberger
2011-08-02 13:23 ` Richard Weinberger
2011-08-02 13:29 ` [kernel-hardening] " Marc Zyngier
2011-08-02 13:29 ` Marc Zyngier
2011-08-02 20:33 ` [kernel-hardening] " Andrew Morton
2011-08-02 20:33 ` Andrew Morton
2011-08-02 20:55 ` [kernel-hardening] " Andrew Morton
2011-08-02 20:55 ` Andrew Morton
2011-08-03 5:30 ` [kernel-hardening] " Manuel Lauss
2011-08-03 5:30 ` Manuel Lauss
2011-08-03 8:05 ` [kernel-hardening] " Marc Zyngier
2011-08-03 8:05 ` Marc Zyngier
2011-08-03 8:19 ` [kernel-hardening] " Linus Torvalds
2011-08-03 8:19 ` Linus Torvalds
2011-08-03 10:04 ` [kernel-hardening] " Manuel Lauss
2011-08-03 10:04 ` Manuel Lauss
2011-08-03 10:30 ` [kernel-hardening] " Marc Zyngier
2011-08-03 10:30 ` Marc Zyngier
2011-08-03 13:13 ` Thadeu Lima de Souza Cascardo
2011-08-03 13:33 ` Kay Sievers
2011-08-03 13:45 ` Richard Weinberger
2011-08-04 0:35 ` [kernel-hardening] " Linus Torvalds
2011-08-04 0:35 ` Linus Torvalds
2011-08-04 0:50 ` [kernel-hardening] " Andrew Morton
2011-08-04 0:50 ` Andrew Morton
2011-08-04 1:01 ` [kernel-hardening] " Linus Torvalds
2011-08-04 1:01 ` Linus Torvalds
2011-08-04 1:15 ` [kernel-hardening] " Kay Sievers
2011-08-04 1:15 ` Kay Sievers
2011-08-04 8:26 ` [kernel-hardening] " Marc Zyngier
2011-08-04 8:26 ` Marc Zyngier
2011-08-03 7:43 ` [kernel-hardening] " Linus Torvalds
2011-08-03 7:43 ` Linus Torvalds
2011-08-03 7:50 ` [kernel-hardening] " Manuel Lauss
2011-08-03 7:50 ` Manuel Lauss
2011-08-03 8:00 ` [kernel-hardening] " Manuel Lauss
2011-08-03 8:00 ` Manuel Lauss
2011-08-03 19:33 ` [kernel-hardening] " Andrew Morton
2011-08-03 19:33 ` Andrew Morton
2011-08-03 19:52 ` [kernel-hardening] " Vasiliy Kulikov
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=20110801183401.GA27647@albatros \
--to=segoon@openwall.com \
--cc=kernel-hardening@lists.openwall.com \
--cc=linux-kernel@vger.kernel.org \
--cc=manuel.lauss@googlemail.com \
--cc=maz@misterjones.org \
--cc=mingo@elte.hu \
--cc=paul.mckenney@linaro.org \
--cc=richard@nod.at \
--cc=torvalds@linux-foundation.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.