• J
    MIPS: Drop spurious __unused in struct compat_flock · 6ae1756f
    James Hogan 提交于
    MIPS' struct compat_flock doesn't match the 32-bit struct flock, as it
    has an extra short __unused before pad[4], which combined with alignment
    increases the size to 40 bytes compared with struct flock's 36 bytes.
    
    Since commit 8c6657cb ("Switch flock copyin/copyout primitives to
    copy_{from,to}_user()"), put_compat_flock() writes the full compat_flock
    struct to userland, which results in corruption of the userland word
    after the struct flock when running 32-bit userlands on 64-bit kernels.
    
    This was observed to cause a bus error exception when starting Firefox
    on Debian 8 (Jessie).
    Reported-by: NPeter Mamonov <pmamonov@gmail.com>
    Signed-off-by: NJames Hogan <jhogan@kernel.org>
    Tested-by: NPeter Mamonov <pmamonov@gmail.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Cc: Al Viro <viro@zeniv.linux.org.uk>
    Cc: linux-mips@linux-mips.org
    Cc: <stable@vger.kernel.org> # 4.13+
    Patchwork: https://patchwork.linux-mips.org/patch/18646/
    6ae1756f
compat.h 5.0 KB