diff options
Diffstat (limited to 'kernel/trace/ring_buffer.c')
| -rw-r--r-- | kernel/trace/ring_buffer.c | 10 |
1 files changed, 3 insertions, 7 deletions
diff --git a/kernel/trace/ring_buffer.c b/kernel/trace/ring_buffer.c index 5040d44fe5a3..0315d43176d8 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,14 @@ 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 | __this_cpu_and(current_context, __this_cpu_read(current_context) - 1); |
| 2707 | |||
| 2708 | val--; | ||
| 2709 | val &= this_cpu_read(current_context); | ||
| 2710 | this_cpu_write(current_context, val); | ||
| 2711 | } | 2707 | } |
| 2712 | 2708 | ||
| 2713 | #else | 2709 | #else |
