• Marc Gauthier's avatar
    xtensa: copy_thread with CLONE_VM must not copy live parent AR windows · 84ed3053
    Marc Gauthier authored
    When doing a fork (new VM), the new task has a mirror image of the
    parent's stack, so keeps the same live register windows etc.
    However when doing a clone with CLONE_VM, keeping the same VM
    (eg. when creating a new thread), the child starts afresh on a new
    stack -- it cannot share any part of the parent stack.  It
    especially cannot have the same live AR windows as the parent,
    otherwise it will overwrite the parent stack on overflow, likely
    causing corruption.  (and so it did...)
    
    Effectively, the register windows need to be spilled.
    Turns out it's much easier to simply not copy parent register
    windows when CLONE_VM is set.
    Signed-off-by: default avatarMarc Gauthier <marc@tensilica.com>
    Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
    Signed-off-by: default avatarChris Zankel <chris@zankel.net>
    84ed3053
process.c 8.79 KB