lkml.org 
[lkml]   [2010]   [Aug]   [27]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [PATCH -v2] fanotify: drops the packed attribute from userspace event metadata
    From
    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@redhat.com> 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@redhat.com>
    > Cc: Tvrtko Ursulin <tvrtko.ursulin@sophos.com>
    > Cc: Andreas Gruenbacher <agruen@suse.de>
    > Signed-off-by: Eric Paris <eparis@redhat.com>
    > ---
    >  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@vger.kernel.org
    > 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@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2010-08-28 01:55    [from the cache]
    ©2003-2014 Jasper Spaans. hosted at Digital Ocean