Re: WARNING and PANIC in irq_matrix_free

From: Dou Liyang
Date: Mon Jun 04 2018 - 07:59:59 EST


Hi Thomas,

At 06/04/2018 07:17 PM, Thomas Gleixner wrote:
On Mon, 4 Jun 2018, Dou Liyang wrote:
Here, why didn't we avoid this cleanup by

diff --git a/arch/x86/kernel/apic/vector.c b/arch/x86/kernel/apic/vector.c
index a75de0792942..0cc59646755f 100644
--- a/arch/x86/kernel/apic/vector.c
+++ b/arch/x86/kernel/apic/vector.c
@@ -821,6 +821,9 @@ static void free_moved_vector(struct apic_chip_data
*apicd)
*/
WARN_ON_ONCE(managed);

+ if (!vector)
+ return;
+
trace_vector_free_moved(apicd->irq, cpu, vector, managed);
irq_matrix_free(vector_matrix, cpu, vector, managed);
per_cpu(vector_irq, cpu)[vector] = VECTOR_UNUSED;

Is there something I didn't consider with? ;-)

Well, that just prevents the warning, but the hlist is already
corrupted. So you'd just cure the symptom ...


I see.

I'm about to send a patch series which addresses that. Just need to finish
writing changelogs.


Thank you for telling me that.

Thanks,
dou