On Thu, Sep 19, 2013 at 11:14:53AM +0200, Ingo Molnar wrote: > @@ -442,12 +445,14 @@ struct perf_event_mmap_page { > * ((rem * time_mult) >> time_shift); > */ > __u64 time_zero; > + __u32 size; /* Header size up to this point */ > + __u32 __reserved0; /* 4 byte hole */ > > /* > * Hole for extension of the self monitor capabilities > */ > > - __u64 __reserved[119]; /* align to 1k */ > + __u64 __reserved[118]; /* align to 1k */ > > /* > * Control data for the mmap() data buffer. > diff --git a/kernel/events/core.c b/kernel/events/core.c > index dd236b6..27d339f 100644 > --- a/kernel/events/core.c > +++ b/kernel/events/core.c > @@ -3660,6 +3660,26 @@ static void calc_timer_values(struct perf_event *event, > *running = ctx_time - event->tstamp_running; > } > > +static void perf_event_init_userpage(struct perf_event *event) > +{ > + struct perf_event_mmap_page *userpg; > + struct ring_buffer *rb; > + > + rcu_read_lock(); > + rb = rcu_dereference(event->rb); > + if (!rb) > + goto unlock; > + > + userpg = rb->user_page; > + > + /* Allow new userspace to detect that bit 0 is deprecated */ > + userpg->cap_bit0_is_deprecated = 1; > + userpg->size = offsetof(struct perf_event_mmap_page, size); This is fragile and I'm 100% sure we'll forget to update it. userpg->size = offsetof(struct perf_event_mmap_page, __reserved); Will auto update and mostly do the right thing. Also, how will userspace know there's a valid size field way out there? Shouldn't we bump the version field to indicate so? :-) After all, running on old userspace this field will be 0. > + > +unlock: > + rcu_read_unlock(); > +} -- To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html