Re: mlockall() still causes 100 % oops in 2.0.27

Ion Badulescu (
Sun, 1 Dec 1996 18:57:02 -0500 (EST)

On Sun, 1 Dec 1996, Zarmfab Software Development wrote:

> has anybody else noticed that mlockall() causes a 100 %
> reproduceable oops at alpha-systems running 2.0.27 ??
> The same happened with 2.0.26, at i386 the call seems
> to work. The oops happens in line 129 of mlock.c :
> char c=get_user((char *)start);

Hmm.. it looks like a bad user-space pointer (and this is 2.0.x, so the
smart exceptions handling does not protect us).. How a bad pointer can get
there is a totally different question. The only difference between alpha
and i386 is the get_user macro, which looks fine to me (unless gcc is
doing something really stupid).

Could you please pipe the oops through ksymoops and post the results here?
It might give somebody a clue about the pointer...

> i'd really like to work on a fix, but don't even
> understand the __asm__ directive some lines down, sorry.

The __asm__ directive immediately after get_user only forces gcc to
generate code for get_user (which in turn touches each page between start
and end to make sure it's not paged out). If you remove it, gcc will
complain about "unused variable `c'" or something like that and will not
do anything inside the loop, except for start += PAGE_SIZE.


  It is better to keep your mouth shut and be thought a fool,
            than to open it and remove all doubt.