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 lists.sourceforge.net (lists.sourceforge.net [216.105.38.7]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 60693CD5854 for ; Wed, 7 Jan 2026 11:22:36 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type:Cc: Reply-To:From:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:Subject:MIME-Version:Message-Id:Date:To:Sender: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Owner; bh=mxlApw7+vBCy4y2YvPxDMyl6R1iAG8T3LyyTfFMrkao=; b=i+ucFNRl3XZ/jgYyt2MsXzwf7K yNCpCNMB0tNnRDWGMOJlYdKr4VOfaOLXh1F5TT4MIml/DkAcjj19gMjd/d1wZDuEZgKBcJBbGy7Yl AJZyN8ni9tc16b25jC+EAbcNFPhrn5hNDrId8Ujjvp0Mg1N7bATDtIWpnOSZm+BtMS1w=; Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1vdRcX-0000Ru-QC; Wed, 07 Jan 2026 11:22:34 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1vdRcU-0000RZ-WD for linux-f2fs-devel@lists.sourceforge.net; Wed, 07 Jan 2026 11:22:31 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:MIME-Version:Message-Id: Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=kJZEIFeErzYUsWPgb8ANT7Dro+J4S9zWjdhiX3RxsN8=; b=FmILfV6BTfTrVdEEY9d99qE9Pp FCnXKrqoL5b3cFZwVn/BZMMXQJ4WnsUCIBt5Mqx55oMgxzmYH4P5diW9FzC0ji01+iHwr2F1W58jS HKS1V/Ije/SBp0FsdK9YoVVFf38zLLIzoT4zmP4Ik8nxpPeuL/WlGdb568OGTu16xz4c=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:MIME-Version:Message-Id:Date:Subject:Cc:To:From :Sender:Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post: List-Owner:List-Archive; bh=kJZEIFeErzYUsWPgb8ANT7Dro+J4S9zWjdhiX3RxsN8=; b=X Z9mz+61nP6w26cCsboPelNaT3TTM5mtLKGUJLK36RSunM6EANA31kkZu4fI7MkvcQw+VbsR/oosRE hkxMYqTQtYSxrK2JUE4IBFGmQDrafTiSl5hUkiRioiIOxtkK1+Z0WRUGsoWcGVHfP8v98EfonOC3X NHIq0xVtaq4dMotU=; Received: from tor.source.kernel.org ([172.105.4.254]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1vdRcV-0003Eg-6B for linux-f2fs-devel@lists.sourceforge.net; Wed, 07 Jan 2026 11:22:31 +0000 Received: from smtp.kernel.org (transwarp.subspace.kernel.org [100.75.92.58]) by tor.source.kernel.org (Postfix) with ESMTP id 8786C6001D; Wed, 7 Jan 2026 11:22:25 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 99D5BC4CEF7; Wed, 7 Jan 2026 11:22:23 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1767784945; bh=JdLNNhz6TndS2TdnRKWxFftQNQGpGbseSjPDtVIwKwo=; h=From:To:Cc:Subject:Date:From; b=HmopiO0kdYMSYo+BCKr8/hFg1RJ9RUWJ9lOsZFJzn8uE0xIwnmyNFW83T8w7+9IzD f5G29lu/r2HVWLLLvZzXM8/XEBHf0y2TtGWl+wEIGWcD7enp22KYxXT2dLlhKrB0m4 GDxQSfwWZc+zbYrUwZ7bLPHeix6RR8Dut0waLUnonXlEgMz50f2cw0wHVby4k+Lpwx rYnBO5okFahl1kmP1FIkBhB/2sMOnjfmk47BmbBYWwXpqAy22AF/qw2qtaOEIE31qn xLYtmWyZH/wDMjIE76E2dI3KaFflBZ9yrYeBK7Ufww0g/pk/rSP88oRNVG5aSOINJR BCjXWqxNd0f3w== To: jaegeuk@kernel.org Date: Wed, 7 Jan 2026 19:22:18 +0800 Message-Id: <20260107112218.1789-1-chao@kernel.org> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 X-Headers-End: 1vdRcV-0003Eg-6B Subject: [f2fs-dev] [PATCH] f2fs: fix to avoid UAF in f2fs_write_end_io() X-BeenThere: linux-f2fs-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Chao Yu via Linux-f2fs-devel Reply-To: Chao Yu Cc: syzbot+b4444e3c972a7a124187@syzkaller.appspotmail.com, stable@kernel.org, linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: linux-f2fs-devel-bounces@lists.sourceforge.net As syzbot reported an use-after-free issue in f2fs_write_end_io(). It is caused by below race condition: loop device umount - worker_thread - loop_process_work - do_req_filebacked - lo_rw_aio - lo_rw_aio_complete - blk_mq_end_request - blk_update_request - f2fs_write_end_io - dec_page_count - folio_end_writeback - kill_f2fs_super - kill_block_super - f2fs_put_super : free(sbi) : get_pages(, F2FS_WB_CP_DATA) accessed sbi which is freed In kill_f2fs_super(), we will drop all page caches of f2fs inodes before call free(sbi), it guarantee that all folios should end its writeback, so it should be safe to access sbi before last folio_end_writeback(). Let's relocate ckpt thread wakeup flow before folio_end_writeback() to resolve this issue. Cc: stable@kernel.org Fixes: e234088758fc ("f2fs: avoid wait if IO end up when do_checkpoint for better performance") Reported-by: syzbot+b4444e3c972a7a124187@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=b4444e3c972a7a124187 Signed-off-by: Chao Yu --- fs/f2fs/data.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index c30e69392a62..8550c964b71c 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -356,14 +356,20 @@ static void f2fs_write_end_io(struct bio *bio) folio->index != nid_of_node(folio)); dec_page_count(sbi, type); + + /* + * we should access sbi before folio_end_writeback() to + * avoid racing w/ kill_f2fs_super() + */ + if (type == F2FS_WB_CP_DATA && !get_pages(sbi, type) && + wq_has_sleeper(&sbi->cp_wait)) + wake_up(&sbi->cp_wait); + if (f2fs_in_warm_node_list(sbi, folio)) f2fs_del_fsync_node_entry(sbi, folio); folio_clear_f2fs_gcing(folio); folio_end_writeback(folio); } - if (!get_pages(sbi, F2FS_WB_CP_DATA) && - wq_has_sleeper(&sbi->cp_wait)) - wake_up(&sbi->cp_wait); bio_put(bio); } -- 2.40.1 _______________________________________________ Linux-f2fs-devel mailing list Linux-f2fs-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linux-f2fs-devel