From nobody Mon Dec 1 22:06:14 2025 Received: from mail-ot1-f49.google.com (mail-ot1-f49.google.com [209.85.210.49]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9BB61288537 for ; Thu, 27 Nov 2025 14:52:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764255123; cv=none; b=nASWb2jYFuLgkKmtO/BMxuhyQzaSIcxok0rArZIb6nFNAMmugqyEOpOROv7a/38SYxaPXivqSraNyFlTFoOArm0e6N3Bx3hZeZc4ZG3Z7yXUZADI1cadffb734LBQPDl8rErlHPf908/YVwQuP3frGTf0FRTKx+i+BMkdkMW3rs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1764255123; c=relaxed/simple; bh=La8G30hl9qem1PV0MHxUCDzheJkZdQA86wiUtuO0D5s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:To:Cc; b=jptORcy9oZar3KU10az2HvDVxAQf4uSYKKPlGzPuqKON7A6GsClllFMQ3lxxpaMBH8S1ZZZ8KV/RY/QKeBMjncCF2015qn4R2Ln1CV8nB4JDGOjUgsxz2lUyDLYFo9kSBMHYHtHbVZQXIqUchJ5fVL1++Fvjpx/pIilXo2nqS5o= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org; spf=pass smtp.mailfrom=gmail.com; arc=none smtp.client-ip=209.85.210.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=debian.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-ot1-f49.google.com with SMTP id 46e09a7af769-7c7503c73b4so543604a34.3 for ; Thu, 27 Nov 2025 06:52:01 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1764255120; x=1764859920; h=cc:to:message-id:content-transfer-encoding:mime-version:subject :date:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=cAIzZlwt931JkoUZjg2FOr5ixA966v/JOvVIg0npcNI=; b=XGm69k7/TCykW0VAS4wzyfLU7cl92NjT04IkM6ca58Q1MSDUTSGw22QEfyUWjJmCHs VBY2rjzzzhIGF/wDdV0/PSW/hvr9S75chJG0hDuOb6ecyb4XxrGJnO8KimhjHkknnUTh Pn8TuzQrEc1DGfBzerY4s6FiyFVhbYmHVdJ8RvHaT6bgNZRxqm8n46lj/CGXPbyI1RpJ yk2J3K0PZDw3hIU33XnoujSooOAh4ZbmEVV7SxFZHF2zSasZeG1bpJsXqEgF5+OnKepk DMUGwmiEH8KapijzGeTWRthxs6D2AznXLJmpY1BZ+aereFGb/Mxl2VCY0U/UCD+ASUCM 2qFw== X-Forwarded-Encrypted: i=1; AJvYcCV1pdpAKopML4ywCJ87kSZhgOD/jdhzVax8SK3AVa+4o7WGF4q8jnF/JtsEBPM4keuqH5JQxNEXKB8FvSw=@vger.kernel.org X-Gm-Message-State: AOJu0YxJpP9w1CUcx0AOUsLoPpEDsxHtJK+DUSRKoMYW94nff9LNvjfB UyoGNxkzxrKW9XZ32xdNE16mH3EzHSmRVKdZOwcZIWn2sTN/gQcNPSPI06ZC2w== X-Gm-Gg: ASbGncsayf6ZgD4SLghbSGvs2+1hJKHo6VecBHOhHWLd8nEB/JuCwnQImhh26LcndQE VIwxkk1XLjHZzMpei9hmMf4utHk7fP8RxRLmHkWjBZwSM4H1CgSLJc3jLnDlvTt31KHRfDp83my BOtJ4yTyOmO2/eGRyXx6Y/WtGGNueX+/sQX1ZKD0phSkuKmD1iqhfMIsjAE13vmxevLkx2oXHs9 w6Tl41b25rqUyCFZuvZJTSTW/FEMXoW51Ovqn5JDuN/NTmkTkk+s4YhoKNXSov+iAcGedtJsLzR dnyalLRcaJ12kU7YvauQn+Tq000EpnLCw5PNDsnivSl7wy2Wy6fu6Fnc/df+Va1RNteUPX7Czwf i2uL4AUhtFYp1naazk4BMxbKkxS0Sm5nqbNdAleUI4DsB3Dy+8dqfOwzkzBEQgvB3+RmNE3XyYi qbibWAq2D68T6J1Q== X-Google-Smtp-Source: AGHT+IGjXOzX1/INjAxLcMiQb6vVvjsDvCY0JqSDikDDbIziJmMNiu2ppTrz8kRjx6Znh9+6s5DyAA== X-Received: by 2002:a05:6808:21a4:b0:450:f45e:f4a9 with SMTP id 5614622812f47-45115a2eb3amr8969148b6e.19.1764255120607; Thu, 27 Nov 2025 06:52:00 -0800 (PST) Received: from localhost ([2a03:2880:10ff:5b::]) by smtp.gmail.com with ESMTPSA id 5614622812f47-4531708e744sm431286b6e.11.2025.11.27.06.51.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Nov 2025 06:51:59 -0800 (PST) From: Breno Leitao Date: Thu, 27 Nov 2025 06:51:54 -0800 Subject: [PATCH v2] mm/kfence: add reboot notifier to disable KFENCE on shutdown Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20251127-kfence-v2-1-daeccb5ef9aa@debian.org> X-B4-Tracking: v=1; b=H4sIAIplKGkC/2XMsQ6CMBAA0F+53EyNVwRsJ//DMJT2gItJMa1pN KT/bmR1fcPbMXMSzmhhx8RFsmwRLegG0K8uLqwkoAXUZ90R6V49Zo6e1UV7085mas1gsAF8Jp7 lfUT3sQFcJb+29DneQj/9KwopUp3rmcLg+yv5W+BJXDxtacGx1voFZj9m850AAAA= X-Change-ID: 20251126-kfence-42c93f9b3979 To: Alexander Potapenko , Marco Elver , Dmitry Vyukov , Andrew Morton Cc: kasan-dev@googlegroups.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org, kernel-team@meta.com, stable@vger.kernel.org, Breno Leitao X-Mailer: b4 0.15-dev-a6db3 X-Developer-Signature: v=1; a=openpgp-sha256; l=3057; i=leitao@debian.org; h=from:subject:message-id; bh=La8G30hl9qem1PV0MHxUCDzheJkZdQA86wiUtuO0D5s=; b=owEBbQKS/ZANAwAIATWjk5/8eHdtAcsmYgBpKGWPOQkKx1HnYBIusPuWFSi1zEKgAagB3QQqt OCZwoLBZX6JAjMEAAEIAB0WIQSshTmm6PRnAspKQ5s1o5Of/Hh3bQUCaShljwAKCRA1o5Of/Hh3 bb5qD/sFLPYK6ITq6kgbAyxqkbZNfmJ60A+CPwbjNtm8XT727QN5Zu9W3ONIdtd4AasadA+qGOM qjDQscvF6Jqm8M5++IbkBuAb/dOGZ9TEiD5WtK8qwFeWFDdItO6H+pvFxUHj/hki3zstK70/9BA dB1ILdAJBqtzW0SM8zJ+mNN5uQCAIbh8QNamqioC6twnkJ7WoK9u39f9FfyC+ZCIQ2HL/mFGwtC EmKnY6+9hYwruwBF++2d44yCoaHTRjRnMHrFhsrJbhR2sYnhN3yC7M0G5OqwYhjserxdcmYVAxB oEm48SGyNmeK2r+9vcJOpSzh7yF3Yv+YMh70dZbY58he1kXuACNklOMwe+apkA1k3BT5nkRIu8l 275PckhkwGZhlXVZkwqQ77hNYV6oJrkeh/CHHA8gfRbPysFcnlIn0z2E+cl2S58D6rEttEMJH7A QjPJT2prC0+KKql8M3EGoqhZ6l4zJlIbFhZLft1V1MypIsLIbgTzfd0pcdyEEDyTA3VvJO1Y9Ra UAjKln6TFsArkYDcZimLTeTVRxOAkvlgvhZDs49MGFtvyYCzBp53BCLXv+mV4+GnMfD3rqcF09+ ktyKFkRGNqJEb/J+y2SaGlte+it0n37XphkvXKIjM7GYEQey9yI6ZWLGQtzULDou7EIeLx3l85Y Cbq0Nap2eYSJfPA== X-Developer-Key: i=leitao@debian.org; a=openpgp; fpr=AC8539A6E8F46702CA4A439B35A3939FFC78776D During system shutdown, KFENCE can cause IPI synchronization issues if it remains active through the reboot process. To prevent this, register a reboot notifier that disables KFENCE and cancels any pending timer work early in the shutdown sequence. This is only necessary when CONFIG_KFENCE_STATIC_KEYS is enabled, as this configuration sends IPIs that can interfere with shutdown. Without static keys, no IPIs are generated and KFENCE can safely remain active. The notifier uses maximum priority (INT_MAX) to ensure KFENCE shuts down before other subsystems that might still depend on stable memory allocation behavior. This fixes a late kexec CSD lockup[1] when kfence is trying to IPI a CPU that is busy in a IRQ-disabled context printing characters to the console. Link: https://lore.kernel.org/all/sqwajvt7utnt463tzxgwu2yctyn5m6bjwrslsnupf= exeml6hkd@v6sqmpbu3vvu/ [1] Cc: stable@vger.kernel.org Signed-off-by: Breno Leitao Reviewed-by: Marco Elver Fixes: 0ce20dd84089 ("mm: add Kernel Electric-Fence infrastructure") --- Changes in v2: - Adding Fixes: tag and CCing stable (akpm) - Link to v1: https://patch.msgid.link/20251126-kfence-v1-1-5a6e1d7c681c@de= bian.org --- mm/kfence/core.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/mm/kfence/core.c b/mm/kfence/core.c index 727c20c94ac5..162a026871ab 100644 --- a/mm/kfence/core.c +++ b/mm/kfence/core.c @@ -26,6 +26,7 @@ #include #include #include +#include #include #include #include @@ -820,6 +821,25 @@ static struct notifier_block kfence_check_canary_notif= ier =3D { static struct delayed_work kfence_timer; =20 #ifdef CONFIG_KFENCE_STATIC_KEYS +static int kfence_reboot_callback(struct notifier_block *nb, + unsigned long action, void *data) +{ + /* + * Disable kfence to avoid static keys IPI synchronization during + * late shutdown/kexec + */ + WRITE_ONCE(kfence_enabled, false); + /* Cancel any pending timer work */ + cancel_delayed_work_sync(&kfence_timer); + + return NOTIFY_OK; +} + +static struct notifier_block kfence_reboot_notifier =3D { + .notifier_call =3D kfence_reboot_callback, + .priority =3D INT_MAX, /* Run early to stop timers ASAP */ +}; + /* Wait queue to wake up allocation-gate timer task. */ static DECLARE_WAIT_QUEUE_HEAD(allocation_wait); =20 @@ -901,6 +921,10 @@ static void kfence_init_enable(void) if (kfence_check_on_panic) atomic_notifier_chain_register(&panic_notifier_list, &kfence_check_canar= y_notifier); =20 +#ifdef CONFIG_KFENCE_STATIC_KEYS + register_reboot_notifier(&kfence_reboot_notifier); +#endif + WRITE_ONCE(kfence_enabled, true); queue_delayed_work(system_unbound_wq, &kfence_timer, 0); =20 --- base-commit: ab084f0b8d6d2ee4b1c6a28f39a2a7430bdfa7f0 change-id: 20251126-kfence-42c93f9b3979 Best regards, -- =20 Breno Leitao