From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 859643502BF for ; Tue, 13 Jan 2026 17:06:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768323990; cv=none; b=aXLNQB22JVYqnFa9wpMx55PtGo4zx1cdS8psWFh98LpOXU11iWb6D7Amc3djVeGar5ZZS4bFesJg3ElbOVUMGkiNMm22hny3z7ELCZdZgX8soNIs4eOtrLqopUxpPKxH7wdjnIgRYCp3fZoX3UbIFFbAAj3CykB3YHkbTMUI5PE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768323990; c=relaxed/simple; bh=4Ax4QF1tuXYNM0R7x6yl/zMu6ltbxUvbV3GJQ0fGBFM=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=A68v1PqyC53hcrYquOXg+kPOTlnwMYphInIFvdw6Lwp+URbnHfZQAZMpxr+J17QSBh14D6ODeeTlF2rljBhhYykRR5TWEGdcpdQjPpTkEOJHZI0HgsBVCC62X3FxovZMpgzSxqlsClSfVvLxlyINeoIz1uD+XalXbsME7E2xmQo= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=nk8cREB0; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="nk8cREB0" Received: by smtp.kernel.org (Postfix) with ESMTPSA id D24CAC116C6; Tue, 13 Jan 2026 17:06:29 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1768323990; bh=4Ax4QF1tuXYNM0R7x6yl/zMu6ltbxUvbV3GJQ0fGBFM=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=nk8cREB0XWxQdz/kCMR/fGV6IHgMXM5QDLCe2sXo9/eat6WK0YA3Knb2K+YfHU8wf Qn+11uRzksDkUxZ4VYJGiMdVPdZpiHwkosRDmiKu8oQfz8wWujFRXpYbMTc+LZkwv1 Bn5akE+36iBbhuavkth+Y42h5viNugzOODzLLlGLU8rQ93343jlcGW+3X3lCT8IyjE FoDAlQifn5c4ves7X1cGF85sG09GIOyl5MfS/1zgIcAxOdCJ3i5ajd37W2nOPKbSun 9ZiWAFVdzGGb74IIaPHeDPhO5aNmdsDGH5KGeWJcC6e4CfSVZi/xcV37DPlw/bDhw8 oqHUc5TDreCnA== Date: Tue, 13 Jan 2026 17:06:28 +0000 From: Jaegeuk Kim To: Chao Yu Cc: linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org Subject: Re: [PATCH] f2fs: fix to unlock folio in f2fs_read_data_large_folio() Message-ID: References: <20260112013052.7623-1-chao@kernel.org> 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=us-ascii Content-Disposition: inline In-Reply-To: <20260112013052.7623-1-chao@kernel.org> On 01/12, Chao Yu wrote: > We missed to unlock folio in error path of f2fs_read_data_large_folio(), > fix it. > > With below testcase, it can reproduce the bug. > > touch /mnt/f2fs/file > truncate -s $((1024*1024*1024)) /mnt/f2fs/file > f2fs_io setflags immutable /mnt/f2fs/file > sync > echo 3 > /proc/sys/vm/drop_caches > time dd if=/mnt/f2fs/file of=/dev/null bs=1M count=1024 > f2fs_io clearflags immutable /mnt/f2fs/file > echo 1 > /proc/sys/vm/drop_caches > time dd if=/mnt/f2fs/file of=/dev/null bs=1M count=1024 > time dd if=/mnt/f2fs/file of=/dev/null bs=1M count=1024 > > Signed-off-by: Chao Yu > --- > Changelog: > - this patch is based on Nanzhe Zhao's patchset Please rebase on top of dev-test? > fs/f2fs/data.c | 28 ++++++++++++---------------- > 1 file changed, 12 insertions(+), 16 deletions(-) > > diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c > index eeeb70bff101..a2c4769d0ae1 100644 > --- a/fs/f2fs/data.c > +++ b/fs/f2fs/data.c > @@ -2462,11 +2462,11 @@ static int f2fs_read_data_large_folio(struct inode *inode, > int ret = 0; > bool folio_in_bio; > > - if (!IS_IMMUTABLE(inode)) > - return -EOPNOTSUPP; > - > - if (f2fs_compressed_file(inode)) > + if (!IS_IMMUTABLE(inode) || f2fs_compressed_file(inode)) { > + if (folio) > + folio_unlock(folio); > return -EOPNOTSUPP; > + } > > map.m_seg_type = NO_CHECK_TYPE; > > @@ -2569,22 +2569,18 @@ static int f2fs_read_data_large_folio(struct inode *inode, > last_block_in_bio = block_nr; > } > trace_f2fs_read_folio(folio, DATA); > - if (rac) { > - if (!folio_in_bio) { > - if (!ret) > - folio_mark_uptodate(folio); > - folio_unlock(folio); > - } > - folio = readahead_folio(rac); > - goto next_folio; > - } > + > err_out: > - /* Nothing was submitted. */ > - if (!bio) { > + if (!folio_in_bio) { > if (!ret) > folio_mark_uptodate(folio); > folio_unlock(folio); > - return ret; > + if (ret) > + return ret; > + } > + if (rac) { > + folio = readahead_folio(rac); > + goto next_folio; > } > out: > f2fs_submit_read_bio(F2FS_I_SB(inode), bio, DATA); > -- > 2.40.1