diff options
| -rw-r--r-- | include/linux/tracepoint.h | 8 | ||||
| -rw-r--r-- | kernel/printk/printk_safe.c | 4 |
2 files changed, 8 insertions, 4 deletions
diff --git a/include/linux/tracepoint.h b/include/linux/tracepoint.h index 7f2e16e76ac4..041f7e56a289 100644 --- a/include/linux/tracepoint.h +++ b/include/linux/tracepoint.h | |||
| @@ -158,8 +158,10 @@ extern void syscall_unregfunc(void); | |||
| 158 | * For rcuidle callers, use srcu since sched-rcu \ | 158 | * For rcuidle callers, use srcu since sched-rcu \ |
| 159 | * doesn't work from the idle path. \ | 159 | * doesn't work from the idle path. \ |
| 160 | */ \ | 160 | */ \ |
| 161 | if (rcuidle) \ | 161 | if (rcuidle) { \ |
| 162 | idx = srcu_read_lock_notrace(&tracepoint_srcu); \ | 162 | idx = srcu_read_lock_notrace(&tracepoint_srcu); \ |
| 163 | rcu_irq_enter_irqson(); \ | ||
| 164 | } \ | ||
| 163 | \ | 165 | \ |
| 164 | it_func_ptr = rcu_dereference_raw((tp)->funcs); \ | 166 | it_func_ptr = rcu_dereference_raw((tp)->funcs); \ |
| 165 | \ | 167 | \ |
| @@ -171,8 +173,10 @@ extern void syscall_unregfunc(void); | |||
| 171 | } while ((++it_func_ptr)->func); \ | 173 | } while ((++it_func_ptr)->func); \ |
| 172 | } \ | 174 | } \ |
| 173 | \ | 175 | \ |
| 174 | if (rcuidle) \ | 176 | if (rcuidle) { \ |
| 177 | rcu_irq_exit_irqson(); \ | ||
| 175 | srcu_read_unlock_notrace(&tracepoint_srcu, idx);\ | 178 | srcu_read_unlock_notrace(&tracepoint_srcu, idx);\ |
| 179 | } \ | ||
| 176 | \ | 180 | \ |
| 177 | preempt_enable_notrace(); \ | 181 | preempt_enable_notrace(); \ |
| 178 | } while (0) | 182 | } while (0) |
diff --git a/kernel/printk/printk_safe.c b/kernel/printk/printk_safe.c index a0a74c533e4b..0913b4d385de 100644 --- a/kernel/printk/printk_safe.c +++ b/kernel/printk/printk_safe.c | |||
| @@ -306,12 +306,12 @@ static __printf(1, 0) int vprintk_nmi(const char *fmt, va_list args) | |||
| 306 | return printk_safe_log_store(s, fmt, args); | 306 | return printk_safe_log_store(s, fmt, args); |
| 307 | } | 307 | } |
| 308 | 308 | ||
| 309 | void printk_nmi_enter(void) | 309 | void notrace printk_nmi_enter(void) |
| 310 | { | 310 | { |
| 311 | this_cpu_or(printk_context, PRINTK_NMI_CONTEXT_MASK); | 311 | this_cpu_or(printk_context, PRINTK_NMI_CONTEXT_MASK); |
| 312 | } | 312 | } |
| 313 | 313 | ||
| 314 | void printk_nmi_exit(void) | 314 | void notrace printk_nmi_exit(void) |
| 315 | { | 315 | { |
| 316 | this_cpu_and(printk_context, ~PRINTK_NMI_CONTEXT_MASK); | 316 | this_cpu_and(printk_context, ~PRINTK_NMI_CONTEXT_MASK); |
| 317 | } | 317 | } |
