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