/* * Provide a default dump_stack() function for architectures * which don't implement their own. */ #include #include #include #include #include static void __dump_stack(void) { dump_stack_print_info(KERN_DEFAULT); show_stack(NULL, NULL); } /** * dump_stack - dump the current task information and its stack trace * * Architectures can override this implementation by implementing its own. */ #ifdef CONFIG_SMP static atomic_t dump_lock = ATOMIC_INIT(-1); asmlinkage __visible void dump_stack(void) { unsigned long flags; int was_locked; int old; int cpu; /* * Permit this cpu to perform nested stack dumps while serialising * against other CPUs */ retry: local_irq_save(flags); cpu = smp_processor_id(); old = atomic_cmpxchg(&dump_lock, -1, cpu); if (old == -1) { was_locked = 0; } else if (old == cpu) { was_locked = 1; } else { local_irq_restore(flags); cpu_relax(); goto retry; } __dump_stack(); if (!was_locked) atomic_set(&dump_lock, -1); local_irq_restore(flags); } #else asmlinkage __visible void dump_stack(void) { __dump_stack(); } #endif EXPORT_SYMBOL(dump_stack); net-next plumbingsTobias Klauser
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2017-01-30 13:18:12 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2017-01-30 13:18:12 -0800
commit751321b3dd5040dc5be19bd23f985e80c914621a (patch)
tree967928e24b38dc7fed918f932bb1b243af42bf7f /net/dns_resolver/Kconfig
parent566cf877a1fcb6d6dc0126b076aad062054c2637 (diff)
parent586655d278ba08af7b198b93217746f9a506ee8a (diff)
Merge tag 'rtc-4.10-2' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux
Pull RTC fix from Alexandre Belloni: "A single fix for this cycle. It is worth taking it for 4.10 so that distributions will not have CONFIG_RTC_DRV_JZ4740 switching from m to y in their config. Summary: - Allow jz4740 to build as a module again by using kernel_halt()" * tag 'rtc-4.10-2' of git://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux: rtc: jz4740: make the driver buildable as a module again
Diffstat (limited to 'net/dns_resolver/Kconfig')