[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

RE: A few patches for 2.4.x for Alpha...




> 
> > Attached is a (possibly temporary) patch for another 2.4 
> bug I found. This
> > time, executing something like the following code will 
> cause a crash to srm
> > or an oops:
> > {
> >   unsigned long *myaddr = 0xffffffffffffc000;
> >   *myaddr = 7; /* bye bye */
> > }
> > 
> > It appears to me that the self-mapping entry in each task 
> page table is
> > somehow getting corrupted, causing user mode permission 
> bits to be set. I
> > don't even know why we have this mapping because a running 
> kernel does not
> > use it. While the patch does make it go away, I'm still 
> concerned that
> > something just happened to trash that memory. This one 
> needs to be examined
> > closer.
> > 
> > Line 63 of linux-2.4.7/arch/alpha/mm/init.c
> 
> I think the problem is that that is an entry in the pgd, it's 
> not a pte,
> so it's a kind of corrupted entry in first place. I also 
> don't know how
> can it be useful so I like your patch.

Yes, that is what I thought; do you know why 2.2.x isn't affected? I guess
the page tables are built up more correctly.

> > Btw, the clrfen and illop bug patch 
> (entry.S/proto.h/traps.c) need to be
> > applied to 2.2.x kernels also!
> 
> are you sure you don't break backwards compatibility with this change
> (or you only wanted to include the illop patch)?

My mistake! Please remove this. This is the Tru64 way, but I agree with you,
that we should leave it alone.

Cheers,
Daniel

> @@ -409,7 +426,7 @@
>                 break;
> 
>               case 3: /* FEN fault */
> -               send_sig(SIGILL, current, 1);
> +               send_sig(SIGFPE, current, 1);
>                 break;
> 
>               case 4: /* opDEC */
> Andrea
> 



Reply to: