• Johannes Berg's avatar
    um: fix stub location calculation · adf9ae0d
    Johannes Berg authored
    In commit 9f0b4807 ("um: rework userspace stubs to not hard-code
    stub location") I changed stub_segv_handler() to do a calculation with
    a pointer to a stack variable to find the data page that we're using
    for the stack and the rest of the data. This same commit was meant to
    do it as well for stub_clone_handler(), but the change inadvertently
    went into commit 84b2789d ("um: separate child and parent errors
    in clone stub") instead.
    
    This was reported to not be compiled correctly by gcc 5, causing the
    code to crash here. I'm not sure why, perhaps it's UB because the var
    isn't initialized? In any case, this trick always seemed bad, so just
    create a new inline function that does the calculation in assembly.
    
    Reported-by: subashab@codeaurora.org
    Fixes: 9f0b4807 ("um: rework userspace stubs to not hard-code stub location")
    Fixes: 84b2789d ("um: separate child and parent errors in clone stub")
    Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    Signed-off-by: default avatarRichard Weinberger <richard@nod.at>
    adf9ae0d
stub_segv.c 455 Bytes