Re: Linux-1.3.71..

Linus Torvalds (Linus.Torvalds@cs.helsinki.fi)
Tue, 12 Mar 1996 09:20:05 +0200


Sidewinder: "Re: Linux-1.3.71.." (Mar 11, 18:27):
>
> Unfortunately it trashed /tmp's root directory, and the kernel fell over
> *again* in get_free_pages on bootup. There is a major bug somewhere in that
> function.

Very improbable.

However, the "get_free_pages()" function is one of the most called
functions in the kernel, _and_ it is very susceptible to pointer
corruption. If some part of the kernel used a pointer that isn't valid
any more (for example, a pointer to a memory block that had been free'd
earlier), and corrupted the linked list of free pages, you'll see
problems in get_free_page().

This also makes that kind of bug very hard to find: by the time you get
the kernel Oops the thing that corrupted the list is long gone already.

I'll see if I can make it a bit more resistant to programming errors in
the kernel (by moving the free page lists into the "mem_map[]" array, so
that the list isn't in the free page itself). That won't make whatever
bug go away, but it might make it easier to debug (when the crash
hopefully happens in a less critical section).

Linus