[{"id":3677172,"web_url":"http://patchwork.ozlabs.org/comment/3677172/","msgid":"<7aie7k2ttzq2fd537qyry5hft4ryf65cmibpkzv6avfvn6umwg@tnrbijcw3hql>","list_archive_url":null,"date":"2026-04-14T12:46:17","subject":"Re: [PATCH] jbd2: validate transaction state before dropping from\n journal","submitter":{"id":363,"url":"http://patchwork.ozlabs.org/api/people/363/","name":"Jan Kara","email":"jack@suse.cz"},"content":"On Mon 13-04-26 11:08:24, Milos Nikic wrote:\n> Currently, __jbd2_journal_drop_transaction() unlinks the transaction\n> from the journal's checkpoint lists and only then proceeds to validate the\n> transaction's internal state using a series of J_ASSERTs.\n> \n> There is no need to 'mutate before validate'. If we are going to halt the\n> system that makes manipulating corrupted pointers in memory irrelevant.\n> \n> Move the state validation block above the pointer manipulation. This\n> ensures the transaction is entirely valid before modifying the journal's\n> internal lists, modernizing the function's logic and paving the way\n> for future graceful degradation of these assertions.\n\nEither you have a poetry gift or you should tell your AI agent to keep the\ntone more to the point :). Anyway I think this is really just a pointless\nchurn as it doesn't really matter whether we crash the kernel one way or\nanother...\n\n\t\t\t\t\t\t\t\tHonza\n\n> \n> Signed-off-by: Milos Nikic <nikic.milos@gmail.com>\n> ---\n>  fs/jbd2/checkpoint.c | 18 +++++++++---------\n>  1 file changed, 9 insertions(+), 9 deletions(-)\n> \n> diff --git a/fs/jbd2/checkpoint.c b/fs/jbd2/checkpoint.c\n> index 1508e2f54462..c82b6bedd27b 100644\n> --- a/fs/jbd2/checkpoint.c\n> +++ b/fs/jbd2/checkpoint.c\n> @@ -703,6 +703,15 @@ void __jbd2_journal_drop_transaction(journal_t *journal, transaction_t *transact\n>  {\n>  \tassert_spin_locked(&journal->j_list_lock);\n>  \n> +\tJ_ASSERT(transaction->t_state == T_FINISHED);\n> +\tJ_ASSERT(transaction->t_buffers == NULL);\n> +\tJ_ASSERT(transaction->t_forget == NULL);\n> +\tJ_ASSERT(transaction->t_shadow_list == NULL);\n> +\tJ_ASSERT(transaction->t_checkpoint_list == NULL);\n> +\tJ_ASSERT(atomic_read(&transaction->t_updates) == 0);\n> +\tJ_ASSERT(journal->j_committing_transaction != transaction);\n> +\tJ_ASSERT(journal->j_running_transaction != transaction);\n> +\n>  \tjournal->j_shrink_transaction = NULL;\n>  \tif (transaction->t_cpnext) {\n>  \t\ttransaction->t_cpnext->t_cpprev = transaction->t_cpprev;\n> @@ -714,15 +723,6 @@ void __jbd2_journal_drop_transaction(journal_t *journal, transaction_t *transact\n>  \t\t\tjournal->j_checkpoint_transactions = NULL;\n>  \t}\n>  \n> -\tJ_ASSERT(transaction->t_state == T_FINISHED);\n> -\tJ_ASSERT(transaction->t_buffers == NULL);\n> -\tJ_ASSERT(transaction->t_forget == NULL);\n> -\tJ_ASSERT(transaction->t_shadow_list == NULL);\n> -\tJ_ASSERT(transaction->t_checkpoint_list == NULL);\n> -\tJ_ASSERT(atomic_read(&transaction->t_updates) == 0);\n> -\tJ_ASSERT(journal->j_committing_transaction != transaction);\n> -\tJ_ASSERT(journal->j_running_transaction != transaction);\n> -\n>  \ttrace_jbd2_drop_transaction(journal, transaction);\n>  \n>  \tjbd2_debug(1, \"Dropping transaction %d, all done\\n\", transaction->t_tid);\n> -- \n> 2.53.0\n>","headers":{"Return-Path":"\n <SRS0=zxWW=CN=vger.kernel.org=linux-ext4+bounces-15833-patchwork-incoming=ozlabs.org@ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linux-ext4@vger.kernel.org"],"Delivered-To":["patchwork-incoming@legolas.ozlabs.org","patchwork-incoming@ozlabs.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256\n header.s=susede2_rsa header.b=LnUiO8mC;\n\tdkim=pass header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=6bVskcbI;\n\tdkim=pass (1024-bit key) header.d=suse.cz header.i=@suse.cz\n header.a=rsa-sha256 header.s=susede2_rsa header.b=LnUiO8mC;\n\tdkim=neutral header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=6bVskcbI;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=ozlabs.org\n (client-ip=2404:9400:2221:ea00::3; helo=mail.ozlabs.org;\n envelope-from=srs0=zxww=cn=vger.kernel.org=linux-ext4+bounces-15833-patchwork-incoming=ozlabs.org@ozlabs.org;\n receiver=patchwork.ozlabs.org)","gandalf.ozlabs.org;\n arc=pass smtp.remote-ip=104.64.211.4 arc.chain=subspace.kernel.org","gandalf.ozlabs.org;\n dmarc=none (p=none dis=none) header.from=suse.cz","gandalf.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256\n header.s=susede2_rsa header.b=LnUiO8mC;\n\tdkim=pass header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=6bVskcbI;\n\tdkim=pass (1024-bit key) header.d=suse.cz header.i=@suse.cz\n header.a=rsa-sha256 header.s=susede2_rsa header.b=LnUiO8mC;\n\tdkim=neutral header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=6bVskcbI;\n\tdkim-atps=neutral","gandalf.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org\n (client-ip=104.64.211.4; helo=sin.lore.kernel.org;\n envelope-from=linux-ext4+bounces-15833-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org)","smtp.subspace.kernel.org;\n\tdkim=pass (1024-bit key) header.d=suse.cz header.i=@suse.cz\n header.b=\"LnUiO8mC\";\n\tdkim=permerror (0-bit key) header.d=suse.cz header.i=@suse.cz\n header.b=\"6bVskcbI\";\n\tdkim=pass (1024-bit key) header.d=suse.cz header.i=@suse.cz\n header.b=\"LnUiO8mC\";\n\tdkim=permerror (0-bit key) header.d=suse.cz header.i=@suse.cz\n header.b=\"6bVskcbI\"","smtp.subspace.kernel.org;\n arc=none smtp.client-ip=195.135.223.131","smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=suse.cz","smtp.subspace.kernel.org;\n spf=pass smtp.mailfrom=suse.cz","smtp-out2.suse.de;\n\tnone"],"Received":["from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fw3tc6jsmz1y2d\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 14 Apr 2026 22:46:31 +1000 (AEST)","from mail.ozlabs.org (mail.ozlabs.org [IPv6:2404:9400:2221:ea00::3])\n\tby gandalf.ozlabs.org (Postfix) with ESMTP id 4fw3tb4BNcz4wHp\n\tfor <incoming@patchwork.ozlabs.org>; Tue, 14 Apr 2026 22:46:31 +1000 (AEST)","by gandalf.ozlabs.org (Postfix)\n\tid 4fw3tb46HYz4wL0; Tue, 14 Apr 2026 22:46:31 +1000 (AEST)","from sin.lore.kernel.org (sin.lore.kernel.org [104.64.211.4])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby gandalf.ozlabs.org (Postfix) with ESMTPS id 4fw3tX0f9cz4wHp\n\tfor <patchwork-incoming@ozlabs.org>; Tue, 14 Apr 2026 22:46:28 +1000 (AEST)","from smtp.subspace.kernel.org (conduit.subspace.kernel.org\n [100.90.174.1])\n\tby sin.lore.kernel.org (Postfix) with ESMTP id E10BE30131FD\n\tfor <patchwork-incoming@ozlabs.org>; Tue, 14 Apr 2026 12:46:25 +0000 (UTC)","from localhost.localdomain (localhost.localdomain [127.0.0.1])\n\tby smtp.subspace.kernel.org (Postfix) with ESMTP id BDD5122FE0E;\n\tTue, 14 Apr 2026 12:46:24 +0000 (UTC)","from smtp-out2.suse.de (smtp-out2.suse.de [195.135.223.131])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))\n\t(No client certificate requested)\n\tby smtp.subspace.kernel.org (Postfix) with ESMTPS id 51AED1A681B\n\tfor <linux-ext4@vger.kernel.org>; Tue, 14 Apr 2026 12:46:23 +0000 (UTC)","from imap1.dmz-prg2.suse.org (unknown [10.150.64.97])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby smtp-out2.suse.de (Postfix) with ESMTPS id A750A5BCFB;\n\tTue, 14 Apr 2026 12:46:21 +0000 (UTC)","from imap1.dmz-prg2.suse.org (localhost [127.0.0.1])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id 9EE2B4B455;\n\tTue, 14 Apr 2026 12:46:21 +0000 (UTC)","from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167])\n\tby imap1.dmz-prg2.suse.org with ESMTPSA\n\tid +5W+Jh033mk0FgAAD6G6ig\n\t(envelope-from <jack@suse.cz>); Tue, 14 Apr 2026 12:46:21 +0000","by quack3.suse.cz (Postfix, from userid 1000)\n\tid 5F699A0B66; Tue, 14 Apr 2026 14:46:17 +0200 (CEST)"],"ARC-Seal":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707; t=1776170791; cv=pass;\n\tb=GPqDCXUHCImznWOXU8KfkOSio+vtKPE2IlbAASGjXUyX5c82ADVnoupuuUKZJkciYc/ankDLDNsw5x9Hv/T0PjCFfdb2/nnOS0nSTXZuY4bGUxtSWGGiyGAtIwxBcm/foMxrzRpELqi/JspkFKtqZnq0bryCh1yW6zVecTFYoTXgDLoAHLI1qOFa+6W8BUBAKBygxaYyUslxpEkGD3M/QaydncVQnQHGgrQul4OFKR5Muy3SEqg6k4EarV5rrjz2Zz6K1hO+s17Mzj5hEojpI9TEIOEzHMGTnJWnA0oMgGP1LeGT2S4VT2kxrzyItKYNTUdHuIoQK9Khz5+4+AuqNQ==","i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;\n\tt=1776170784; cv=none;\n b=cUmUjtOsF2ubSdsU0XLviK4E68NEyHfT+5ZRWoEunpflQmH6ZCkrAp1hrqKO7UqBX6tgvPwvzeGupB20Y6U7ix/Ux7d4ahRbr9CTMm5SAGvFCh27ymooasfczV2f8yw56dy6yP818Py8a0blQd04wMdqD8V+3PIbWjI4Gir9y4I="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=ozlabs.org; s=201707;\n\tt=1776170791; c=relaxed/relaxed;\n\tbh=aEPWQv5o1mBPBJ5Z6uqE5I5q7fFDH0ecNhn/PTATFmY=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=cXDmNCntZlucAofgd/lOdDAGQJkhaDLfvpBM7f5JaEJVdB2B1EoB5000/4F/wVmWavWL0DQ5WZ7UDsHmeZovEwcTttVDoxTpg+Pr6yjlx/biDa+UByB4EzTtKw/pxtFUTZyh2hj7pYHNzeriZVDi1OkyMItpHAjioEIDGcDmXBHZsJpTWqXujmDADmZMfafZfr7RgFNmXcdK0T/G9JBwgEsJJlK0+pEGUcRitkNRIPq0zCqVIRq+XQbEO66RatlQFGJPNtg7rz4yHSkANY6dkPdqfIqZAlPvF6jmwdDclG1gRyF7tju/+Tjn2nvCs4GOUGjyVxfmf449uBFGzftaGw==","i=1; a=rsa-sha256; d=subspace.kernel.org;\n\ts=arc-20240116; t=1776170784; c=relaxed/simple;\n\tbh=A2R8LyLDd/R6p1ag/paSSh25Z7u+iMgclkL1u3rl39E=;\n\th=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:\n\t Content-Type:Content-Disposition:In-Reply-To;\n b=WWvJjL+p8Ny94MqdK/73sUC8zVH2S18cRcam5rJnY0OhbHU7eDe7mkrLIt0Iwz4SFnSuk8i7wweDwAZF+QDeb+08cCYxDxQgrhVABFQjTt6XKkcV7pvhuLvTKDOhW6F/B+emVQ+CBmJV4aMH3TXeG2IJsXk4BpzYykjEnuhl5Cw="],"ARC-Authentication-Results":["i=2; gandalf.ozlabs.org;\n dmarc=none (p=none dis=none) header.from=suse.cz; dkim=pass (1024-bit key;\n unprotected) header.d=suse.cz header.i=@suse.cz header.a=rsa-sha256\n header.s=susede2_rsa header.b=LnUiO8mC;\n dkim=pass header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=6bVskcbI;\n dkim=pass (1024-bit key) header.d=suse.cz header.i=@suse.cz\n header.a=rsa-sha256 header.s=susede2_rsa header.b=LnUiO8mC;\n dkim=neutral header.d=suse.cz header.i=@suse.cz header.a=ed25519-sha256\n header.s=susede2_ed25519 header.b=6bVskcbI; dkim-atps=neutral;\n spf=pass (client-ip=104.64.211.4; helo=sin.lore.kernel.org;\n envelope-from=linux-ext4+bounces-15833-patchwork-incoming=ozlabs.org@vger.kernel.org;\n receiver=ozlabs.org) smtp.mailfrom=vger.kernel.org","i=1; smtp.subspace.kernel.org;\n dmarc=none (p=none dis=none) header.from=suse.cz;\n spf=pass smtp.mailfrom=suse.cz;\n dkim=pass (1024-bit key) header.d=suse.cz header.i=@suse.cz\n header.b=LnUiO8mC;\n dkim=permerror (0-bit key) header.d=suse.cz header.i=@suse.cz\n header.b=6bVskcbI;\n dkim=pass (1024-bit key) header.d=suse.cz header.i=@suse.cz\n header.b=LnUiO8mC;\n dkim=permerror (0-bit key) header.d=suse.cz header.i=@suse.cz\n header.b=6bVskcbI; arc=none smtp.client-ip=195.135.223.131"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz;\n s=susede2_rsa;\n\tt=1776170781;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n\t mime-version:mime-version:content-type:content-type:\n\t in-reply-to:in-reply-to:references:references;\n\tbh=aEPWQv5o1mBPBJ5Z6uqE5I5q7fFDH0ecNhn/PTATFmY=;\n\tb=LnUiO8mCRnmFvS6fUc1JhepRRaSRkMvPdc2jwgCOuxcMXkaMXhTIu2DT1lDGdYBzgXs5gA\n\tCLQxDUis3A4w2ZqJgXIpLr1ipYKkzRjGfW4XHjIlw0/CBzoJaeqF3ocHJDNbituUmLlkiB\n\t3WFGATD76C6+aah9aN67Bf8jqO4w+T4=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;\n\ts=susede2_ed25519; t=1776170781;\n\th=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n\t mime-version:mime-version:content-type:content-type:\n\t in-reply-to:in-reply-to:references:references;\n\tbh=aEPWQv5o1mBPBJ5Z6uqE5I5q7fFDH0ecNhn/PTATFmY=;\n\tb=6bVskcbIvbYStwgM2CyfftVBTXe/jzI6hfM3JbM1BFMWxoGgmHJLlo9Exy9w5bp6WK9LI7\n\t1bixgLfWxrrvlODA==","v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz;\n s=susede2_rsa;\n\tt=1776170781;\n h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n\t mime-version:mime-version:content-type:content-type:\n\t in-reply-to:in-reply-to:references:references;\n\tbh=aEPWQv5o1mBPBJ5Z6uqE5I5q7fFDH0ecNhn/PTATFmY=;\n\tb=LnUiO8mCRnmFvS6fUc1JhepRRaSRkMvPdc2jwgCOuxcMXkaMXhTIu2DT1lDGdYBzgXs5gA\n\tCLQxDUis3A4w2ZqJgXIpLr1ipYKkzRjGfW4XHjIlw0/CBzoJaeqF3ocHJDNbituUmLlkiB\n\t3WFGATD76C6+aah9aN67Bf8jqO4w+T4=","v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz;\n\ts=susede2_ed25519; t=1776170781;\n\th=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc:\n\t mime-version:mime-version:content-type:content-type:\n\t in-reply-to:in-reply-to:references:references;\n\tbh=aEPWQv5o1mBPBJ5Z6uqE5I5q7fFDH0ecNhn/PTATFmY=;\n\tb=6bVskcbIvbYStwgM2CyfftVBTXe/jzI6hfM3JbM1BFMWxoGgmHJLlo9Exy9w5bp6WK9LI7\n\t1bixgLfWxrrvlODA=="],"Date":"Tue, 14 Apr 2026 14:46:17 +0200","From":"Jan Kara <jack@suse.cz>","To":"Milos Nikic <nikic.milos@gmail.com>","Cc":"jack@suse.cz, tytso@mit.edu, linux-ext4@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org","Subject":"Re: [PATCH] jbd2: validate transaction state before dropping from\n journal","Message-ID":"<7aie7k2ttzq2fd537qyry5hft4ryf65cmibpkzv6avfvn6umwg@tnrbijcw3hql>","References":"<20260413180824.126739-1-nikic.milos@gmail.com>","Precedence":"bulk","X-Mailing-List":"linux-ext4@vger.kernel.org","List-Id":"<linux-ext4.vger.kernel.org>","List-Subscribe":"<mailto:linux-ext4+subscribe@vger.kernel.org>","List-Unsubscribe":"<mailto:linux-ext4+unsubscribe@vger.kernel.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20260413180824.126739-1-nikic.milos@gmail.com>","X-Spamd-Result":"default: False [-2.30 / 50.00];\n\tBAYES_HAM(-3.00)[99.99%];\n\tSUSPICIOUS_RECIPS(1.50)[];\n\tNEURAL_HAM_LONG(-1.00)[-1.000];\n\tMID_RHS_NOT_FQDN(0.50)[];\n\tNEURAL_HAM_SHORT(-0.20)[-1.000];\n\tMIME_GOOD(-0.10)[text/plain];\n\tARC_NA(0.00)[];\n\tRCVD_VIA_SMTP_AUTH(0.00)[];\n\tFREEMAIL_ENVRCPT(0.00)[gmail.com];\n\tFUZZY_RATELIMITED(0.00)[rspamd.com];\n\tMISSING_XM_UA(0.00)[];\n\tTO_DN_SOME(0.00)[];\n\tMIME_TRACE(0.00)[0:+];\n\tTAGGED_RCPT(0.00)[];\n\tRCVD_COUNT_THREE(0.00)[3];\n\tRCPT_COUNT_FIVE(0.00)[5];\n\tFROM_EQ_ENVFROM(0.00)[];\n\tFROM_HAS_DN(0.00)[];\n\tFREEMAIL_TO(0.00)[gmail.com];\n\tTO_MATCH_ENVRCPT_ALL(0.00)[];\n\tDKIM_SIGNED(0.00)[suse.cz:s=susede2_rsa,suse.cz:s=susede2_ed25519];\n\tRCVD_TLS_LAST(0.00)[];\n\tDBL_BLOCKED_OPENRESOLVER(0.00)[imap1.dmz-prg2.suse.org:helo,suse.com:email]","X-Spam-Score":"-2.30","X-Spam-Level":"","X-Spam-Status":"No, score=-1.2 required=5.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DMARC_MISSING,\n\tHEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,\n\tSPF_PASS autolearn=disabled version=4.0.1","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on gandalf.ozlabs.org"}}]