linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrea Arcangeli <andrea@suse.de>
To: Marcelo Tosatti <marcelo@conectiva.com.br>
Cc: linux-kernel@vger.kernel.org
Subject: vmalloc allocations in ipc needs smp initialized (and vm must be allowed to schedule in 2.6)
Date: Fri, 29 Aug 2003 03:30:17 +0200	[thread overview]
Message-ID: <20030829013017.GQ24409@dualathlon.random> (raw)

Hi Marcelo,

I submit you this patch for 2.4.23 merging. In short if you change
SEMMNI to 8192 the kernel will crash at boot, beause it tries to call
vmalloc before the smp is initialized. The reason is that vmalloc calls
into the pte alloc code, and the fast pte alloc is tried first, but that
reads into the pte_quicklist, that requires the cpu_data to be
initialized (and that happens in smp_init()).

the patch is obviously safe, since no piece of kernel (especially the
code in the check_bugs and smp_init paths ;) calls into the ipc
subsystem.

The reason this started to trigger wasn't really that we increased
SEMMNI, but what happend is that some IPC data structure grown, and for
some reason the corruption due the uninitalized pte_quicklist
triggers only for smp boxes with less than 1G (not very common anymore
;). So it wasn't immediatly reproducible on all setups.

2.6 doesn't suffer from the same problem, simply because 2.6 isn't using
the quicklist anymore, but I think it would be much more correct to make
the same change in 2.6 too, since whatever cond_resched() in the vm
paths (and they're definitely allowed to call it), will lead to a crash
since the init task isn't initialized and the scheduler can't be invoked
yet. (and 2.6 already has the bigger data structures that should trigger
the vmalloc all the time on all setups)

--- x/init/main.c.~1~	2003-08-26 00:13:17.000000000 +0200
+++ x/init/main.c	2003-08-29 03:20:46.000000000 +0200
@@ -424,9 +424,6 @@ asmlinkage void __init start_kernel(void
 #ifdef CONFIG_PROC_FS
 	proc_root_init();
 #endif
-#if defined(CONFIG_SYSVIPC)
-	ipc_init();
-#endif
 	check_bugs();
 	printk("POSIX conformance testing by UNIFIX\n");
 
@@ -436,6 +433,9 @@ asmlinkage void __init start_kernel(void
 	 *	make syscalls (and thus be locked).
 	 */
 	smp_init();
+#if defined(CONFIG_SYSVIPC)
+	ipc_init();
+#endif
 	rest_init();
 }
 
Andrea

             reply	other threads:[~2003-08-29  1:29 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-08-29  1:30 Andrea Arcangeli [this message]
2003-08-29  5:40 vmalloc allocations in ipc needs smp initialized (and vm must be allowed to schedule in 2.6) Manfred Spraul

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=20030829013017.GQ24409@dualathlon.random \
    --to=andrea@suse.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=marcelo@conectiva.com.br \
    /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).