• Al Viro's avatar
    [coredump] don't use __kernel_write() on kmap_local_page() · 06bbaa6d
    Al Viro authored
    passing kmap_local_page() result to __kernel_write() is unsafe -
    random ->write_iter() might (and 9p one does) get unhappy when
    passed ITER_KVEC with pointer that came from kmap_local_page().
    
    Fix by providing a variant of __kernel_write() that takes an iov_iter
    from caller (__kernel_write() becomes a trivial wrapper) and adding
    dump_emit_page() that parallels dump_emit(), except that instead of
    __kernel_write() it uses __kernel_write_iter() with ITER_BVEC source.
    
    Fixes: 3159ed57 "fs/coredump: use kmap_local_page()"
    Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
    06bbaa6d
coredump.c 29.4 KB