Re: [PATCH] compat: sync compat_stats with statfs.
From: Arnd Bergmann <arnd@arndb.de>
Date: 2011-10-19 22:28:42
Also in:
linux-fsdevel
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 <redacted>
Looks good to me. Acked-by: Arnd Bergmann <arnd@arndb.de> 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