Re: [PATCH -v2] fanotify: drops the packed attribute from userspaceevent metadata
From: Eric Paris
Date: Fri Aug 27 2010 - 19:51:58 EST
I liked this version until I realized that userspace doesn't have
aligned_u64 as a valid type.
I'm feeling more like my old version of the patch. Anyone have
thoughts or comments?
-Eric
On Tue, Aug 24, 2010 at 4:43 PM, Eric Paris <eparis@xxxxxxxxxx> wrote:
> The userspace event metadata structure was packed so when sent from a kernel
> with a certain set of alignment rules to a userspace listener with a different
> set of alignment rules the userspace process would be able to use the
> structure. On some arches just using packed, even if it doesn't do anything
> to the alignment can cause a severe performance hit. From now on we are
> not going to set the packed attribute and will just need to be very careful
> to make sure the structure is naturally aligned.
>
> Cc: Andreas Schwab <schwab@xxxxxxxxxx>
> Cc: Tvrtko Ursulin <tvrtko.ursulin@xxxxxxxxxx>
> Cc: Andreas Gruenbacher <agruen@xxxxxxx>
> Signed-off-by: Eric Paris <eparis@xxxxxxxxxx>
> ---
> include/linux/fanotify.h | 13 ++++++++-----
> 1 files changed, 8 insertions(+), 5 deletions(-)
>
> diff --git a/include/linux/fanotify.h b/include/linux/fanotify.h
> index 0535461..b892e46 100644
> --- a/include/linux/fanotify.h
> +++ b/include/linux/fanotify.h
> @@ -65,20 +65,23 @@
> FAN_ALL_PERM_EVENTS |\
> FAN_Q_OVERFLOW)
>
> -#define FANOTIFY_METADATA_VERSION 1
> -
> +#define FANOTIFY_METADATA_VERSION 2
> +/*
> + * These structures must be naturally aligned so that a 32 bit userspace process
> + * will find the offsets the same as a 64bit process.
> + */
> struct fanotify_event_metadata {
> __u32 event_len;
> __u32 vers;
> - __u64 mask;
> + aligned_u64 mask;
> __s32 fd;
> __s32 pid;
> -} __attribute__ ((packed));
> +};
>
> struct fanotify_response {
> __s32 fd;
> __u32 response;
> -} __attribute__ ((packed));
> +};
>
> /* Legit userspace responses to a _PERM event */
> #define FAN_ALLOW 0x01
> --
> 1.7.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at http://www.tux.org/lkml/
>
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/