• Peter Zijlstra's avatar
    perf_counter: Add forward/backward attribute ABI compatibility · 974802ea
    Peter Zijlstra authored
    Provide for means of extending the perf_counter_attr in a 'natural' way.
    
    We allow growing the structure by appending fields at the end by specifying
    the full structure size inside it.
    
    When a new kernel sees a smaller (old) structure, it will 0 pad the tail.
    When an old kernel sees a larger (new) structure, it will verify the tail
    consists of 0s, otherwise fail.
    
    If we fail due to a size-mismatch, we return -E2BIG and write the kernel's
    native attribe size back into the provided structure.
    
    Furthermore, add some attribute verification, so that we'll fail counter
    creation when unknown bits are present (PERF_SAMPLE, PERF_FORMAT, or in
    the __reserved fields).
    
    (This ABI detail is introduced while keeping the existing syscall ABI.)
    Signed-off-by: default avatarPeter Zijlstra <a.p.zijlstra@chello.nl>
    Cc: Mike Galbraith <efault@gmx.de>
    Cc: Paul Mackerras <paulus@samba.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    LKML-Reference: <new-submission>
    Signed-off-by: default avatarIngo Molnar <mingo@elte.hu>
    974802ea
perf_counter.c 101 KB