• Sean Christopherson's avatar
    x86/irq: Ensure PI wakeup handler is unregistered before module unload · 6ff53f6a
    Sean Christopherson authored
    Add a synchronize_rcu() after clearing the posted interrupt wakeup handler
    to ensure all readers, i.e. in-flight IRQ handlers, see the new handler
    before returning to the caller.  If the caller is an exiting module and
    is unregistering its handler, failure to wait could result in the IRQ
    handler jumping into an unloaded module.
    
    The registration path doesn't require synchronization, as it's the
    caller's responsibility to not generate interrupts it cares about until
    after its handler is registered.
    
    Fixes: f6b3c72c ("x86/irq: Define a global vector for VT-d Posted-Interrupts")
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20211009001107.3936588-2-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    6ff53f6a
irq.c 11 KB