On Mon, Nov 27, 2017 at 11:01:28PM +0100, Peter Zijlstra wrote:
> On Mon, Nov 27, 2017 at 01:50:30PM -0800, Milind Chabbi wrote:
> > The possible checks is infinite
> 
> struct perf_event_attr is very much a finite data type.
> 
> Something as simple as:
> 
>       struct perf_event_attr tmp1 = new_attr, tmp2 = event->attr;
> 
>       tmp1.bp_type = tmp2.bp_type;
>       tmp1.bp_addr = tmp2.bp_addr;
>       tmp1.bp_len  = tmp2.bp_len;
> 
>       if (memcmp(&tmp1, &tmp2, sizeof(tmp1)))
>               return -EINVAL;
> 
> would actually do the checks __modify_user_hw_breakpoint() needs to do.

It could fail with uninitialized padding.


-Andi

Reply via email to