On 25.05.2023 21:54, Stefano Stabellini wrote: > On Thu, 25 May 2023, Jan Beulich wrote: >> On 25.05.2023 01:51, Stefano Stabellini wrote: >>> xen/irq: fix races between send_cleanup_vector and _clear_irq_vector >> >> This title is, I'm afraid, already misleading. No such race can occur >> afaict, as both callers of _clear_irq_vector() acquire the IRQ >> descriptor lock first, and irq_complete_move() (the sole caller of >> send_cleanup_vector()) is only ever invoked as or by an ->ack() >> hook, which in turn is only invoked with, again, the descriptor lock >> held. > > Yes I see that you are right about the locking, and thank you for taking > the time to look into it. > > One last question: could it be that a second interrupt arrives while > ->ack() is being handled? do_IRQ() is running with interrupts disabled?
It is, at least as far as the invocation of ->ack() is concerned. Else the locking scheme would be broken. You may not that around ->handler() invocation we enable interrupts. Jan