• Gil Fruchter's avatar
    tracing: Fix for non-continuous cpu ids · 72917235
    Gil Fruchter authored
    Currently exception occures due to access beyond buffer_iter
    range while using index of cpu bigger than num_possible_cpus().
    Below there is an example for such exception when we use
    cpus 0,1,16,17.
    
    In order to fix buffer allocation size for non-continuous cpu ids
    we allocate according to the max cpu id and not according to the
    amount of possible cpus.
    
    Example:
      $ cat /sys/kernel/debug/tracing/per_cpu/cpu1/trace
      Path: /bin/busybox
      CPU: 0 PID: 82 Comm: cat Not tainted 4.0.0 #29
      task: 80734c80 ti: 80012000 task.ti: 80012000
    
      [ECR   ]: 0x00220100 => Invalid Read @ 0x00000000 by insn @ 0x800abafc
      [EFA   ]: 0x00000000
      [BLINK ]: ring_buffer_read_finish+0x24/0x64
      [ERET  ]: rb_check_pages+0x20/0x188
      [STAT32]: 0x00001a00 :
      BTA: 0x800abafc  SP: 0x80013f0c  FP: 0x57719cf8
      LPS: 0x200036b4 LPE: 0x200036b8 LPC: 0x00000000
      r00: 0x8002aca0 r01: 0x00001606 r02: 0x00000000
      r03: 0x00000001 r04: 0x00000000 r05: 0x804b4954
      r06: 0x00030003 r07: 0x8002a260 r08: 0x00000286
      r09: 0x00080002 r10: 0x00001006 r11: 0x807351a4
      r12: 0x00000001
    
      Stack Trace:
        rb_check_pages+0x20/0x188
        ring_buffer_read_finish+0x24/0x64
        tracing_release+0x4e/0x170
        __fput+0x62/0x158
        task_work_run+0xa2/0xd4
        do_notify_resume+0x52/0x7c
        resume_user_mode_begin+0xdc/0xe0
    
    Link: http://lkml.kernel.org/r/1433835155-6894-3-git-send-email-gilf@ezchip.comSigned-off-by: default avatarNoam Camus <noamc@ezchip.com>
    Signed-off-by: default avatarGil Fruchter <gilf@ezchip.com>
    Signed-off-by: default avatarSteven Rostedt <rostedt@goodmis.org>
    72917235
trace.c 170 KB