• Ralf Baechle's avatar
    MIPS: oprofile: Fix BUG due to smp_processor_id() in preemptible code. · cf5b2d23
    Ralf Baechle authored
    current_cpu_type() is not preemption-safe.
    If CONFIG_PREEMPT is enabled then mipsxx_reg_setup() can be called from preemptible state.
    Added get_cpu()/put_cpu() pair to make it preemption-safe.
    
    This was found while testing oprofile with CONFIG_DEBUG_PREEMPT enable.
    
    /usr/zntestsuite # opcontrol --init
    /usr/zntestsuite # opcontrol --setup --event=L2_CACHE_ACCESSES:500 --event=L2_CACHE_MISSES:500 --no-vmlinux
    /usr/zntestsuite # opcontrol --start
    Using 2.6+ OProfile kernel interface.
    BUG: using smp_processor_id() in preemptible [00000000] code: oprofiled/1362
    caller is mipsxx_reg_setup+0x11c/0x164
    CPU: 0 PID: 1362 Comm: oprofiled Not tainted 3.10.4 #18
    Stack : 00000006 70757465 00000000 00000000 00000000 00000000 80b173f6 00000037
              80b10000 00000000 80b21614 88f5a220 00000000 00000000 00000000 00000000
              00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
              00000000 00000000 00000000 89c49c00 89c49c2c 80721254 807b7927 8012c1d0
              80b10000 80721254 00000000 00000552 88f5a220 80b1335c 807b78e6 89c49ba8
              ...
    Call Trace:
    [<801099a4>] show_stack+0x64/0x7c
    [<80665520>] dump_stack+0x20/0x2c
    [<803a2250>] debug_smp_processor_id+0xe0/0xf0
    [<8052df24>] mipsxx_reg_setup+0x11c/0x164
    [<8052cd70>] op_mips_setup+0x24/0x4c
    [<80529cfc>] oprofile_setup+0x5c/0x12c
    [<8052b9f8>] event_buffer_open+0x78/0xf8
    [<801c3150>] do_dentry_open.isra.15+0x2b8/0x3b0
    [<801c3270>] finish_open+0x28/0x4c
    [<801d49b8>] do_last.isra.41+0x2cc/0xd00
    [<801d54a0>] path_openat+0xb4/0x4c4
    [<801d5c44>] do_filp_open+0x3c/0xac
    [<801c4744>] do_sys_open+0x110/0x1f4
    [<8010f47c>] stack_done+0x20/0x44
    
    Bug reported and original patch by Jerin Jacob <jerinjacobk@gmail.com>.
    Signed-off-by: default avatarRalf Baechle <ralf@linux-mips.org>
    Acked-by: default avatarJerin Jacob <jerinjacobk@gmail.com>
    cf5b2d23
op_model_mipsxx.c 9.96 KB