lkml.org 
[lkml]   [2022]   [Jan]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5/5] compat: consolidate the compat_flock{,64} definition
    Date
    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: Christoph Hellwig <hch@lst.de>
    ---
    arch/arm64/include/asm/compat.h | 16 ----------------
    arch/mips/include/asm/compat.h | 19 ++-----------------
    arch/parisc/include/asm/compat.h | 16 ----------------
    arch/powerpc/include/asm/compat.h | 16 ----------------
    arch/s390/include/asm/compat.h | 16 ----------------
    arch/sparc/include/asm/compat.h | 18 +-----------------
    arch/x86/include/asm/compat.h | 20 +++-----------------
    include/linux/compat.h | 31 +++++++++++++++++++++++++++++++
    8 files changed, 37 insertions(+), 115 deletions(-)

    diff --git a/arch/arm64/include/asm/compat.h b/arch/arm64/include/asm/compat.h
    index 2763287654081..e0faec1984a1c 100644
    --- a/arch/arm64/include/asm/compat.h
    +++ b/arch/arm64/include/asm/compat.h
    @@ -65,22 +65,6 @@ struct compat_stat {
    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 {
    int f_type;
    int f_bsize;
    diff --git a/arch/mips/include/asm/compat.h b/arch/mips/include/asm/compat.h
    index 6a350c1f70d7e..6d6e5a451f4d9 100644
    --- a/arch/mips/include/asm/compat.h
    +++ b/arch/mips/include/asm/compat.h
    @@ -55,23 +55,8 @@ struct compat_stat {
    s32 st_pad4[14];
    };

    -struct compat_flock {
    - short l_type;
    - 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;
    -};
    +#define __ARCH_COMPAT_FLOCK_EXTRA_SYSID s32 l_sysid;
    +#define __ARCH_COMPAT_FLOCK_PAD s32 pad[4];

    struct compat_statfs {
    int f_type;
    diff --git a/arch/parisc/include/asm/compat.h b/arch/parisc/include/asm/compat.h
    index c04f5a637c390..a1e4534d80509 100644
    --- a/arch/parisc/include/asm/compat.h
    +++ b/arch/parisc/include/asm/compat.h
    @@ -53,22 +53,6 @@ struct compat_stat {
    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 {
    s32 f_type;
    s32 f_bsize;
    diff --git a/arch/powerpc/include/asm/compat.h b/arch/powerpc/include/asm/compat.h
    index 83d8f70779cbc..5ef3c7c83c343 100644
    --- a/arch/powerpc/include/asm/compat.h
    +++ b/arch/powerpc/include/asm/compat.h
    @@ -44,22 +44,6 @@ struct compat_stat {
    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 {
    int f_type;
    int f_bsize;
    diff --git a/arch/s390/include/asm/compat.h b/arch/s390/include/asm/compat.h
    index 0f14b3188b1bb..07f04d37068b6 100644
    --- a/arch/s390/include/asm/compat.h
    +++ b/arch/s390/include/asm/compat.h
    @@ -102,22 +102,6 @@ struct compat_stat {
    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 {
    u32 f_type;
    u32 f_bsize;
    diff --git a/arch/sparc/include/asm/compat.h b/arch/sparc/include/asm/compat.h
    index 108078751bb5a..d78fb44942e0f 100644
    --- a/arch/sparc/include/asm/compat.h
    +++ b/arch/sparc/include/asm/compat.h
    @@ -75,23 +75,7 @@ struct compat_stat64 {
    unsigned int __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;
    - 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;
    -};
    +#define __ARCH_COMPAT_FLOCK_PAD short __unused;

    struct compat_statfs {
    int f_type;
    diff --git a/arch/x86/include/asm/compat.h b/arch/x86/include/asm/compat.h
    index 8d19a212f4f26..de794d8958663 100644
    --- a/arch/x86/include/asm/compat.h
    +++ b/arch/x86/include/asm/compat.h
    @@ -50,25 +50,11 @@ struct compat_stat {
    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,
    - * so we need to pack this structure.
    + * IA32 uses 4 byte alignment for 64 bit quantities, so we need to pack the
    + * compat flock64 structure.
    */
    -struct compat_flock64 {
    - short l_type;
    - short l_whence;
    - compat_loff_t l_start;
    - compat_loff_t l_len;
    - compat_pid_t l_pid;
    -} __attribute__((packed));
    +#define __ARCH_NEED_COMPAT_FLOCK64_PACKED

    struct compat_statfs {
    int f_type;
    diff --git a/include/linux/compat.h b/include/linux/compat.h
    index 1c758b0e03598..a0481fe6c5d51 100644
    --- a/include/linux/compat.h
    +++ b/include/linux/compat.h
    @@ -258,6 +258,37 @@ struct compat_rlimit {
    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 old_timeval32 ru_utime;
    struct old_timeval32 ru_stime;
    --
    2.30.2
    \
     
     \ /
      Last update: 2022-01-31 07:51    [W:2.452 / U:0.708 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site