• Paolo 'Blaisorblade' Giarrusso's avatar
    [PATCH] uml: make copy_*_user atomic · 47e5243a
    Paolo 'Blaisorblade' Giarrusso authored
    Make __copy_*_user_inatomic really atomic to avoid "Sleeping function called in
    atomic context" warnings, especially from futex code.
    
    This is made by adding another kmap_atomic slot and making copy_*_user_skas
    use kmap_atomic; also copy_*_user() becomes atomic, but that's true and is not
    a problem for i386 (and we can always add might_sleep there as done
    elsewhere).  For TT mode kmap is not used, so there's no need for this.
    
    I've had to use another slot since both KM_USER0 and KM_USER1 are used
    elsewhere and could cause conflicts.  Till now we reused the kmap_atomic slot
    list from the subarch, but that's not needed as that list must contain the
    common ones (used by generic code) + the ones used in architecture specific
    code (and Uml till now used none); so I've taken the i386 one after comparing
    it with ones from other archs, and added KM_UML_USERCOPY.
    Signed-off-by: default avatarPaolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
    Cc: Jeff Dike <jdike@addtoit.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    47e5243a
uaccess.c 5.69 KB