From nobody Wed Dec 17 15:10:29 2025 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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C87D9C77B78 for ; Wed, 19 Apr 2023 07:43:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232506AbjDSHnG (ORCPT ); Wed, 19 Apr 2023 03:43:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33324 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232502AbjDSHma (ORCPT ); Wed, 19 Apr 2023 03:42:30 -0400 Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4C17DB472 for ; Wed, 19 Apr 2023 00:42:29 -0700 (PDT) Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id CFE891FD8A; Wed, 19 Apr 2023 07:42:27 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.com; s=susede1; t=1681890147; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version: content-transfer-encoding:content-transfer-encoding; bh=UzVUs+NcKfpPnRkrILdkjoJFYTyn1Afn69dgHx+rH9U=; b=SZgPNF5LpNK1fCrO63cyU4bB2QrO7CqxFrHaLjLAfb0sZ8t+HFXn1Ic1ymsnyggIsxfWew 1DSCfmhSS1GRNyaEFdmNtDJ3l1lbb05icTlFCZSYRhsUY2he+ozejj2iYMLFj2+u2bBNCG Ubn/e/TWdAZdLXH1c0fbyNSDLo6RaWw= Received: from alley.suse.cz (unknown [10.100.201.202]) by relay2.suse.de (Postfix) with ESMTP id 3A0ED2C141; Wed, 19 Apr 2023 07:42:27 +0000 (UTC) From: Petr Mladek To: John Ogness , Sergey Senozhatsky , Steven Rostedt Cc: Michal Hocko , linux-mm@kvack.org, linux-kernel@vger.kernel.org, Petr Mladek Subject: [PATCH] printk: Enough to disable preemption in printk deferred context Date: Wed, 19 Apr 2023 09:42:10 +0200 Message-Id: <20230419074210.17646-1-pmladek@suse.com> X-Mailer: git-send-email 2.35.3 MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" The comment above printk_deferred_enter()/exit() definition claims that it can be used only when interrupts are disabled. It was required by the original printk_safe_log_store() implementation. The code provided lockless synchronization between a single writer and a single reader. The interrupt and the normal context shared the same buffer. The commit 93d102f094be ("printk: remove safe buffers") removed these temporary buffers. Instead, the messages are stored directly into the new global lockless buffer which supports multiple parallel writers. As a result, it is safe to interrupt one writer now. The preemption still has to be disabled because the deferred context is CPU specific. Fixes: 93d102f094be ("printk: remove safe buffers") Signed-off-by: Petr Mladek Reviewed-by: John Ogness Reviewed-by: Sergey Senozhatsky --- include/linux/printk.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/linux/printk.h b/include/linux/printk.h index 8ef499ab3c1e..915a321b491e 100644 --- a/include/linux/printk.h +++ b/include/linux/printk.h @@ -161,7 +161,7 @@ extern void __printk_safe_enter(void); extern void __printk_safe_exit(void); /* * The printk_deferred_enter/exit macros are available only as a hack for - * some code paths that need to defer all printk console printing. Interru= pts + * some code paths that need to defer all printk console printing. Preempt= ion * must be disabled for the deferred duration. */ #define printk_deferred_enter __printk_safe_enter --=20 2.35.3