| .. | .. |
|---|
| 75 | 75 | cpu, per_cpu(lock_kicker_irq, cpu)); |
|---|
| 76 | 76 | |
|---|
| 77 | 77 | name = kasprintf(GFP_KERNEL, "spinlock%d", cpu); |
|---|
| 78 | + per_cpu(irq_name, cpu) = name; |
|---|
| 78 | 79 | irq = bind_ipi_to_irqhandler(XEN_SPIN_UNLOCK_VECTOR, |
|---|
| 79 | 80 | cpu, |
|---|
| 80 | 81 | dummy_handler, |
|---|
| .. | .. |
|---|
| 85 | 86 | if (irq >= 0) { |
|---|
| 86 | 87 | disable_irq(irq); /* make sure it's never delivered */ |
|---|
| 87 | 88 | per_cpu(lock_kicker_irq, cpu) = irq; |
|---|
| 88 | | - per_cpu(irq_name, cpu) = name; |
|---|
| 89 | 89 | } |
|---|
| 90 | 90 | |
|---|
| 91 | 91 | printk("cpu %d spinlock event irq %d\n", cpu, irq); |
|---|
| .. | .. |
|---|
| 98 | 98 | if (!xen_pvspin) |
|---|
| 99 | 99 | return; |
|---|
| 100 | 100 | |
|---|
| 101 | + kfree(per_cpu(irq_name, cpu)); |
|---|
| 102 | + per_cpu(irq_name, cpu) = NULL; |
|---|
| 101 | 103 | /* |
|---|
| 102 | 104 | * When booting the kernel with 'mitigations=auto,nosmt', the secondary |
|---|
| 103 | 105 | * CPUs are not activated, and lock_kicker_irq is not initialized. |
|---|
| .. | .. |
|---|
| 108 | 110 | |
|---|
| 109 | 111 | unbind_from_irqhandler(irq, NULL); |
|---|
| 110 | 112 | per_cpu(lock_kicker_irq, cpu) = -1; |
|---|
| 111 | | - kfree(per_cpu(irq_name, cpu)); |
|---|
| 112 | | - per_cpu(irq_name, cpu) = NULL; |
|---|
| 113 | 113 | } |
|---|
| 114 | 114 | |
|---|
| 115 | 115 | PV_CALLEE_SAVE_REGS_THUNK(xen_vcpu_stolen); |
|---|