Skip to content
  • Alexander Graf's avatar
    linux-user: Unlock mmap_lock when resuming guest from page_unprotect · d02532f0
    Alexander Graf authored
    
    
    The page_unprotect() function is running everything locked. Before every
    potential exit path of the function mmap_unlock() gets called to make sure
    we don't leak the lock.
    
    However, the function calls tb_invalidate_phys_page() which again can
    exit a signal through longjmp, leaving our mmap_unlock() attempts in vain.
    
    Add a hint to tb_invalidate_phys_page() that we need to unlock before we
    can leave back into guest context, so that we don't leak the lock.
    
    This fixes 16-bit i386 wine programs running in linux-user for me.
    
    Signed-off-by: default avatarAlexander Graf <agraf@suse.de>
    Signed-off-by: default avatarRiku Voipio <riku.voipio@linaro.org>
    d02532f0