Changes

Jump to navigation Jump to search
156 bytes added ,  14:29, 13 March 2017
Kernel patches are in linux-next, add issue about vdso helper
Line 73: Line 73:  
As 32-bit application is restored from 64-bit CRIU, some task's properties that were filled on <code>exec()</code> are left, which is quite unusual for 32-bit task. One of the things, left from 64-bit binary is precalculated <code>mmap_base</code> which is used to find task's top/bottom address limit during <code>mmap()</code> syscall. That means that compat <code>sys_mmap()</code> may map page over 4Gb address and return 4-byte pointer to low bytes of address. Looks like no one has used compatible mmap in 64-bit binary. Results in broken mmap in restored 32-bit application, which can map vma over 4Gb.
 
As 32-bit application is restored from 64-bit CRIU, some task's properties that were filled on <code>exec()</code> are left, which is quite unusual for 32-bit task. One of the things, left from 64-bit binary is precalculated <code>mmap_base</code> which is used to find task's top/bottom address limit during <code>mmap()</code> syscall. That means that compat <code>sys_mmap()</code> may map page over 4Gb address and return 4-byte pointer to low bytes of address. Looks like no one has used compatible mmap in 64-bit binary. Results in broken mmap in restored 32-bit application, which can map vma over 4Gb.
   −
Patches to fix this bug at this moment were posted on lkml, but not yet accepted. See [[Upstream kernel commits]]. If they will not go to v4.9-stable, the kerndat test for 32-bit C/R will be reworked to check if the bug present in kernel (which is not nice thing, but ok).
+
See [[Upstream kernel commits]]. The kerndat test for 32-bit C/R will be reworked to check if the bug present in kernel (which is not nice thing, but ok).
 +
 
 +
=== Issue with compat vdso helper ===
 +
Rarely it segfaults: [https://github.com/xemul/criu/issues/290 issue], [https://github.com/xemul/criu/issues/273 reproduce].
 +
Presumply, because of using syscall() and memcpy() from Glibc, instead of raw pie-helpers.
 +
Hard to reproduce.
    
=== List of failed tests ===
 
=== List of failed tests ===
105

edits

Navigation menu