PATCH: 2.2.8 romfs ramdisk crashes kernel

Adam J. Richter (adam@yggdrasil.com)
Thu, 13 May 1999 09:59:10 -0700


>> = Adam Richter <adam@yggdrasil.com>
> = Ionut Badulescu <ionut@solaria.dnttm.ro>

>> Under 2.2.8 with various Yggdrasil changes, the kernel
>> crashes while uncompressing its initial ~2MB romfs ramdisk. [...]

>It's a race condition -- the ramdisk code tries to wake up bdflush
>before the latter gets a chance to initialize itself. See the
>thread "OOPS ... (bdflush related)". Linus' suggestion was to check
>for bdflush_tsk == NULL in wakeup_bdflush and simply return if true.

>I haven't tested it yet.

You are apparently correct! The following patch fixed the
problem. I am posting this message from my machine, running 2.2.8.
Thanks for your help. (Also, thanks to Janos Farkas for exploring
some other possibilities related to this problem.)

Adam J. Richter __ ______________ 4880 Stevens Creek Blvd, Suite 104
adam@yggdrasil.com \ / San Jose, California 95129-1034
+1 408 261-6630 | g g d r a s i l United States of America
fax +1 408 261-6631 "Free Software For The Rest Of Us."

--- /tmp/linux-2.2.8/fs/buffer.c Tue May 11 09:55:49 1999
+++ linux/fs/buffer.c Thu May 13 08:21:18 1999
@@ -1559,7 +1559,7 @@

void wakeup_bdflush(int wait)
{
- if (current == bdflush_tsk)
+ if (current == bdflush_tsk || bdflush_tsk == NULL)
return;
wake_up_process(bdflush_tsk);
if (wait) {

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/