From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 87726C433FE for ; Sat, 9 Oct 2021 00:11:19 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5B8786112D for ; Sat, 9 Oct 2021 00:11:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243974AbhJIANM (ORCPT ); Fri, 8 Oct 2021 20:13:12 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39636 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243818AbhJIANJ (ORCPT ); Fri, 8 Oct 2021 20:13:09 -0400 Received: from mail-qv1-xf49.google.com (mail-qv1-xf49.google.com [IPv6:2607:f8b0:4864:20::f49]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D210DC061570 for ; Fri, 8 Oct 2021 17:11:13 -0700 (PDT) Received: by mail-qv1-xf49.google.com with SMTP id p9-20020a05621421e900b003830bb235fbso10085273qvj.14 for ; Fri, 08 Oct 2021 17:11:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=reply-to:date:in-reply-to:message-id:mime-version:references :subject:from:to:cc; bh=Jpbo+B/GhwXgwxD1by7/DXTldt+Mb436guJudBghH8A=; b=C8410r5ajEijJDUgktftizTQ2SFhw825HDX8x4RMiSyJDTLrbUC7tx9Q5aLXxnfm+l msNYG80c9PcM3gKhl5ayhrxTDm/3M4hf2CsQEC3juu0lxJSF0Ue+Rm4r8fMraYSSms/Y fQnnhcjtr/0tpVg3bED+ZM8BxcEi1ABpHyVhOriyWd9gCz6BTZ91pHwVk16b4mrfhhgq hgeK8F3oD17jRUT0OBQyJZ/mg3oJECgTeCUvLAOZ09BvqGNgkvwOdrSr9k4M0H6e2qNQ hsxK11/1GniyFj+JsUSswG4Vxcz1wDQJsfBct0fZaG0Wk+CDfjyspOgs4mZVrFZLJaKy ppJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:reply-to:date:in-reply-to:message-id :mime-version:references:subject:from:to:cc; bh=Jpbo+B/GhwXgwxD1by7/DXTldt+Mb436guJudBghH8A=; b=EIGm3+BUj3EvZXb13jGaMguf9+kod8fJ3o0vhgutclRMr6ZQNLUAdjvH/GiuLV+Xwi I4dJtp9ql8okLkDq5RpiUdhvj6yyLD1ZoawG1uwYkOrxYifb1p2+cGpMrPZqfTZJkmvw lHLXwFixfjC0avCUM2Y63jnl5zN/Cgnsn8U3lNsMLcEr6uT8n+yCBRqputjR7+1z66ea oBAUXL6jDkGpVMOFPrIstn30zgbagqKQmVdYz7qKPot5TFvAQ0WuOWYtaGwpOHwG7pVa HkpvtPDLR/yddK9NhhjVKwL+36ON5XTOYT8uqRKEVdXsF3aJETwhyfNPKGPLDVtzg44j +R8A== X-Gm-Message-State: AOAM5323b47AgZtb3P+ojUXRZ3jBrxFkNh9AH2U6xY4Uo3jLwboWXoJD 3vubfErphACBRab9ErKHeLYTTgSRcO8= X-Google-Smtp-Source: ABdhPJwi03qK1ZV9VOpWwjVXNzCrboIXvkE07AK1H+8yFhag5kzKnREdL38PD0yNe4Pzbm7Qg5F6nGLc5oU= X-Received: from seanjc798194.pdx.corp.google.com ([2620:15c:90:200:e39b:6333:b001:cb]) (user=seanjc job=sendgmr) by 2002:ac8:430e:: with SMTP id z14mr1441247qtm.208.1633738272984; Fri, 08 Oct 2021 17:11:12 -0700 (PDT) Reply-To: Sean Christopherson Date: Fri, 8 Oct 2021 17:11:04 -0700 In-Reply-To: <20211009001107.3936588-1-seanjc@google.com> Message-Id: <20211009001107.3936588-2-seanjc@google.com> Mime-Version: 1.0 References: <20211009001107.3936588-1-seanjc@google.com> X-Mailer: git-send-email 2.33.0.882.g93a45727a2-goog Subject: [PATCH 1/4] x86/irq: Ensure PI wakeup handler is unregistered before module unload From: Sean Christopherson To: Thomas Gleixner , Ingo Molnar , Borislav Petkov , x86@kernel.org, Paolo Bonzini Cc: "H. Peter Anvin" , Sean Christopherson , Vitaly Kuznetsov , Wanpeng Li , Jim Mattson , Joerg Roedel , linux-kernel@vger.kernel.org, kvm@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Add a synchronize_rcu() after setting 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. Fixes: f6b3c72c2366 ("x86/irq: Define a global vector for VT-d Posted-Interrupts") Cc: stable@vger.kernel.org Signed-off-by: Sean Christopherson --- arch/x86/kernel/irq.c | 1 + 1 file changed, 1 insertion(+) diff --git a/arch/x86/kernel/irq.c b/arch/x86/kernel/irq.c index e28f6a5d14f1..20773d315308 100644 --- a/arch/x86/kernel/irq.c +++ b/arch/x86/kernel/irq.c @@ -293,6 +293,7 @@ void kvm_set_posted_intr_wakeup_handler(void (*handler)(void)) kvm_posted_intr_wakeup_handler = handler; else kvm_posted_intr_wakeup_handler = dummy_handler; + synchronize_rcu(); } EXPORT_SYMBOL_GPL(kvm_set_posted_intr_wakeup_handler); -- 2.33.0.882.g93a45727a2-goog