From: "David Hildenbrand (Arm)" <david@kernel.org>
To: sashiko-reviews@lists.linux.dev,
Andrew Morton <akpm@linux-foundation.org>,
Gregory Price <gourry@gourry.net>, Zi Yan <ziy@nvidia.com>,
Joshua Hahn <joshua.hahnjy@gmail.com>,
Rakie Kim <rakie.kim@sk.com>,
Ying Huang <ying.huang@linux.alibaba.com>,
Johannes Weiner <hannes@cmpxchg.org>,
Vladimir Davydov <vdavydov.dev@gmail.com>,
Michal Hocko <mhocko@suse.com>, Hugh Dickins <hughd@google.com>,
Baolin Wang <baolin.wang@linux.alibaba.com>,
Lukas Czerner <lczerner@redhat.com>,
Carlos Maiolino <cmaiolino@redhat.com>,
Christian Brauner <brauner@kernel.org>, Jan Kara <jack@suse.cz>,
Daniel Verkamp <dverkamp@chromium.org>,
Jeff Xu <jeffxu@google.com>, Muchun Song <muchun.song@linux.dev>,
Oscar Salvador <osalvador@suse.de>,
David Stevens <stevensd@chromium.org>,
"Matthew Wilcox (Oracle)" <willy@infradead.org>,
William Kucharski <william.kucharski@oracle.com>,
Chris Li <chrisl@kernel.org>, Kairui Song <kasong@tencent.com>,
Nhat Pham <nphamcs@gmail.com>, Miaohe Lin <linmiaohe@huawei.com>,
Naoya Horiguchi <nao.horiguchi@gmail.com>
Cc: linux-mm@kvack.org, Eva Kurchatova <eva.kurchatova@virtuozzo.com>
Subject: Re: [PATCH 05/16] hugetlbfs: enforce F_SEAL_EXEC in setattr
Date: Tue, 27 Oct 2026 10:51:00 +0100 [thread overview]
Message-ID: <ed59aa45-0ce8-4e5b-8a19-b5323fbe7864@kernel.org> (raw)
In-Reply-To: <sashiko-outbox-186003@kernel.org>
On 10/27/26 03:22, sashiko-bot@kernel.org wrote:
> Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider:
> - [Medium] hugetlbfs: uninitialized info->seals read in hugetlbfs_setattr() on root dir
> --
>
> commit dfab7a0d71278312f805e82ce52518a8ea2f538d
> Author: Eva Kurchatova <eva.kurchatova@virtuozzo.com>
>
> hugetlbfs: enforce F_SEAL_EXEC in setattr
>
> This patch updates hugetlbfs_setattr() to call memfd_check_seals_mode() when
> ATTR_MODE is set so that fchmod() cannot modify execute bits on a hugetlbfs
> memfd sealed with F_SEAL_EXEC.
>
> Link: https://patch.msgid.link/20260629180247.2343229-1-eva.kurchatova@virtuozzo.com
>
>> diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
>> index 6656807ce4377..7f5c3962b5d56 100644
>> --- a/fs/hugetlbfs/inode.c
>> +++ b/fs/hugetlbfs/inode.c
>
> [ ... ]
>
>> @@ -841,6 +842,13 @@ static int hugetlbfs_setattr(const struct mnt_idmap *idmap,
>> if (error)
>> return error;
>>
>> + if (ia_valid & ATTR_MODE) {
>> + error = memfd_check_seals_mode(info->seals, inode->i_mode,
>> + attr->ia_mode);
>> + if (error)
>> + return error;
>> + }
>
> [Severity: Medium]
> Can this read uninitialized or stale slab memory from info->seals when
> chmod() is called on a hugetlbfs root directory?
>
> hugetlbfs_dir_inode_operations wires .setattr to hugetlbfs_setattr(). Unlike
> hugetlbfs_get_inode(), which sets info->seals = F_SEAL_SEAL,
> hugetlbfs_get_root() allocates the root directory inode via new_inode() ->
> hugetlbfs_alloc_inode() without initializing HUGETLBFS_I(inode)->seals:
>
> fs/hugetlbfs/inode.c:hugetlbfs_get_root() {
> inode = new_inode(sb);
> if (inode) {
> ...
> inode->i_op = &hugetlbfs_dir_inode_operations;
> inode->i_fop = &simple_dir_operations;
> HUGETLBFS_I(inode)->resv_map = NULL;
> /* directory inodes start off with i_nlink == 2 (for "." entry) */
> inc_nlink(inode);
> lockdep_annotate_inode_mutex_key(inode);
> }
> return inode;
> }
>
> Because hugetlbfs_inode_cachep uses the init_once() slab constructor, which
> only calls inode_init_once(&ei->vfs_inode), newly allocated or recycled
> hugetlbfs_inode_info objects are not zeroed on allocation.
>
> Previously, hugetlbfs_setattr() only checked info->seals under ATTR_SIZE,
> which is not reachable on directories. With the new ATTR_MODE check, changing
> any execute/search bit on the mountpoint root directory reads info->seals
> and can fail with -EPERM if the F_SEAL_EXEC bit is set in uninitialized
> memory or left over from a previously freed sealed hugetlb memfd.
>
> Should hugetlbfs_get_root() also initialize HUGETLBFS_I(inode)->seals =
> F_SEAL_SEAL?
Shouldn't we just skip the check for directories?
diff --git a/fs/hugetlbfs/inode.c b/fs/hugetlbfs/inode.c
index 7f5c3962b5d56..293c7965f4894 100644
--- a/fs/hugetlbfs/inode.c
+++ b/fs/hugetlbfs/inode.c
@@ -842,7 +842,7 @@ static int hugetlbfs_setattr(const struct mnt_idmap *idmap,
if (error)
return error;
- if (ia_valid & ATTR_MODE) {
+ if (S_ISREG(inode->i_mode) && (ia_valid & ATTR_MODE)) {
error = memfd_check_seals_mode(info->seals, inode->i_mode,
attr->ia_mode);
if (error)
Because sealing of directories does not apply.
Thoughts?
--
Cheers,
David
next prev parent reply other threads:[~2026-10-27 9:53 UTC|newest]
Thread overview: 82+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-26 9:40 [PATCH 00/16] mm/shmem: various (urgent?) fixes David Hildenbrand (Arm)
2026-10-26 9:40 ` [PATCH 01/16] mm/mempolicy: charge shared policy nodes David Hildenbrand (Arm)
2026-10-26 13:38 ` Pedro Falcato
2026-10-26 15:44 ` Kiryl Shutsemau
2026-10-26 18:10 ` Zi Yan
2026-10-27 2:57 ` Baolin Wang
2026-10-26 9:40 ` [PATCH 02/16] tmpfs: keep the quota soft limits of an unused id David Hildenbrand (Arm)
2026-10-26 10:53 ` Jan Kara
2026-10-26 11:00 ` David Hildenbrand (Arm)
2026-10-26 9:40 ` [PATCH 03/16] tmpfs: preserve explicitly disabled quota limits David Hildenbrand (Arm)
2026-10-26 13:37 ` Jan Kara
2026-10-26 9:40 ` [PATCH 04/16] mm/shmem: honour F_SEAL_EXEC when an ACL is set David Hildenbrand (Arm)
2026-10-26 13:48 ` Pedro Falcato
2026-10-26 15:52 ` Kiryl Shutsemau
2026-10-26 19:07 ` Zi Yan
2026-10-27 3:45 ` Baolin Wang
2026-10-26 9:40 ` [PATCH 05/16] hugetlbfs: enforce F_SEAL_EXEC in setattr David Hildenbrand (Arm)
2026-10-26 13:49 ` Pedro Falcato
2026-10-26 15:55 ` Kiryl Shutsemau
2026-10-26 19:08 ` Zi Yan
2026-10-27 2:22 ` sashiko-bot
2026-10-27 9:51 ` David Hildenbrand (Arm) [this message]
2026-10-27 10:10 ` Muchun Song
2026-10-26 9:40 ` [PATCH 06/16] mm/shmem: hold off eviction in shmem_writeout() David Hildenbrand (Arm)
2026-10-26 15:14 ` Pedro Falcato
2026-10-26 18:44 ` Nhat Pham
2026-10-26 16:13 ` Kiryl Shutsemau
2026-10-27 9:53 ` David Hildenbrand (Arm)
2026-10-26 18:32 ` Nhat Pham
2026-10-27 5:44 ` Baolin Wang
2026-10-26 9:40 ` [PATCH 07/16] mm/shmem: avoid moving the truncation start backwards David Hildenbrand (Arm)
2026-10-26 16:30 ` Kiryl Shutsemau
2026-10-26 19:21 ` Zi Yan
2026-10-26 21:13 ` David Hildenbrand (Arm)
2026-10-26 22:39 ` Zi Yan
2026-10-26 23:16 ` Zi Yan
2026-10-26 23:24 ` David Hildenbrand (Arm)
2026-10-26 23:28 ` Zi Yan
2026-10-26 23:30 ` David Hildenbrand (Arm)
2026-10-26 9:40 ` [PATCH 08/16] mm/shmem: stop retrying folios that cannot be split David Hildenbrand (Arm)
2026-10-26 16:36 ` Kiryl Shutsemau
2026-10-26 17:08 ` David Hildenbrand (Arm)
2026-10-26 17:59 ` Kiryl Shutsemau
2026-10-27 10:04 ` David Hildenbrand (Arm)
2026-10-27 1:34 ` Zi Yan
2026-10-27 10:03 ` David Hildenbrand (Arm)
2026-10-26 9:40 ` [PATCH 09/16] mm/shmem: preserve data in clean folios when splitting fails David Hildenbrand (Arm)
2026-10-26 17:12 ` Kiryl Shutsemau
2026-10-27 6:35 ` Baolin Wang
2026-10-27 10:07 ` David Hildenbrand (Arm)
2026-10-27 2:00 ` Zi Yan
2026-10-26 9:40 ` [PATCH 10/16] mm/shmem: discard whole new large folios on fallocate rollback David Hildenbrand (Arm)
2026-10-26 17:15 ` Kiryl Shutsemau
2026-10-27 2:12 ` Zi Yan
2026-10-27 7:26 ` Baolin Wang
2026-10-26 9:40 ` [PATCH 11/16] mm/shmem: rescan after nonuniform folio splitting David Hildenbrand (Arm)
2026-10-26 17:26 ` Kiryl Shutsemau
2026-10-27 2:34 ` Zi Yan
2026-10-27 2:32 ` Zi Yan
2026-10-27 8:00 ` Baolin Wang
2026-10-27 10:12 ` David Hildenbrand (Arm)
2026-10-26 9:40 ` [PATCH 12/16] mm/shmem: fix truncate hang in large swap entry David Hildenbrand (Arm)
2026-10-26 17:39 ` Kiryl Shutsemau
2026-10-27 8:59 ` Baolin Wang
2026-10-27 10:14 ` David Hildenbrand (Arm)
2026-10-26 9:40 ` [PATCH 13/16] mm/shmem: preserve allocation errors when swapping in large entries David Hildenbrand (Arm)
2026-10-26 17:49 ` Kiryl Shutsemau
2026-10-27 9:18 ` Baolin Wang
2026-10-26 9:40 ` [PATCH 14/16] mm/shmem: fix truncate loop after boundary swapin failure David Hildenbrand (Arm)
2026-10-26 17:53 ` Kiryl Shutsemau
2026-10-26 9:40 ` [PATCH 15/16] mm/shmem: fix accounting of swapin-error markers David Hildenbrand (Arm)
2026-10-26 9:40 ` [PATCH 16/16] mm/shmem: fix truncation of files containing only " David Hildenbrand (Arm)
2026-10-26 11:11 ` [PATCH 00/16] mm/shmem: various (urgent?) fixes Baolin Wang
2026-10-26 12:12 ` David Hildenbrand (Arm)
2026-10-27 13:08 ` Baolin Wang
2026-10-26 13:23 ` Kairui Song
2026-10-26 20:08 ` Gregory Price
2026-10-26 21:09 ` David Hildenbrand (Arm)
2026-10-26 21:24 ` Gregory Price (Meta)
2026-10-27 9:34 ` David Hildenbrand (Arm)
2026-10-27 11:37 ` Gregory Price (Meta)
2026-10-27 12:07 ` David Hildenbrand (Arm)
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=ed59aa45-0ce8-4e5b-8a19-b5323fbe7864@kernel.org \
--to=david@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=baolin.wang@linux.alibaba.com \
--cc=brauner@kernel.org \
--cc=chrisl@kernel.org \
--cc=cmaiolino@redhat.com \
--cc=dverkamp@chromium.org \
--cc=eva.kurchatova@virtuozzo.com \
--cc=gourry@gourry.net \
--cc=hannes@cmpxchg.org \
--cc=hughd@google.com \
--cc=jack@suse.cz \
--cc=jeffxu@google.com \
--cc=joshua.hahnjy@gmail.com \
--cc=kasong@tencent.com \
--cc=lczerner@redhat.com \
--cc=linmiaohe@huawei.com \
--cc=linux-mm@kvack.org \
--cc=mhocko@suse.com \
--cc=muchun.song@linux.dev \
--cc=nao.horiguchi@gmail.com \
--cc=nphamcs@gmail.com \
--cc=osalvador@suse.de \
--cc=rakie.kim@sk.com \
--cc=sashiko-reviews@lists.linux.dev \
--cc=stevensd@chromium.org \
--cc=vdavydov.dev@gmail.com \
--cc=william.kucharski@oracle.com \
--cc=willy@infradead.org \
--cc=ying.huang@linux.alibaba.com \
--cc=ziy@nvidia.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.