Re: [syzbot] [mm?] KMSAN: uninit-value in swap_writeout
From: Pedro Falcato
Date: Tue Dec 23 2025 - 18:50:09 EST
On Wed, Dec 24, 2025 at 11:46:44AM +1300, Barry Song wrote:
> >
> > Uninit was created at:
> > __alloc_frozen_pages_noprof+0x421/0xab0 mm/page_alloc.c:5233
> > alloc_pages_mpol+0x328/0x860 mm/mempolicy.c:2486
> > folio_alloc_mpol_noprof+0x56/0x1d0 mm/mempolicy.c:2505
> > shmem_alloc_folio mm/shmem.c:1890 [inline]
> > shmem_alloc_and_add_folio+0xc56/0x1bd0 mm/shmem.c:1932
> > shmem_get_folio_gfp+0xad3/0x1fc0 mm/shmem.c:2556
> > shmem_get_folio mm/shmem.c:2662 [inline]
> > shmem_symlink+0x562/0xad0 mm/shmem.c:4129
> > vfs_symlink+0x42f/0x4c0 fs/namei.c:5514
> > do_symlinkat+0x2ae/0xbb0 fs/namei.c:5541
>
> +Hugh and Baolin.
>
> This happens in the shmem symlink path, where newly allocated
> folios are not cleared for some reason. As a result,
> is_folio_zero_filled() ends up reading uninitialized data.
>
I'm not Hugh nor Baolin, but I would guess that letting
is_folio_zero_filled() skip/disable KMSAN would also work. Since all we want
is to skip writeout if the folio is zero, whether it is incidentally zero, or not,
does not really matter, I think.
--
Pedro