• J
    [PATCH] uml: eliminate use of local in clone stub · 39d730ab
    Jeff Dike 提交于
    We have a bug in the i386 stub_syscall6 which pushes ebp before the system
    call and pops it afterwards.  Because we use syscall6 to remap the stack, the
    old contents of the stack (and the former value of ebp) are no longer
    available.  Some versions of gcc make from a real local, accessed through ebp,
    despite my efforts to make it obvious that references to from are really
    constants.  This patch attempts to make it even more obvious by eliminating
    from and using a macro to access the stub's data explicitly with constants.
    
    My original thinking on this was to replace syscall6 with a remap_stack
    interface which saved ebp someplace and restored it afterwards.  The problem
    is that there are no registers to put it in, except for esp.  That could work,
    since we can store a constant in esp after the mmap because we just replaced
    the stack.  However, this approach seems a tad cleaner.
    Signed-off-by: NJeff Dike <jdike@addtoit.com>
    Signed-off-by: NAndrew Morton <akpm@osdl.org>
    Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
    39d730ab
clone.c 1.2 KB