···615615 }616616 }617617618618- if (cpu == SN_HWPERF_ARG_ANY_CPU || cpu == get_cpu()) {619619- /* don't care, or already on correct cpu */618618+ if (cpu == SN_HWPERF_ARG_ANY_CPU) {619619+ /* don't care which cpu */620620 sn_hwperf_call_sal(op_info);621621- }622622- else {621621+ } else if (cpu == get_cpu()) {622622+ /* already on correct cpu */623623+ sn_hwperf_call_sal(op_info);624624+ put_cpu();625625+ } else {626626+ put_cpu();623627 if (use_ipi) {624628 /* use an interprocessor interrupt to call SAL */625629 smp_call_function_single(cpu, sn_hwperf_call_sal,