From nobody Sat Jul 25 22:00:12 2026 Received: from xmbghk7.mail.qq.com (xmbghk7.mail.qq.com [43.163.128.49]) (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 488A9356748 for ; Mon, 13 Jul 2026 06:16:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=43.163.128.49 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783923373; cv=none; b=nFVz3nW/YH4kruR5l30MFqUcRZagF3+GFYOKvgZEUVXd9oteXvnQD5/NvizD7t3jffrlvq8wUAx1I2m5jUTzg7kkq97CUt3FRuP28/cF7uzi9Sa1iTH9wqN6jGWJsJruTgp/WRTUhqe83hR8XVehanuCiMh0FWgP5uLZucmu3MI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783923373; c=relaxed/simple; bh=TVqv45PFVPlgEOFK2qWqJlN/WmtGW0QAY9CmrC42pJY=; h=Message-ID:From:To:Cc:Subject:Date:In-Reply-To:References: MIME-Version; b=BPv+cfHsz0TUHTDSLHaL4sVluZupfHSSxtKBm/fQ8ph4jiow1WnCfe0mtbjYkcn2/YXIR1iqNq/LsLEFn7hsrIw4J7UQTEvKfMhvGXQRpRlMjknmm0FJI9/As/Tv9WVXvmd5lVgxUqrLeADQhVZAfLQlt9oDUYUUB58iV6kqK4s= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=qq.com; spf=pass smtp.mailfrom=qq.com; dkim=pass (1024-bit key) header.d=qq.com header.i=@qq.com header.b=trJR+V1W; arc=none smtp.client-ip=43.163.128.49 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=qq.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=qq.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=qq.com header.i=@qq.com header.b="trJR+V1W" DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qq.com; s=s201512; t=1783923366; bh=9E9llBN5BbvgowJzmsoaHolN7PYccrnfQ67fnUQ2Yvk=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=trJR+V1WDIuuND4QuZKEJWXNcxaPRTKdp6Tr04Z/XqRZqcgE/xuDSiXGl3FVlvQwU Yqz6hB8iuUOdvN6sKkHXlknnsaSsrutUMBruWm2YHCzUB1vnUgMD7a46H80hTp4GbA U6Z4d8hQ+sHg5Z+YR9/w/KzT+1K916Ltl9x1B2j8= Received: from ikun ([221.176.157.250]) by newxmesmtplogicsvrsza63-0.qq.com (NewEsmtp) with SMTP id 40327604; Mon, 13 Jul 2026 14:16:03 +0800 X-QQ-mid: xmsmtpt1783923363toj50uo25 Message-ID: X-QQ-XMAILINFO: MvUAcPkRmFBfvGucvIW0S0ovxLtGqMxThm81AO11hogivdm8ub6GHPzED5BWtV Fw1//pJyj8vkmMZFYJSLmQWQaMVcUjuq8yknQw/0S1iyX2m8L43Ahs6jrEqpl2p35eHkxKv4HBU0 /KQrjWfdUbMxP97n5t/Is/aRAw1/YX6h+PMjmyM4C0nBkTtE0WN1AwCKz3e1uExJpOJ6Snih7//h V0O0PXKXVguaQfyAzvo6OhUe8iFGhWnVToOdnz7gPaDGUBA5gAq/K9s+5gaveo6hj1nvSjNxc1Uh ltQ5Dp99XgAzEQ8hJ8gxP0nMewRXJZbG0PPpfPFO1lgX35Me267qVzussi5apWYjbLY4vZw4u6K7 rOG7DJNolAgAp3lI3zqYS4KnP0IcCH5c7GssQAYfO8m895ZgKcz4jwR1VsXjXPlpPzCGosg3KKrM DT3i+cjQRxTN+P+awznlY1w2K8tUHbwCpQ5OsiCywNYJ4V3Xd5MOqV1++xKZAi8TQAGZ875xMkTd m/0Q6Zaf6+dluR2xZqKK4I3C2lFuI9/5EAsQgty2LlfCvHGXbrWg81ot0RK0CnShZy3JJkjqA0bC dkYrXSg49DVw5O5XWWTvdgT9KjbpTIxNKFwe+46bCVTxOG+13+DySd/dd+A3W/eFtgFm3lzmbhou l5KamGEdIYG/8toTobWutInYTH2mUGRv5UOItAp7/lMet+AHYa3FEvO8DoWLIZe3j0L7MeWIbAVC q/N8ktYk+G8deAhhmaFQHqPVFdv3GIj+Tytgnwk5lHLU52I6XeFjjDLCp2+qe3BEx0/b+E16JrhS zKYRFe4yz6Nn/Rtu0MCMZCcd44fMbK/me72FwPy9FxXaFy4Xr80LlGo12UvFYG+a5AKV8Z37Azum VuBVkvD5Vrd7tfRfsa3yg2txMBLaHg5wa9HbeQ5hKoWsTwqItL9O5V/TG6rTCYhQepD4hcyK7rFV pm+TpTnuAHouPtMOV9l/tZ7Vmfl+sOoUn3YR4b5FECk+tyD6w81R/5A2FIq83r8aKEuLmfX8oB6d yVd+x2DvX2cXayP1egRW5jQ/XPeBf7966L7ZYeYikPt1eK5Mu18ZyL8cFcdReoHJEl2b3T45IukW pDPpv/Gv2qr3ACrY06thvYpfy3Mw== X-QQ-XMRINFO: MPJ6Tf5t3I/ylTmHUqvI8+Wpn+Gzalws3A== From: Guanghui Yang <3497809730@qq.com> To: Jaegeuk Kim Cc: Chao Yu , linux-f2fs-devel@lists.sourceforge.net, linux-kernel@vger.kernel.org, Guanghui Yang <3497809730@qq.com> Subject: [PATCH v2] f2fs: fix ifolio leak in f2fs_get_new_data_folio Date: Mon, 13 Jul 2026 14:16:01 +0800 X-OQ-MSGID: <20260713061601.712-1-3497809730@qq.com> X-Mailer: git-send-email 2.52.0.windows.1 In-Reply-To: <20260713055959.1865-1-3497809730@qq.com> References: <20260713055959.1865-1-3497809730@qq.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" f2fs_get_new_data_folio() documents that ifolio is only set by make_empty_dir(), and that ifolio should be released by this function on any error. The allocation failure path already follows this rule, but the f2fs_reserve_block() failure path only drops the newly grabbed folio and returns the error. When make_empty_dir() passes a non-NULL ifolio, an early f2fs_reserve_block() failure can leave the extra inode folio reference held by the caller. Release ifolio on this error path if f2fs_reserve_block() has not already cleared dn.inode_folio. Signed-off-by: Guanghui Yang <3497809730@qq.com> --- Changes since v1: - Check dn.inode_folio before releasing ifolio to avoid a double put when f2fs_reserve_block() has already cleared the dnode. fs/f2fs/data.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/fs/f2fs/data.c b/fs/f2fs/data.c index a765fda71536..6c573d392dac 100644 --- a/fs/f2fs/data.c +++ b/fs/f2fs/data.c @@ -1477,6 +1477,8 @@ struct folio *f2fs_get_new_data_folio(struct inode *i= node, err =3D f2fs_reserve_block(&dn, index); if (err) { f2fs_folio_put(folio, true); + if (dn.inode_folio) + f2fs_folio_put(ifolio, true); return ERR_PTR(err); } if (!ifolio) base-commit: a13c140cc289c0b7b3770bce5b3ad42ab35074aa --=20 2.52.0.windows.1