diff options
author | Eric W. Biederman <ebiederm@xmission.com> | 2011-10-17 13:40:02 -0700 |
---|---|---|
committer | root <root@serles.lst.de> | 2011-10-28 14:58:53 +0200 |
commit | 1448c721e4fa2faf742029a0403b4b787fccb7fa (patch) | |
tree | f79332dccc85550b4c16510840850e11115cfff0 /arch/powerpc | |
parent | a877ee03ac010ded434b77f7831f43cbb1fcc60f (diff) | |
download | linux-stable-1448c721e4fa2faf742029a0403b4b787fccb7fa.tar.gz linux-stable-1448c721e4fa2faf742029a0403b4b787fccb7fa.tar.bz2 linux-stable-1448c721e4fa2faf742029a0403b4b787fccb7fa.zip |
compat: sync compat_stats with statfs.
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@xmission.com>
Signed-off-by: Christoph Hellwig <hch@lst.de>
Diffstat (limited to 'arch/powerpc')
-rw-r--r-- | arch/powerpc/include/asm/compat.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/arch/powerpc/include/asm/compat.h b/arch/powerpc/include/asm/compat.h index 91010e8f8479..88e602f6430d 100644 --- a/arch/powerpc/include/asm/compat.h +++ b/arch/powerpc/include/asm/compat.h @@ -100,7 +100,8 @@ struct compat_statfs { compat_fsid_t f_fsid; int f_namelen; /* SunOS ignores this field. */ int f_frsize; - int f_spare[5]; + int f_flags; + int f_spare[4]; }; #define COMPAT_RLIM_OLD_INFINITY 0x7fffffff |