mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-20 13:41:30 +00:00
percpu: add preemption checks to __this_cpu ops
We define a check function in order to avoid trouble with the include files. Then the higher level __this_cpu macros are modified to invoke the preemption check. [akpm@linux-foundation.org: coding-style fixes] Signed-off-by: Christoph Lameter <cl@linux.com> Acked-by: Ingo Molnar <mingo@kernel.org> Cc: Tejun Heo <tj@kernel.org> Tested-by: Grygorii Strashko <grygorii.strashko@ti.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
293b6a4c87
commit
188a81409f
2 changed files with 43 additions and 14 deletions
|
@ -7,7 +7,8 @@
|
|||
#include <linux/kallsyms.h>
|
||||
#include <linux/sched.h>
|
||||
|
||||
notrace unsigned int debug_smp_processor_id(void)
|
||||
notrace static unsigned int check_preemption_disabled(const char *what1,
|
||||
const char *what2)
|
||||
{
|
||||
int this_cpu = raw_smp_processor_id();
|
||||
|
||||
|
@ -38,9 +39,9 @@ notrace unsigned int debug_smp_processor_id(void)
|
|||
if (!printk_ratelimit())
|
||||
goto out_enable;
|
||||
|
||||
printk(KERN_ERR "BUG: using smp_processor_id() in preemptible [%08x] "
|
||||
"code: %s/%d\n",
|
||||
preempt_count() - 1, current->comm, current->pid);
|
||||
printk(KERN_ERR "BUG: using %s%s() in preemptible [%08x] code: %s/%d\n",
|
||||
what1, what2, preempt_count() - 1, current->comm, current->pid);
|
||||
|
||||
print_symbol("caller is %s\n", (long)__builtin_return_address(0));
|
||||
dump_stack();
|
||||
|
||||
|
@ -50,5 +51,14 @@ out:
|
|||
return this_cpu;
|
||||
}
|
||||
|
||||
notrace unsigned int debug_smp_processor_id(void)
|
||||
{
|
||||
return check_preemption_disabled("smp_processor_id", "");
|
||||
}
|
||||
EXPORT_SYMBOL(debug_smp_processor_id);
|
||||
|
||||
notrace void __this_cpu_preempt_check(const char *op)
|
||||
{
|
||||
check_preemption_disabled("__this_cpu_", op);
|
||||
}
|
||||
EXPORT_SYMBOL(__this_cpu_preempt_check);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue