I reported such a hanging system to Linus at the time of 1.3.2x kernels.
Linus added the extra GFP_NFS, so that NFS gets some extra pages of memory.
Before that, I could reproduce this bug with an NFS-installation of a
16 MB machine. (Oh, well, I often just started an extra shell on another
tty and typed "exit", if the kernel hung. That got the system going again. :-)
(The situation is similar, as normally no other program releases memory
at installation time or at bootup/fsck-time.)
Seems like the problem is now well(??) understood, though it needs some more
testing and fine-tuning for a 2.0.31. Unlike many other bugs, changing
these things seems to be more complex than most people can think of.
Some changes can also not be proofed by reading the new C source, but must
be tested on lots of different machines.
For me, that is nearly the same as some fixes for esoteric TCP-problems
that still get fixed by Dave or Eric Schenk.
Hope you still enjoy the kernel and don't through it away, :-)
linux-kernel is getting high-volumne again,
sorry for posting,
Florian La Roche