On Monday 17 October 2011 13:40:02 Eric W. Biederman wrote: > This was found by inspection while tracking a similar > bug in compat_statfs64, that has been fixed in mainline > since decemeber. > > - This fixes a bug where not all of the f_spare fields > were cleared on mips and s390. > - Add the f_flags field to struct compat_statfs > - Copy f_flags to userspace in case someone cares. > - Use __clear_user to copy the f_spare field to userspace > to ensure that all of the elements of f_spare are cleared. > On some architectures f_spare is has 5 ints and on some > architectures f_spare only has 4 ints. Which makes > the previous technique of clearing each int individually > broken. > > I don't expect anyone actually uses the old statfs system > call anymore but if they do let them benefit from having > the compat and the native version working the same. > > Signed-off-by: Eric W. Biederman <ebiederm@xxxxxxxxxxxx> Looks good to me. Acked-by: Arnd Bergmann <arnd@xxxxxxxx> Apparently, this could have been worse on tile, which has #define compat_statfs statfs, so that the old "__put_user(0, &ubuf->f_spare[4]))" was writing beyond the end of struct statfs. Fortunately, this never gets called on tile, which only provides compat_sys_statfs64 to user space, not compat_sys_statfs. Arnd -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html