-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[ARM] 3108/2: old ABI compat: statfs64 and fstatfs64
Patch from Nicolas Pitre struct statfs64 has extra padding with EABI growing its size from 84 to 88. This struct is now __attribute__((packed,aligned(4))) with a small assembly wrapper to force the sz argument to 84 if it is 88 to avoid copying the extra padding over user space memory unexpecting it. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
- Loading branch information
Nicolas Pitre
authored and
Russell King
committed
Jan 14, 2006
1 parent
704bdda
commit 713c481
Showing
3 changed files
with
49 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,42 @@ | ||
#ifndef _ASMARM_STATFS_H | ||
#define _ASMARM_STATFS_H | ||
|
||
#include <asm-generic/statfs.h> | ||
#ifndef __KERNEL_STRICT_NAMES | ||
# include <linux/types.h> | ||
typedef __kernel_fsid_t fsid_t; | ||
#endif | ||
|
||
struct statfs { | ||
__u32 f_type; | ||
__u32 f_bsize; | ||
__u32 f_blocks; | ||
__u32 f_bfree; | ||
__u32 f_bavail; | ||
__u32 f_files; | ||
__u32 f_ffree; | ||
__kernel_fsid_t f_fsid; | ||
__u32 f_namelen; | ||
__u32 f_frsize; | ||
__u32 f_spare[5]; | ||
}; | ||
|
||
/* | ||
* With EABI there is 4 bytes of padding added to this structure. | ||
* Let's pack it so the padding goes away to simplify dual ABI support. | ||
* Note that user space does NOT have to pack this structure. | ||
*/ | ||
struct statfs64 { | ||
__u32 f_type; | ||
__u32 f_bsize; | ||
__u64 f_blocks; | ||
__u64 f_bfree; | ||
__u64 f_bavail; | ||
__u64 f_files; | ||
__u64 f_ffree; | ||
__kernel_fsid_t f_fsid; | ||
__u32 f_namelen; | ||
__u32 f_frsize; | ||
__u32 f_spare[5]; | ||
} __attribute__ ((packed,aligned(4))); | ||
|
||
#endif |