.. | .. |
---|
73 | 73 | info->access_addr, current->comm, task_pid_nr(current)); |
---|
74 | 74 | } |
---|
75 | 75 | |
---|
76 | | -static DEFINE_SPINLOCK(report_lock); |
---|
| 76 | +static DEFINE_HARD_SPINLOCK(report_lock); |
---|
77 | 77 | |
---|
78 | 78 | static void start_report(unsigned long *flags) |
---|
79 | 79 | { |
---|
.. | .. |
---|
81 | 81 | * Make sure we don't end up in loop. |
---|
82 | 82 | */ |
---|
83 | 83 | kasan_disable_current(); |
---|
84 | | - spin_lock_irqsave(&report_lock, *flags); |
---|
| 84 | + raw_spin_lock_irqsave(&report_lock, *flags); |
---|
85 | 85 | pr_err("==================================================================\n"); |
---|
86 | 86 | } |
---|
87 | 87 | |
---|
.. | .. |
---|
91 | 91 | trace_error_report_end(ERROR_DETECTOR_KASAN, addr); |
---|
92 | 92 | pr_err("==================================================================\n"); |
---|
93 | 93 | add_taint(TAINT_BAD_PAGE, LOCKDEP_NOW_UNRELIABLE); |
---|
94 | | - spin_unlock_irqrestore(&report_lock, *flags); |
---|
| 94 | + raw_spin_unlock_irqrestore(&report_lock, *flags); |
---|
95 | 95 | if (panic_on_warn && !test_bit(KASAN_BIT_MULTI_SHOT, &kasan_flags)) { |
---|
96 | 96 | /* |
---|
97 | 97 | * This thread may hit another WARN() in the panic path. |
---|