From: Pratyush Yadav <pratyush@kernel.org>
To: Chenghao Duan <duanchenghao@kylinos.cn>
Cc: pasha.tatashin@soleen.com, rppt@kernel.org,
pratyush@kernel.org, akpm@linux-foundation.org,
linux-kernel@vger.kernel.org, linux-mm@kvack.org,
jianghaoran@kylinos.cn
Subject: Re: [PATCH v3 7/7] mm/memfd_luo: fix integer overflow in memfd_luo_preserve_folios
Date: Thu, 02 Apr 2026 12:06:58 +0000 [thread overview]
Message-ID: <2vxzv7e9ftwd.fsf@kernel.org> (raw)
In-Reply-To: <20260326084727.118437-8-duanchenghao@kylinos.cn> (Chenghao Duan's message of "Thu, 26 Mar 2026 16:47:27 +0800")
On Thu, Mar 26 2026, Chenghao Duan wrote:
> 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.
As Pasha said, KHO and LUO are not expected to run on 32-bit systems.
Plus, since i_size_read() returns loff_t, why use u64 when you can just
match the type and just use loff_t (which on 64-bit is long anyway)? I
don't get why u64 is any better than long or loff_t.
>
> 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.
Using unsigned int was intentional. We pass max_folios to
memfd_pin_folios(), which expects an unsigned int. So this change is
pointless unless you go and update memfd_pin_folios() too.
I think making memfd_pin_folios() use unsigned long for max_folios makes
a lot of sense, so can you please go update that first before making
this change? And when you do, please match the type of the argument to
the type you use here instead of using u64. This can be a separate,
independent patch series.
>
> 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 <duanchenghao@kylinos.cn>
[...]
--
Regards,
Pratyush Yadav
next prev parent reply other threads:[~2026-04-02 12:07 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-03-26 8:47 [PATCH v3 0/7] Modify memfd_luo code Chenghao Duan
2026-03-26 8:47 ` [PATCH v3 1/7] mm/memfd: use folio_nr_pages() for shmem inode accounting Chenghao Duan
2026-04-02 1:23 ` Pasha Tatashin
2026-04-02 10:59 ` Pratyush Yadav
2026-03-26 8:47 ` [PATCH v3 2/7] mm/memfd_luo: optimize shmem_recalc_inode calls in retrieve path Chenghao Duan
2026-04-02 11:02 ` Pratyush Yadav
2026-03-26 8:47 ` [PATCH v3 3/7] mm/memfd_luo: remove unnecessary memset in zero-size memfd path Chenghao Duan
2026-03-26 8:47 ` [PATCH v3 4/7] mm/memfd_luo: use i_size_write() to set inode size during retrieve Chenghao Duan
2026-03-26 8:47 ` [PATCH v3 5/7] mm/memfd_luo: fix physical address conversion in put_folios cleanup Chenghao Duan
2026-04-02 1:30 ` Pasha Tatashin
2026-04-02 11:06 ` Pratyush Yadav
2026-04-02 17:43 ` Andrew Morton
2026-03-26 8:47 ` [PATCH v3 6/7] mm/memfd_luo: remove folio from page cache when accounting fails Chenghao Duan
2026-04-02 1:32 ` Pasha Tatashin
2026-04-02 11:52 ` Pratyush Yadav
2026-04-02 17:54 ` Andrew Morton
2026-04-03 9:07 ` Pratyush Yadav
2026-03-26 8:47 ` [PATCH v3 7/7] mm/memfd_luo: fix integer overflow in memfd_luo_preserve_folios Chenghao Duan
2026-04-02 1:39 ` Pasha Tatashin
2026-04-02 12:06 ` Pratyush Yadav [this message]
2026-04-02 17:58 ` Andrew Morton
2026-04-03 9:06 ` Pratyush Yadav
2026-03-26 23:36 ` [PATCH v3 0/7] Modify memfd_luo code Andrew Morton
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=2vxzv7e9ftwd.fsf@kernel.org \
--to=pratyush@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=duanchenghao@kylinos.cn \
--cc=jianghaoran@kylinos.cn \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=pasha.tatashin@soleen.com \
--cc=rppt@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox