From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pg1-f172.google.com (mail-pg1-f172.google.com [209.85.215.172]) (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 573913A59A7 for ; Tue, 18 Aug 2026 17:00:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.215.172 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787072425; cv=none; b=CQxqTAD8D3AhEgEqPk6bF838g0s2vKJpDUinCXjK1SqjYgD8p8xUvqz+aN8kKS0jJsDHlwCYo4Ko3tDPdI0A4aCb8ElEZJMryL4ApDiuI9f7uUum8vfmlbZSFOObB4GJJG+Ji0qWL7EGxP8iePkkd0coTu93K3+N6FQnrpw6IcI= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787072425; c=relaxed/simple; bh=OME4mNqGBf0utfTQVjb7A9GC9JL4dYdl5PFZl8jgTP4=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=B6wBiWqNFszO9OzHuhGdk8lrPCNU4SjJ/Rq3hH4GZqozL0xtHzPmRUyMh7EYw4YlPTvMFHCpZi7VYPIAVEfrPh5GyjB3Q0mm/0BFdfHTGWoDDVt/SCu5zb0GiSVqCEIOAlsY4fVP/dn0VPoj5wjTx489yxisj5ZA+aynLsq0Pso= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=cx0HbcbC; arc=none smtp.client-ip=209.85.215.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="cx0HbcbC" Received: by mail-pg1-f172.google.com with SMTP id 41be03b00d2f7-ca766c1c9ccso21800a12.0 for ; Tue, 18 Aug 2026 10:00:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787072424; x=1787677224; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=xmCVRpXxKwkhcx1lJpD7Ch8hM3Y/f5hFXgHyNXwdBpY=; b=cx0HbcbCJ/nJRB8KZQsfLvGLUaDBpDUYQ4sAPNWEfYxM8ILOhkJSbek4IsJm+0jmsp CGMCcNCb787fitYRfdx/F5J0W5985IySf4QSeRdO1spvP6aApF5JmnKP6El4jyCYzrQE cTrh/1ALT1NYl5VdXkL1dVahmTMCH8q37feeMsX4zp+VlcWBFsXPo7rBza/Nlqrl69zT FkJGUTZ9EAlxn/NlTnejA0O+pSkQ/xOdKfmS6QxbgQWStPXoajfksitntlx5R9L7tW6F qScr98ltkq0w/q+V01PNBSXGdT0aiRExCRmKgoVzAnA1nxXsVOUtXAj+0DAYdAK+fHiF RQ7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072424; x=1787677224; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=xmCVRpXxKwkhcx1lJpD7Ch8hM3Y/f5hFXgHyNXwdBpY=; b=HplFFuuLAYSNFDCgqcfQhLLlQ1Ha4l49LKCaOJR0HXWk2vbFceFyOOjmviNjeA+s/u sIwnwTxwfrHBO8Dp2HSwEUbx+9MhwzQj3kqZugUOF+10iG5JjMcWBhz2Oay1CwaVRMqq b50rMHCjw93+R16dq5XozLRu1gmsWf5v4bD8xAvyl0PdEDLFH5EKg6svUycKDKS3K3IY Z3LE9QViHLYIH7c8qVKsO5AzkzyqVwOg6x/3f7m4z1yYMyH+4fQ5Bz4WKYsCgogVqfFX U6SFIgG/RPJGu2HWj/13Itrkb5ytueCGXjyFDtck+v4wu9dS/P7RpNfypznDm5nL+4bV T+8w== X-Gm-Message-State: AOJu0YxU1lX4eLW9TNCYzHpqXYQph6HBZ63DQmGiODGKY5QXQICDVmtB Atiq7ivrEoJKCWYinqTDYxVZ+CYa6VMBKP70rNFfrsVzhuL+OFrtwTLVHT/hmA== X-Gm-Gg: AR+sD13KCVYGpb8C07hjyPH7iWXjWVaFrKyBXbtUx41zI+RHe229f9h6wsT4tq7RYWr ExVNqP1RnJuhU3HNZiTWeFsjRdDDk4RE1g9RpTzyXnSONk3zdUMhmNNywN9q75tbv5qEevYY/b3 295H57KKJiyiE/gffSEMpMrnfRKOWVWdJp19Q7WZNoJDf5qwn6TtpCtGIm3T61vlpxpBoWQL74W xtFRvT5Hvu8qp/BPZSq72i6VYQjNQgZocDMvFXCz1RIMjWqrXxtkxJ6cqL4Fzp6W5halsUqf1Pv wIlFgGfJURJLnLFh2slKrrjf+BCF5D+ryxDXt8Tj4KQsO2P5PAsGsuJM9NXj8nZy93DL7yVauc5 wNAsHxBtRMdRG4Y9O24ZVlVjUiFk5j65zYpItc7lQXM8irJnuT2QWtpoDC5CuWabtIZq6P1XtrU 5nflanOG2jHTA9zO0+aUyTf95HUNPFXT5DT/rz0uA8eyhc7vKBh607FlEPCcoBTg+Y46fgcG7Gl F5MMcLiWyfHfr1z5II2lf7HUrnJkOzTcr+AWdKhYEAw8tKvKwlKJOUm5XfQ4JxhXmZkOf8ckED/ KPdrZRBbLEyP X-Received: by 2002:a05:6a21:3f92:b0:3cc:f280:ebc6 with SMTP id adf61e73a8af0-3ccf2810f99mr5367476637.5.1787072423432; Tue, 18 Aug 2026 10:00:23 -0700 (PDT) Received: from daehojeong-desktop.mtv.corp.google.com ([2a00:79e0:2e7c:8:50d9:e296:7754:dc83]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-14153064d86sm16046645c88.6.2026.08.18.10.00.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:00:21 -0700 (PDT) From: Daeho Jeong To: linux-kernel@vger.kernel.org, linux-f2fs-devel@lists.sourceforge.net, kernel-team@android.com Cc: Daeho Jeong , Sunmin Jeong Subject: [PATCH] f2fs: fix to migrate all curseg types during free_segment_range Date: Tue, 18 Aug 2026 10:00:18 -0700 Message-ID: <20260818170018.3132110-1-daeho43@gmail.com> X-Mailer: git-send-email 2.55.0.691.gc56d675ccc-goog Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit From: Daeho Jeong In free_segment_range(), the curseg evacuation loop only iterates up to NR_CURSEG_PERSIST_TYPE (0..5), missing non-persistent in-memory curseg types such as CURSEG_COLD_DATA_PINNED and CURSEG_ALL_DATA_ATGC. Even though these in-memory curseg types are not saved in the on-disk checkpoint header, they still occupy active physical segments at runtime. If an active in-memory curseg happens to be allocated within the segment range being truncated during filesystem shrink, failing to evacuate it will cause subsequent writes to the curseg attempting out-of-bounds I/O on the truncated storage range. Fix this by expanding the curseg evacuation loop upper bound to NR_CURSEG_TYPE to ensure all active curseg types are safely migrated out of the target range. Signed-off-by: Daeho Jeong Signed-off-by: Sunmin Jeong --- fs/f2fs/gc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/fs/f2fs/gc.c b/fs/f2fs/gc.c index ffaa7ba76a1b..192b16ac02f8 100644 --- a/fs/f2fs/gc.c +++ b/fs/f2fs/gc.c @@ -2222,7 +2222,7 @@ static int free_segment_range(struct f2fs_sb_info *sbi, mutex_unlock(&DIRTY_I(sbi)->seglist_lock); /* Move out cursegs from the target range */ - for (type = CURSEG_HOT_DATA; type < NR_CURSEG_PERSIST_TYPE; type++) { + for (type = CURSEG_HOT_DATA; type < NR_CURSEG_TYPE; type++) { err = f2fs_allocate_segment_for_resize(sbi, type, start, end); if (err) goto out; -- 2.55.0.691.gc56d675ccc-goog