diff options
author | Johannes Berg <johannes.berg@intel.com> | 2019-08-23 13:16:23 +0200 |
---|---|---|
committer | Richard Weinberger <richard@nod.at> | 2019-09-15 21:37:11 +0200 |
commit | 0dafcbe128d2af48919619f79332ef219b5e5514 (patch) | |
tree | 2f95274135b2485bb13dea1dcbe6d86c31b206e7 /arch/um/kernel/signal.c | |
parent | 276d75c4aff3ade04f0f78769dd895a78f03edd9 (diff) | |
download | linux-0dafcbe128d2af48919619f79332ef219b5e5514.tar.gz linux-0dafcbe128d2af48919619f79332ef219b5e5514.tar.bz2 linux-0dafcbe128d2af48919619f79332ef219b5e5514.zip |
um: Implement TRACE_IRQFLAGS_SUPPORT
UML enables TRACE_IRQFLAGS_SUPPORT but doesn't actually implement
it. It seems to have been added for lockdep support, but that can't
actually really work well without IRQ flags tracing, as is also
very noisily reported when enabling CONFIG_DEBUG_LOCKDEP.
Implement it now.
Fixes: 711553efa5b8 ("[PATCH] uml: declare in Kconfig our partial LOCKDEP support")
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Richard Weinberger <richard@nod.at>
Diffstat (limited to 'arch/um/kernel/signal.c')
-rw-r--r-- | arch/um/kernel/signal.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/arch/um/kernel/signal.c b/arch/um/kernel/signal.c index 57acbd67d85d..3a8012520e22 100644 --- a/arch/um/kernel/signal.c +++ b/arch/um/kernel/signal.c @@ -6,15 +6,43 @@ #include <linux/module.h> #include <linux/ptrace.h> #include <linux/sched.h> +#include <linux/ftrace.h> #include <asm/siginfo.h> #include <asm/signal.h> #include <asm/unistd.h> #include <frame_kern.h> #include <kern_util.h> +#include <os.h> EXPORT_SYMBOL(block_signals); EXPORT_SYMBOL(unblock_signals); +void block_signals_trace(void) +{ + block_signals(); + if (current_thread_info()) + trace_hardirqs_off(); +} + +void unblock_signals_trace(void) +{ + if (current_thread_info()) + trace_hardirqs_on(); + unblock_signals(); +} + +void um_trace_signals_on(void) +{ + if (current_thread_info()) + trace_hardirqs_on(); +} + +void um_trace_signals_off(void) +{ + if (current_thread_info()) + trace_hardirqs_off(); +} + /* * OK, we're invoking a handler */ |