| .. | .. |
|---|
| 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. |
|---|