Public bug reported:

This can affect systems with write-allocate caches.  At the time of
writing, this includes the following ARM implementations:

   * ARM11MPCore
   * ARM Cortex-A9

It may affect other vendors' implementations, but I have no information
on this.


The problem occurs typically occurs when applying relocations in executable 
pages, where the pages are backed by files and mapped with MAP_PRIVATE.  
Relocations which modify actual instructions would require the user code to 
perform a flush operation to synchronise the I- and D- caches, but this problem 
can occur when data relocations are performed in a page containing executable 
code, for example when literal pool entries are reolcated (this situation would 
not normally require a flush according to the ARM architecture --- it is 
duplication of the page by the kernel CoW mechanism which creates the hazard).

For more discussion, and a kernel patch to work around it, see:

http://article.gmane.org/gmane.linux.ports.arm.kernel/64861
http://article.gmane.org/gmane.linux.ports.arm.kernel/64449


This issue is known to affect PIE executables in Jaunty (i.e., /sbin/init (!)), 
due to the presence of unresolved literal pool relocations in the the .text 
section of the C library's Scrt1.o.  The symptom is frequest Segmentation Fault 
and Illegal Instruction error messages while the init scripts run.

Since it looks like a bug for Scrt1.o to be position-dependent, Karmic's
libc (eglibc) contains a patch to remove these relocations; this has
also been committed against glibc in the meantime:

http://sourceware.org/ml/libc-ports/2008-10/msg00009.html
http://sourceware.org/ml/libc-ports/2009-01/msg00040.html

As a result, Karmic does not exhibit the problems with init.

However, applying the kernel patches is still a good idea, since it's
possible some other packages (particularly anything containing its own
compiling or linking magic, or a JIT or similar hacks) might be
affected.  In the meantime, we'll try and push the patches into the
mainline ARM linux kernel.

The patches will become important when Ubuntu starts to add ARM SMP
support post-Karmic.

** Affects: linux (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: armel

-- 
On ARM platforms with write-allocate caches, I-cache may be populated with 
garbage after copy-on-write page duplication
https://bugs.launchpad.net/bugs/426280
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to