file_thp_enabled() incorrectly returns true for guest_memfd and secretmem inodes because they appear as regular read-only files when CONFIG_READ_ONLY_THP_FOR_FS is enabled. This allows khugepaged and MADV_COLLAPSE to create large folios in the page cache, but their fault handlers do not support large folios. Add explicit checks for GUEST_MEMFD_MAGIC and SECRETMEM_MAGIC to reject these filesystems early in file_thp_enabled(). Reported-by: syzbot+33a04338019ac7e43a44@syzkaller.appspotmail.com Closes: https://syzkaller.appspot.com/bug?extid=33a04338019ac7e43a44 Tested-by: syzbot+33a04338019ac7e43a44@syzkaller.appspotmail.com Signed-off-by: Deepanshu Kartikey --- mm/huge_memory.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 40cf59301c21..4f57c78b57dd 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -93,6 +93,9 @@ static inline bool file_thp_enabled(struct vm_area_struct *vma) return false; inode = file_inode(vma->vm_file); + if (inode->i_sb->s_magic == GUEST_MEMFD_MAGIC || + inode->i_sb->s_magic == SECRETMEM_MAGIC) + return false; return !inode_is_open_for_write(inode) && S_ISREG(inode->i_mode); } -- 2.43.0