Commit 3ce0f237 authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Palmer Dabbelt

compat: consolidate the compat_flock{,64} definition

Provide a single common definition for the compat_flock and
compat_flock64 structures using the same tricks as for the native
variants.  Another extra define is added for the packing required on
x86.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarGuo Ren <guoren@kernel.org>
Reviewed-by: default avatarArnd Bergmann <arnd@arndb.de>
Tested-by: default avatarHeiko Stuebner <heiko@sntech.de>
Acked-by: Helge Deller <deller@gmx.de>  # parisc
Link: https://lore.kernel.org/r/20220405071314.3225832-4-guoren@kernel.orgSigned-off-by: default avatarPalmer Dabbelt <palmer@rivosinc.com>
parent 306f7cc1
...@@ -65,22 +65,6 @@ struct compat_stat { ...@@ -65,22 +65,6 @@ struct compat_stat {
compat_ulong_t __unused4[2]; compat_ulong_t __unused4[2];
}; };
struct compat_flock {
short l_type;
short l_whence;
compat_off_t l_start;
compat_off_t l_len;
compat_pid_t l_pid;
};
struct compat_flock64 {
short l_type;
short l_whence;
compat_loff_t l_start;
compat_loff_t l_len;
compat_pid_t l_pid;
};
struct compat_statfs { struct compat_statfs {
int f_type; int f_type;
int f_bsize; int f_bsize;
......
...@@ -55,23 +55,8 @@ struct compat_stat { ...@@ -55,23 +55,8 @@ struct compat_stat {
s32 st_pad4[14]; s32 st_pad4[14];
}; };
struct compat_flock { #define __ARCH_COMPAT_FLOCK_EXTRA_SYSID s32 l_sysid;
short l_type; #define __ARCH_COMPAT_FLOCK_PAD s32 pad[4];
short l_whence;
compat_off_t l_start;
compat_off_t l_len;
s32 l_sysid;
compat_pid_t l_pid;
s32 pad[4];
};
struct compat_flock64 {
short l_type;
short l_whence;
compat_loff_t l_start;
compat_loff_t l_len;
compat_pid_t l_pid;
};
struct compat_statfs { struct compat_statfs {
int f_type; int f_type;
......
...@@ -53,22 +53,6 @@ struct compat_stat { ...@@ -53,22 +53,6 @@ struct compat_stat {
u32 st_spare4[3]; u32 st_spare4[3];
}; };
struct compat_flock {
short l_type;
short l_whence;
compat_off_t l_start;
compat_off_t l_len;
compat_pid_t l_pid;
};
struct compat_flock64 {
short l_type;
short l_whence;
compat_loff_t l_start;
compat_loff_t l_len;
compat_pid_t l_pid;
};
struct compat_statfs { struct compat_statfs {
s32 f_type; s32 f_type;
s32 f_bsize; s32 f_bsize;
......
...@@ -44,22 +44,6 @@ struct compat_stat { ...@@ -44,22 +44,6 @@ struct compat_stat {
u32 __unused4[2]; u32 __unused4[2];
}; };
struct compat_flock {
short l_type;
short l_whence;
compat_off_t l_start;
compat_off_t l_len;
compat_pid_t l_pid;
};
struct compat_flock64 {
short l_type;
short l_whence;
compat_loff_t l_start;
compat_loff_t l_len;
compat_pid_t l_pid;
};
struct compat_statfs { struct compat_statfs {
int f_type; int f_type;
int f_bsize; int f_bsize;
......
...@@ -102,22 +102,6 @@ struct compat_stat { ...@@ -102,22 +102,6 @@ struct compat_stat {
u32 __unused5; u32 __unused5;
}; };
struct compat_flock {
short l_type;
short l_whence;
compat_off_t l_start;
compat_off_t l_len;
compat_pid_t l_pid;
};
struct compat_flock64 {
short l_type;
short l_whence;
compat_loff_t l_start;
compat_loff_t l_len;
compat_pid_t l_pid;
};
struct compat_statfs { struct compat_statfs {
u32 f_type; u32 f_type;
u32 f_bsize; u32 f_bsize;
......
...@@ -75,23 +75,7 @@ struct compat_stat64 { ...@@ -75,23 +75,7 @@ struct compat_stat64 {
unsigned int __unused5; unsigned int __unused5;
}; };
struct compat_flock { #define __ARCH_COMPAT_FLOCK_PAD short __unused;
short l_type;
short l_whence;
compat_off_t l_start;
compat_off_t l_len;
compat_pid_t l_pid;
short __unused;
};
struct compat_flock64 {
short l_type;
short l_whence;
compat_loff_t l_start;
compat_loff_t l_len;
compat_pid_t l_pid;
short __unused;
};
struct compat_statfs { struct compat_statfs {
int f_type; int f_type;
......
...@@ -50,25 +50,11 @@ struct compat_stat { ...@@ -50,25 +50,11 @@ struct compat_stat {
u32 __unused5; u32 __unused5;
}; };
struct compat_flock {
short l_type;
short l_whence;
compat_off_t l_start;
compat_off_t l_len;
compat_pid_t l_pid;
};
/* /*
* IA32 uses 4 byte alignment for 64 bit quantities, * IA32 uses 4 byte alignment for 64 bit quantities, so we need to pack the
* so we need to pack this structure. * compat flock64 structure.
*/ */
struct compat_flock64 { #define __ARCH_NEED_COMPAT_FLOCK64_PACKED
short l_type;
short l_whence;
compat_loff_t l_start;
compat_loff_t l_len;
compat_pid_t l_pid;
} __attribute__((packed));
struct compat_statfs { struct compat_statfs {
int f_type; int f_type;
......
...@@ -258,6 +258,37 @@ struct compat_rlimit { ...@@ -258,6 +258,37 @@ struct compat_rlimit {
compat_ulong_t rlim_max; compat_ulong_t rlim_max;
}; };
#ifdef __ARCH_NEED_COMPAT_FLOCK64_PACKED
#define __ARCH_COMPAT_FLOCK64_PACK __attribute__((packed))
#else
#define __ARCH_COMPAT_FLOCK64_PACK
#endif
struct compat_flock {
short l_type;
short l_whence;
compat_off_t l_start;
compat_off_t l_len;
#ifdef __ARCH_COMPAT_FLOCK_EXTRA_SYSID
__ARCH_COMPAT_FLOCK_EXTRA_SYSID
#endif
compat_pid_t l_pid;
#ifdef __ARCH_COMPAT_FLOCK_PAD
__ARCH_COMPAT_FLOCK_PAD
#endif
};
struct compat_flock64 {
short l_type;
short l_whence;
compat_loff_t l_start;
compat_loff_t l_len;
compat_pid_t l_pid;
#ifdef __ARCH_COMPAT_FLOCK64_PAD
__ARCH_COMPAT_FLOCK64_PAD
#endif
} __ARCH_COMPAT_FLOCK64_PACK;
struct compat_rusage { struct compat_rusage {
struct old_timeval32 ru_utime; struct old_timeval32 ru_utime;
struct old_timeval32 ru_stime; struct old_timeval32 ru_stime;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment