diff options
Diffstat (limited to 'kernel/trace/ring_buffer.c')
-rw-r--r-- | kernel/trace/ring_buffer.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 5040d44fe5a3..922048a0f7ea 100644 --- a/kernel/trace/ring_buffer.c +++ b/kernel/trace/ring_buffer.c | |||
@@ -2679,7 +2679,7 @@ static DEFINE_PER_CPU(unsigned int, current_context); | |||
2679 | 2679 | ||
2680 | static __always_inline int trace_recursive_lock(void) | 2680 | static __always_inline int trace_recursive_lock(void) |
2681 | { | 2681 | { |
2682 | unsigned int val = this_cpu_read(current_context); | 2682 | unsigned int val = __this_cpu_read(current_context); |
2683 | int bit; | 2683 | int bit; |
2684 | 2684 | ||
2685 | if (in_interrupt()) { | 2685 | if (in_interrupt()) { |
@@ -2696,18 +2696,17 @@ static __always_inline int trace_recursive_lock(void) | |||
2696 | return 1; | 2696 | return 1; |
2697 | 2697 | ||
2698 | val |= (1 << bit); | 2698 | val |= (1 << bit); |
2699 | this_cpu_write(current_context, val); | 2699 | __this_cpu_write(current_context, val); |
2700 | 2700 | ||
2701 | return 0; | 2701 | return 0; |
2702 | } | 2702 | } |
2703 | 2703 | ||
2704 | static __always_inline void trace_recursive_unlock(void) | 2704 | static __always_inline void trace_recursive_unlock(void) |
2705 | { | 2705 | { |
2706 | unsigned int val = this_cpu_read(current_context); | 2706 | unsigned int val = __this_cpu_read(current_context); |
2707 | 2707 | ||
2708 | val--; | 2708 | val &= val & (val - 1); |
2709 | val &= this_cpu_read(current_context); | 2709 | __this_cpu_write(current_context, val); |
2710 | this_cpu_write(current_context, val); | ||
2711 | } | 2710 | } |
2712 | 2711 | ||
2713 | #else | 2712 | #else |