[parisc-linux] Bug in shared libraries

John Marvin jsm@udlkern.fc.hp.com
Fri, 20 Oct 2000 08:08:48 -0600 (MDT)


I've been chasing a bug for the last few days that I believe is
responsible for a variety of flaky VM behaviour.  It turns out that we
were missing some code in do_page_fault() that is supposed to check access
permissions before calling handle_mm_fault().  This leads to problems with
reference counts on pages being wrong, which leads to a variety of bad
problems.

I checked in new code (in arch/parisc/mm/fault.c) to fix the problem,
however, I had to enclose the actual permission check inside an #ifdef
CHECK_PERMISSIONS, because the fix cannot be enabled yet.  The problem is
that at least one shared library is writing into a read only region
(routine _dl_start in /lib/ld-2.1.94.so).  I'm afraid this looks like part
of the dynamic linker, which means that just about every command is
potentially broken.  I'm hoping that we only have to fix a few shared
libraries, and not every command, to get around this problem.  Basically,
we need to be able to successfully boot with the #ifdef CHECK_PERMISSIONS
in fault.c removed.

I'm hoping that someone who knows more about the shared library builds
can look into fixing this.

John Marvin
jsm@fc.hp.com