From nobody Thu Apr 2 22:13:13 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 D48983BE17F for ; Thu, 26 Mar 2026 08:47:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514872; cv=none; b=CnqYLyKxeNyxAokflsHXIxUj+obscqQ/lyAdLmCDiqM9MMNo4GdLyJpU6JWhEECXz2vLbf98Et4xi8SgQktn/6Mznb4ZQaJCc3MOtGvxJbgu/bKSoD+NL06FkVvxscC3m50VFuZoDVQ5WdJHuRMcsYbdQlu6da2MYogBW2kDrM4= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514872; c=relaxed/simple; bh=sGE3qogMX8J2qFrjrt53auriN+DGLFlNdBYXb1qnB40=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=LZzF4f59s8vk1nGeVBqCiVsk2coqo+V8GARo5xpnQlQeCPz+rbp+vOvZ15ekf1KmMawrleeUtFiy434Y+AI9hDdTt9GGjeRYIrYSifAeE1nD1cBz3uY8QPfpCUoWq+fk+1ADbb9Z6qG3TSTzr1ClSynE41ot3wL6/hBDf1GuHms= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: 76984d7428f011f1a21c59e7364eecb8-20260326 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NO_NAME, HR_CTE_8B, HR_CTT_MISS HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME, HR_SJ_DIGIT_LEN HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM, HR_SJ_PHRASE HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT, HR_TO_NO_NAME IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_EXISTED, SN_EXISTED SPF_NOPASS, DKIM_NOPASS, DMARC_NOPASS, UD_TRUSTED, CIE_BAD CIE_GOOD, CIE_GOOD_SPF, GTI_FG_BS, GTI_RG_INFO, GTI_C_BU AMN_GOOD, ABX_MISS_RDNS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:ac3d01b6-d467-41da-9f74-c97c3814fbc7,IP:10, URL:25,TC:0,Content:-25,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,AC TION:release,TS:5 X-CID-INFO: VERSION:1.3.11,REQID:ac3d01b6-d467-41da-9f74-c97c3814fbc7,IP:10,UR L:25,TC:0,Content:-25,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:5 X-CID-META: VersionHash:89c9d04,CLOUDID:b6e80ca71f32462317a8f56fd2a8ad87,BulkI D:260323190756G9L0BELF,BulkQuantity:2,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:11|94|81|1,File:nil, RT:nil,Bulk:41,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DK P:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_ULN X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: 76984d7428f011f1a21c59e7364eecb8-20260326 X-User: duanchenghao@kylinos.cn Received: from localhost.localdomain [(183.242.174.21)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA) with ESMTP id 467466726; Thu, 26 Mar 2026 16:47:47 +0800 From: Chenghao Duan To: pasha.tatashin@soleen.com, rppt@kernel.org, pratyush@kernel.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: jianghaoran@kylinos.cn, duanchenghao@kylinos.cn Subject: [PATCH v3 1/7] mm/memfd: use folio_nr_pages() for shmem inode accounting Date: Thu, 26 Mar 2026 16:47:21 +0800 Message-Id: <20260326084727.118437-2-duanchenghao@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260326084727.118437-1-duanchenghao@kylinos.cn> References: <20260326084727.118437-1-duanchenghao@kylinos.cn> 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" memfd_luo_retrieve_folios() called shmem_inode_acct_blocks() and shmem_recalc_inode() with hardcoded 1 instead of the actual folio page count. memfd may use large folios (THP/hugepages), causing quota/limit under-accounting and incorrect stat output. Fix by using folio_nr_pages(folio) for both functions. Issue found by AI review and suggested by Pratyush Yadav . https://sashiko.dev/#/patchset/20260319012845.29570-1-duanchenghao%40kylino= s.cn Suggested-by: Pratyush Yadav Signed-off-by: Chenghao Duan Reviewed-by: Pasha Tatashin Reviewed-by: Pratyush Yadav --- mm/memfd_luo.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/mm/memfd_luo.c b/mm/memfd_luo.c index b8edb9f981d7..953440994ad2 100644 --- a/mm/memfd_luo.c +++ b/mm/memfd_luo.c @@ -395,6 +395,7 @@ static int memfd_luo_retrieve_folios(struct file *file, struct inode *inode =3D file_inode(file); struct address_space *mapping =3D inode->i_mapping; struct folio *folio; + long npages; int err =3D -EIO; long i; =20 @@ -441,14 +442,15 @@ static int memfd_luo_retrieve_folios(struct file *fil= e, if (flags & MEMFD_LUO_FOLIO_DIRTY) folio_mark_dirty(folio); =20 - err =3D shmem_inode_acct_blocks(inode, 1); + npages =3D folio_nr_pages(folio); + err =3D shmem_inode_acct_blocks(inode, npages); if (err) { - pr_err("shmem: failed to account folio index %ld: %d\n", - i, err); + pr_err("shmem: failed to account folio index %ld(%ld pages): %d\n", + i, npages, err); goto unlock_folio; } =20 - shmem_recalc_inode(inode, 1, 0); + shmem_recalc_inode(inode, npages, 0); folio_add_lru(folio); folio_unlock(folio); folio_put(folio); --=20 2.25.1 From nobody Thu Apr 2 22:13:13 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 E19233BED35 for ; Thu, 26 Mar 2026 08:48:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514885; cv=none; b=loB+QOya1gMOvxcBXwe9W+9/iTBEKZEiGlA3UDZxiAstlwxiVslbb6axiHzf/QR1rI+u0GwQ8RLZLWLUVH8Q/eWJ7M45oj9tiZxT2O/7cPZQkZ19mV6ngPyVMnLdeiJgmy0tzMeosH7rOv+pkW1blIn/kr+FPNVZBgESZbbPSHs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514885; c=relaxed/simple; bh=N/fPICUaVGca7hDfLeqALnqdS3zDgN3OGe6KytVyRkA=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=dzWuMd16hoPiCxFrUaZZeq1BIc3t3VbuLxmMDVJb7NZvfGFfoC4xwB5+HOG4g2/KSjp/tvodVjfe5CLhVhRJjzB5/8ZQKrU5SGafbeCbtUFKMcLEd2vctzRw7jqF72cfno6+0mlVZo8GQzIYobyn+Ca7L8bMjxBj0kFrlGveCAs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: 7c231ae428f011f1a21c59e7364eecb8-20260326 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NO_NAME, HR_CTE_8B, HR_CTT_MISS HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME, HR_SJ_DIGIT_LEN HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM, HR_SJ_PHRASE HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT, HR_TO_NO_NAME IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_EXISTED, SN_EXISTED SPF_NOPASS, DKIM_NOPASS, DMARC_NOPASS, CIE_BAD, CIE_GOOD CIE_GOOD_SPF, GTI_FG_BS, GTI_RG_INFO, GTI_C_BU, AMN_GOOD ABX_MISS_RDNS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:d2a5afa2-594d-4a74-a9d6-e43c1f7f3b83,IP:10, URL:0,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTIO N:release,TS:5 X-CID-INFO: VERSION:1.3.11,REQID:d2a5afa2-594d-4a74-a9d6-e43c1f7f3b83,IP:10,UR L:0,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:5 X-CID-META: VersionHash:89c9d04,CLOUDID:aaf90a360412ac72c3f6a39c578d0c34,BulkI D:2603231907563I1Z8ACW,BulkQuantity:2,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:0,File:nil,RT:nil,Bu lk:41,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0 ,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_SNR X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: 7c231ae428f011f1a21c59e7364eecb8-20260326 X-User: duanchenghao@kylinos.cn Received: from localhost.localdomain [(183.242.174.21)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA) with ESMTP id 1214504479; Thu, 26 Mar 2026 16:47:56 +0800 From: Chenghao Duan To: pasha.tatashin@soleen.com, rppt@kernel.org, pratyush@kernel.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: jianghaoran@kylinos.cn, duanchenghao@kylinos.cn Subject: [PATCH v3 2/7] mm/memfd_luo: optimize shmem_recalc_inode calls in retrieve path Date: Thu, 26 Mar 2026 16:47:22 +0800 Message-Id: <20260326084727.118437-3-duanchenghao@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260326084727.118437-1-duanchenghao@kylinos.cn> References: <20260326084727.118437-1-duanchenghao@kylinos.cn> 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" Move shmem_recalc_inode() out of the loop in memfd_luo_retrieve_folios() to improve performance when restoring large memfds. Currently, shmem_recalc_inode() is called for each folio during restore, which is O(n) expensive operations. This patch collects the number of successfully added folios and calls shmem_recalc_inode() once after the loop completes, reducing complexity to O(1). Additionally, fix the error path to also call shmem_recalc_inode() for the folios that were successfully added before the error occurred. Reviewed-by: Pasha Tatashin Signed-off-by: Chenghao Duan Reviewed-by: Pratyush Yadav --- mm/memfd_luo.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/mm/memfd_luo.c b/mm/memfd_luo.c index 953440994ad2..2a01eaff03c2 100644 --- a/mm/memfd_luo.c +++ b/mm/memfd_luo.c @@ -395,7 +395,7 @@ static int memfd_luo_retrieve_folios(struct file *file, struct inode *inode =3D file_inode(file); struct address_space *mapping =3D inode->i_mapping; struct folio *folio; - long npages; + long npages, nr_added_pages =3D 0; int err =3D -EIO; long i; =20 @@ -450,12 +450,14 @@ static int memfd_luo_retrieve_folios(struct file *fil= e, goto unlock_folio; } =20 - shmem_recalc_inode(inode, npages, 0); + nr_added_pages +=3D npages; folio_add_lru(folio); folio_unlock(folio); folio_put(folio); } =20 + shmem_recalc_inode(inode, nr_added_pages, 0); + return 0; =20 unlock_folio: @@ -474,6 +476,8 @@ static int memfd_luo_retrieve_folios(struct file *file, folio_put(folio); } =20 + shmem_recalc_inode(inode, nr_added_pages, 0); + return err; } =20 --=20 2.25.1 From nobody Thu Apr 2 22:13:13 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 023F03BE17F for ; Thu, 26 Mar 2026 08:48:02 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514884; cv=none; b=VggyuTbvFlFaUJsJeJ7YEkZKbxh6yHkEtUxvKhJcKXPf2mYmMb3WsDoSOjnLzTkTPJU9uhHG9uU1nLgZiAvmw5Q7tvqAFH+2jKses97NYgxH652FS4E3h/GaCXnAkG9XruKPGYt/lxUXajIHVmmNCAADs6+v8Nju9hyV+xIQy+s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514884; c=relaxed/simple; bh=pYGDGts/ZLGdMz7r6G85TOkydSqlBVuJbAFgquYRfTc=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HoTMswGPP/T1ItroYYeIG/bdX1VWcIAMpBtLmrQ3wIlhTuf3TQ/YdOHJdvEWvDpqheXyy5vJc6PHQ5b/8NqpEnmgRv8JnW2czpFhULbdDaB0rkxmyoDYOGhM4p/laMk9T3/Tkc/44OkjI9IBsNQulRUGp0PTKGnS8J3mzos5Cb4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: 7cb80e4c28f011f1a21c59e7364eecb8-20260326 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NO_NAME, HR_CTE_8B, HR_CTT_MISS HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME, HR_SJ_DIGIT_LEN HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM, HR_SJ_PHRASE HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT, HR_TO_NO_NAME IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_EXISTED, SN_EXISTED SPF_NOPASS, DKIM_NOPASS, DMARC_NOPASS, CIE_BAD, CIE_GOOD CIE_GOOD_SPF, GTI_FG_BS, GTI_RG_INFO, GTI_C_BU, AMN_GOOD ABX_MISS_RDNS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:0b074cf4-d6f7-4d98-9f07-dcf0e6a6e8b1,IP:10, URL:0,TC:0,Content:-5,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:0 X-CID-INFO: VERSION:1.3.11,REQID:0b074cf4-d6f7-4d98-9f07-dcf0e6a6e8b1,IP:10,UR L:0,TC:0,Content:-5,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:0 X-CID-META: VersionHash:89c9d04,CLOUDID:4c240a192d90b45019c2cb6f8b32788e,BulkI D:260323190756MBG2A585,BulkQuantity:2,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:0,File:nil,RT:nil,Bu lk:41,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0 ,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: 7cb80e4c28f011f1a21c59e7364eecb8-20260326 X-User: duanchenghao@kylinos.cn Received: from localhost.localdomain [(183.242.174.21)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA) with ESMTP id 1835242107; Thu, 26 Mar 2026 16:47:57 +0800 From: Chenghao Duan To: pasha.tatashin@soleen.com, rppt@kernel.org, pratyush@kernel.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: jianghaoran@kylinos.cn, duanchenghao@kylinos.cn Subject: [PATCH v3 3/7] mm/memfd_luo: remove unnecessary memset in zero-size memfd path Date: Thu, 26 Mar 2026 16:47:23 +0800 Message-Id: <20260326084727.118437-4-duanchenghao@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260326084727.118437-1-duanchenghao@kylinos.cn> References: <20260326084727.118437-1-duanchenghao@kylinos.cn> 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" The memset(kho_vmalloc, 0, sizeof(*kho_vmalloc)) call in the zero-size file handling path is unnecessary because the allocation of the ser structure already uses the __GFP_ZERO flag, ensuring the memory is already zero-initialized. Reviewed-by: Pratyush Yadav Reviewed-by: Pasha Tatashin Reviewed-by: Mike Rapoport (Microsoft) Signed-off-by: Chenghao Duan --- mm/memfd_luo.c | 1 - 1 file changed, 1 deletion(-) diff --git a/mm/memfd_luo.c b/mm/memfd_luo.c index 2a01eaff03c2..bf827e574bec 100644 --- a/mm/memfd_luo.c +++ b/mm/memfd_luo.c @@ -103,7 +103,6 @@ static int memfd_luo_preserve_folios(struct file *file, if (!size) { *nr_foliosp =3D 0; *out_folios_ser =3D NULL; - memset(kho_vmalloc, 0, sizeof(*kho_vmalloc)); return 0; } =20 --=20 2.25.1 From nobody Thu Apr 2 22:13:13 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 638E43BED2A for ; Thu, 26 Mar 2026 08:48:03 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514884; cv=none; b=sX13cD1rQEMW+9Z7btqmGXVgzlS2ndrs2aluxj/uexq9r4YuV8wWP1l/B4tVksE/R0BGq1DzyrsYZYNlQKcQPzYrKH5jiJ/bXmpp6VFQ15KZtPbqkxzuECoR/Ydzrwy1mrQRobKAygmgO8G3tn0EBcNCK17kUcbn7ue3oRkLto8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514884; c=relaxed/simple; bh=uUgdHpENYTjHqdnKt7NecqNtXv1oSS7bEgexzn0mEKo=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=fXr4XhupPpB+JPf4FrzyaRdN2oVivDrlx9QbtYSasSYIUiOmtNh+1+0DkWb8wQG66ZuDd57rfQ0OxFw7em4zydNshw7E4p40imf9p2qCUlHY4xfzjm8M9d58DdaA7AM5Qi5fdAzylCsngHWrmsMCDi9UDOjT4CKejkxAjyp2PzI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: 7d47c9f628f011f1a21c59e7364eecb8-20260326 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NO_NAME, HR_CTE_8B, HR_CTT_MISS HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME, HR_SJ_DIGIT_LEN HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM, HR_SJ_PHRASE HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT, HR_TO_NO_NAME IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_EXISTED, SN_EXISTED SPF_NOPASS, DKIM_NOPASS, DMARC_NOPASS, CIE_BAD, CIE_GOOD CIE_GOOD_SPF, GTI_FG_BS, GTI_RG_INFO, GTI_C_BU, AMN_GOOD ABX_MISS_RDNS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:4392c13f-415b-47c0-81fe-5a43f47d2d7e,IP:10, URL:0,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTIO N:release,TS:5 X-CID-INFO: VERSION:1.3.11,REQID:4392c13f-415b-47c0-81fe-5a43f47d2d7e,IP:10,UR L:0,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTION: release,TS:5 X-CID-META: VersionHash:89c9d04,CLOUDID:d37ff2454fe42428a695af3dfa1f3ae1,BulkI D:260323190759QJ8F4FG9,BulkQuantity:2,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:0,File:nil,RT:nil,Bu lk:41,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,DKP:0,BRR:0 ,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: 7d47c9f628f011f1a21c59e7364eecb8-20260326 X-User: duanchenghao@kylinos.cn Received: from localhost.localdomain [(183.242.174.21)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA) with ESMTP id 1020245059; Thu, 26 Mar 2026 16:47:58 +0800 From: Chenghao Duan To: pasha.tatashin@soleen.com, rppt@kernel.org, pratyush@kernel.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: jianghaoran@kylinos.cn, duanchenghao@kylinos.cn Subject: [PATCH v3 4/7] mm/memfd_luo: use i_size_write() to set inode size during retrieve Date: Thu, 26 Mar 2026 16:47:24 +0800 Message-Id: <20260326084727.118437-5-duanchenghao@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260326084727.118437-1-duanchenghao@kylinos.cn> References: <20260326084727.118437-1-duanchenghao@kylinos.cn> 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" Use i_size_write() instead of directly assigning to inode->i_size when restoring the memfd size in memfd_luo_retrieve(), to keep code consistency. No functional change intended. Reviewed-by: Pasha Tatashin Signed-off-by: Chenghao Duan --- mm/memfd_luo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mm/memfd_luo.c b/mm/memfd_luo.c index bf827e574bec..76edf9a3f5b5 100644 --- a/mm/memfd_luo.c +++ b/mm/memfd_luo.c @@ -499,7 +499,7 @@ static int memfd_luo_retrieve(struct liveupdate_file_op= _args *args) } =20 vfs_setpos(file, ser->pos, MAX_LFS_FILESIZE); - file->f_inode->i_size =3D ser->size; + i_size_write(file_inode(file), ser->size); =20 if (ser->nr_folios) { folios_ser =3D kho_restore_vmalloc(&ser->folios); --=20 2.25.1 From nobody Thu Apr 2 22:13:13 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 29A843BF698 for ; Thu, 26 Mar 2026 08:48:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514887; cv=none; b=rfr1e3/ssL42KeY2Te0jtyZ+OAjcYfEPaRy4dUl3hf/Lpvc4lBpbMRKQXGrRj/hGdOjbgdKA5SzeGaqf6R4eP23l7VmJ1NyQLmJOzmOnPiA+4jtGDnw0aZX66GR2jROizUDW8hA/Ky+Vx9ml4ylOAOSAO/2rrs6cY05Jt5IawyM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514887; c=relaxed/simple; bh=SNQM8vGpWzpdnwsjDOIeHgkUprywTPj6ha3kn3la5pk=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=g8ERlfaqUbiBbjlBuGynwMNAe4C7slqE4Favq1GmIzhjgzxpacBHgC86eAUAmjbxthYZZuOa4X9Xo/mXCmDRKxjTKqf1K/Qirb5lcd/CWHf4fYRWUPCsI9JfIl98kOHmz108y+4MKVbSnftKDpKOHDJz959Hf7+8DINWEQelBe8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: 7decb7fe28f011f1a21c59e7364eecb8-20260326 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NO_NAME, HR_CTE_8B, HR_CTT_MISS HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME, HR_SJ_DIGIT_LEN HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM, HR_SJ_PHRASE HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT, HR_TO_NO_NAME IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_EXISTED, SN_EXISTED SPF_NOPASS, DKIM_NOPASS, DMARC_NOPASS, UD_TRUSTED, CIE_BAD CIE_GOOD, CIE_GOOD_SPF, GTI_FG_BS, GTI_RG_INFO, GTI_C_BU AMN_GOOD, ABX_MISS_RDNS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:0149f3de-2b63-4fc2-baed-5df8a04f9f8a,IP:10, URL:25,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:30 X-CID-INFO: VERSION:1.3.11,REQID:0149f3de-2b63-4fc2-baed-5df8a04f9f8a,IP:10,UR L:25,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:30 X-CID-META: VersionHash:89c9d04,CLOUDID:79d138a8d03187dca63f965297c09dfb,BulkI D:260326164801IH4OYY5O,BulkQuantity:0,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:11|94|81|1,File:nil, RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,D KP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_FSD,TF_CID_SPAM_ULN,TF_CID_SPAM_SNR,TF_CID_SPAM_FAS X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: 7decb7fe28f011f1a21c59e7364eecb8-20260326 X-User: duanchenghao@kylinos.cn Received: from localhost.localdomain [(183.242.174.21)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA) with ESMTP id 2056257955; Thu, 26 Mar 2026 16:47:59 +0800 From: Chenghao Duan To: pasha.tatashin@soleen.com, rppt@kernel.org, pratyush@kernel.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: jianghaoran@kylinos.cn, duanchenghao@kylinos.cn Subject: [PATCH v3 5/7] mm/memfd_luo: fix physical address conversion in put_folios cleanup Date: Thu, 26 Mar 2026 16:47:25 +0800 Message-Id: <20260326084727.118437-6-duanchenghao@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260326084727.118437-1-duanchenghao@kylinos.cn> References: <20260326084727.118437-1-duanchenghao@kylinos.cn> 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" In memfd_luo_retrieve_folios()'s put_folios cleanup path: 1. kho_restore_folio() expects a phys_addr_t (physical address) but receives a raw PFN (pfolio->pfn). This causes kho_restore_page() to check the wrong physical address (pfn << PAGE_SHIFT instead of the actual physical address). 2. This loop lacks the !pfolio->pfn check that exists in the main retrieval loop and memfd_luo_discard_folios(), which could incorrectly process sparse file holes where pfn=3D0. Fix by converting PFN to physical address with PFN_PHYS() and adding the !pfolio->pfn check, matching the pattern used elsewhere in this file. This issue was identified by the AI review. https://sashiko.dev/#/patchset/20260323110747.193569-1-duanchenghao@kylinos= .cn Signed-off-by: Chenghao Duan Reviewed-by: Pasha Tatashin Reviewed-by: Pratyush Yadav --- mm/memfd_luo.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mm/memfd_luo.c b/mm/memfd_luo.c index 76edf9a3f5b5..b4cea3670689 100644 --- a/mm/memfd_luo.c +++ b/mm/memfd_luo.c @@ -469,8 +469,13 @@ static int memfd_luo_retrieve_folios(struct file *file, */ for (long j =3D i + 1; j < nr_folios; j++) { const struct memfd_luo_folio_ser *pfolio =3D &folios_ser[j]; + phys_addr_t phys; + + if (!pfolio->pfn) + continue; =20 - folio =3D kho_restore_folio(pfolio->pfn); + phys =3D PFN_PHYS(pfolio->pfn); + folio =3D kho_restore_folio(phys); if (folio) folio_put(folio); } --=20 2.25.1 From nobody Thu Apr 2 22:13:13 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 F27AC3BED3F for ; Thu, 26 Mar 2026 08:48:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514886; cv=none; b=qZOoJ2LqNmwX0lH8mfiFuUU6dJHqHqIiCiXPH5FHUlCdbfuurf12ZyGlZq+f8hc5CVGe4vLavXlPZbZVWP8dI2E4OvYlffa5AgrUW3SdRTNHb+e/DjQLhNJqmECdfuv5t7CuqbJZUB79BQkGDPTT/2vvSS9b98aPK6Uwyjgnktw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514886; c=relaxed/simple; bh=fLQd1cL0Y2hxV83Z1ACOjVDQx527p82on2vB2npcc38=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=AGE/Zfi+ZkMV1dIJ9h++fXi/Df2d5MAiYyavCtLTIY88Lw3p9CgkN1Ow43w+Ou8esdr5kRKOkVwKjxHH9QNUK6U6xmw6bslN4rgUDJuiF8IExkSdo+Gqy5cY1MBw34VElE9vYP6XWS/RZ2q4Zyk6Qewv8LLSTYVD8dgLiX4k+vo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: 7ea6c0d628f011f1a21c59e7364eecb8-20260326 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NO_NAME, HR_CTE_8B, HR_CTT_MISS HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME, HR_SJ_DIGIT_LEN HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM, HR_SJ_PHRASE HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT, HR_TO_NO_NAME IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_EXISTED, SN_EXISTED SPF_NOPASS, DKIM_NOPASS, DMARC_NOPASS, UD_TRUSTED, CIE_BAD CIE_GOOD, CIE_GOOD_SPF, GTI_FG_BS, GTI_RG_INFO, GTI_C_BU AMN_GOOD, ABX_MISS_RDNS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:6b50342a-0cc7-47fd-9245-b3f147493809,IP:10, URL:25,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:30 X-CID-INFO: VERSION:1.3.11,REQID:6b50342a-0cc7-47fd-9245-b3f147493809,IP:10,UR L:25,TC:0,Content:0,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTION :release,TS:30 X-CID-META: VersionHash:89c9d04,CLOUDID:2cd171e89e0fadf2b4fed362de1d77e9,BulkI D:260326164801ANQC1H1A,BulkQuantity:0,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:11|94|81|1,File:nil, RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,D KP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_ULN,TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: 7ea6c0d628f011f1a21c59e7364eecb8-20260326 X-User: duanchenghao@kylinos.cn Received: from localhost.localdomain [(183.242.174.21)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA) with ESMTP id 967957855; Thu, 26 Mar 2026 16:48:00 +0800 From: Chenghao Duan To: pasha.tatashin@soleen.com, rppt@kernel.org, pratyush@kernel.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: jianghaoran@kylinos.cn, duanchenghao@kylinos.cn Subject: [PATCH v3 6/7] mm/memfd_luo: remove folio from page cache when accounting fails Date: Thu, 26 Mar 2026 16:47:26 +0800 Message-Id: <20260326084727.118437-7-duanchenghao@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260326084727.118437-1-duanchenghao@kylinos.cn> References: <20260326084727.118437-1-duanchenghao@kylinos.cn> 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" In memfd_luo_retrieve_folios(), when shmem_inode_acct_blocks() fails after successfully adding the folio to the page cache, the code jumps to unlock_folio without removing the folio from the page cache. This leaves the folio permanently abandoned in the page cache: - The folio was added via shmem_add_to_page_cache() which set up mapping, index, and incremented nrpages/shmem stats. - folio_unlock() and folio_put() do not remove it from the cache. - folio_add_lru() was never called, so it cannot be reclaimed. Fix by adding a remove_from_cache label that calls filemap_remove_folio() before unlocking, matching the error handling pattern in shmem_alloc_and_add_folio(). This issue was identified by the AI review. https://sashiko.dev/#/patchset/20260323110747.193569-1-duanchenghao@kylinos= .cn Signed-off-by: Chenghao Duan Reviewed-by: Pasha Tatashin Reviewed-by: Pratyush Yadav --- mm/memfd_luo.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mm/memfd_luo.c b/mm/memfd_luo.c index b4cea3670689..f8e8f99b1848 100644 --- a/mm/memfd_luo.c +++ b/mm/memfd_luo.c @@ -446,7 +446,7 @@ static int memfd_luo_retrieve_folios(struct file *file, if (err) { pr_err("shmem: failed to account folio index %ld(%ld pages): %d\n", i, npages, err); - goto unlock_folio; + goto remove_from_cache; } =20 nr_added_pages +=3D npages; @@ -459,6 +459,8 @@ static int memfd_luo_retrieve_folios(struct file *file, =20 return 0; =20 +remove_from_cache: + filemap_remove_folio(folio); unlock_folio: folio_unlock(folio); folio_put(folio); --=20 2.25.1 From nobody Thu Apr 2 22:13:13 2026 Received: from mailgw.kylinos.cn (mailgw.kylinos.cn [124.126.103.232]) (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 E028F3BED37 for ; Thu, 26 Mar 2026 08:48:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=124.126.103.232 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514886; cv=none; b=aDk2TSx0RRsP+VEVyqN+aEJSuGEpT7Zpq9LX2On08KTVXxnN/VACNEYYp6QJ3Tivj4MDejqUiwL6Cg3EG+P/okDMTZCBmO4gak73fUsFmsvqj2xpbmQzORQ90suV0APAKu0qK9E+UMhFUoRZ3bd/E1fzheU6OJ3S8MpbiJ2LtfA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1774514886; c=relaxed/simple; bh=AvoYEtnGjBzQYX8KIGihI+pBbdkXrOlbffYRV4pbUrU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=bWUtAtJCe6Cw0amvcNodVmuvOUqCN5BXQZUvW2PeW6LWBANt79ZbHjZLjOHgXlejV2t5T2KC8ynoyJqKg5FAotmbiKb+cMIk4dFt8CMV/cibpUp7XL/+GPBHTGI+j7N5arJ/vJGjej/1vLIu4Ud27xcUVVq/Db7nzjJsNZIq8yA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn; spf=pass smtp.mailfrom=kylinos.cn; arc=none smtp.client-ip=124.126.103.232 Authentication-Results: smtp.subspace.kernel.org; dmarc=none (p=none dis=none) header.from=kylinos.cn Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=kylinos.cn X-UUID: 7f2d37c428f011f1a21c59e7364eecb8-20260326 X-CTIC-Tags: HR_CC_COUNT, HR_CC_DOMAIN_COUNT, HR_CC_NO_NAME, HR_CTE_8B, HR_CTT_MISS HR_DATE_H, HR_DATE_WKD, HR_DATE_ZONE, HR_FROM_NAME, HR_SJ_DIGIT_LEN HR_SJ_LANG, HR_SJ_LEN, HR_SJ_LETTER, HR_SJ_NOR_SYM, HR_SJ_PHRASE HR_SJ_PHRASE_LEN, HR_SJ_WS, HR_TO_COUNT, HR_TO_DOMAIN_COUNT, HR_TO_NO_NAME IP_TRUSTED, SRC_TRUSTED, DN_TRUSTED, SA_EXISTED, SN_EXISTED SPF_NOPASS, DKIM_NOPASS, DMARC_NOPASS, UD_TRUSTED, CIE_BAD CIE_GOOD, CIE_GOOD_SPF, GTI_FG_BS, GTI_RG_INFO, GTI_C_BU AMN_GOOD, ABX_MISS_RDNS X-CID-P-RULE: Release_Ham X-CID-O-INFO: VERSION:1.3.11,REQID:a72e581e-92dd-4fdb-a9b0-1a082cb00933,IP:10, URL:25,TC:0,Content:-25,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,AC TION:release,TS:5 X-CID-INFO: VERSION:1.3.11,REQID:a72e581e-92dd-4fdb-a9b0-1a082cb00933,IP:10,UR L:25,TC:0,Content:-25,EDM:0,RT:0,SF:-5,FILE:0,BULK:0,RULE:Release_Ham,ACTI ON:release,TS:5 X-CID-META: VersionHash:89c9d04,CLOUDID:1467e7590ec80c26cdec8a7899216632,BulkI D:260326164801FNQ8KTQP,BulkQuantity:0,Recheck:0,SF:17|19|38|66|78|81|82|10 2|127|850|898,TC:nil,Content:0|15|50,EDM:-3,IP:-2,URL:11|94|81|1,File:nil, RT:nil,Bulk:nil,QS:nil,BEC:nil,COL:0,OSI:0,OSA:0,AV:0,LES:1,SPR:NO,DKR:0,D KP:0,BRR:0,BRE:0,ARC:0 X-CID-BVR: 2,SSN|SDN X-CID-BAS: 2,SSN|SDN,0,_ X-CID-FACTOR: TF_CID_SPAM_SNR,TF_CID_SPAM_FAS,TF_CID_SPAM_FSD,TF_CID_SPAM_ULN X-CID-RHF: D41D8CD98F00B204E9800998ECF8427E X-UUID: 7f2d37c428f011f1a21c59e7364eecb8-20260326 X-User: duanchenghao@kylinos.cn Received: from localhost.localdomain [(183.242.174.21)] by mailgw.kylinos.cn (envelope-from ) (Generic MTA) with ESMTP id 1230445524; Thu, 26 Mar 2026 16:48:01 +0800 From: Chenghao Duan To: pasha.tatashin@soleen.com, rppt@kernel.org, pratyush@kernel.org, akpm@linux-foundation.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org Cc: jianghaoran@kylinos.cn, duanchenghao@kylinos.cn Subject: [PATCH v3 7/7] mm/memfd_luo: fix integer overflow in memfd_luo_preserve_folios Date: Thu, 26 Mar 2026 16:47:27 +0800 Message-Id: <20260326084727.118437-8-duanchenghao@kylinos.cn> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20260326084727.118437-1-duanchenghao@kylinos.cn> References: <20260326084727.118437-1-duanchenghao@kylinos.cn> 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" In memfd_luo_preserve_folios(), two variables had types that could cause silent data loss with large files: 1. 'size' was declared as 'long', truncating the 64-bit result of i_size_read(). On 32-bit systems a 4GB file would be truncated to 0, causing the function to return early and discard all data. 2. 'max_folios' was declared as 'unsigned int', causing overflow for sparse files larger than 4TB. For example, a 16TB+4KB file would calculate 0x100000001 folios but truncate to 1 when assigned to max_folios, causing memfd_pin_folios() to pin only the first folio. Fix by changing both variables to 'u64' to match the types returned by i_size_read() and the folio count calculations. This issue was identified by the AI review. https://sashiko.dev/#/patchset/20260323110747.193569-1-duanchenghao@kylinos= .cn Signed-off-by: Chenghao Duan Reviewed-by: Pasha Tatashin --- mm/memfd_luo.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/memfd_luo.c b/mm/memfd_luo.c index f8e8f99b1848..4b4fa2f658d9 100644 --- a/mm/memfd_luo.c +++ b/mm/memfd_luo.c @@ -88,8 +88,8 @@ static int memfd_luo_preserve_folios(struct file *file, { struct inode *inode =3D file_inode(file); struct memfd_luo_folio_ser *folios_ser; - unsigned int max_folios; - long i, size, nr_pinned; + u64 size, max_folios; + long i, nr_pinned; struct folio **folios; int err =3D -EINVAL; pgoff_t offset; --=20 2.25.1