lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <79f75185-ac45-47c6-8f56-2ffa1e4815b0@redhat.com> Date: Thu, 5 Jun 2025 19:04:48 +0200 From: David Hildenbrand <david@...hat.com> To: Dan Williams <dan.j.williams@...el.com>, Jason Gunthorpe <jgg@...pe.ca> Cc: Alistair Popple <apopple@...dia.com>, linux-mm@...ck.org, gerald.schaefer@...ux.ibm.com, willy@...radead.org, linux-kernel@...r.kernel.org, nvdimm@...ts.linux.dev, linux-fsdevel@...r.kernel.org, linux-ext4@...r.kernel.org, linux-xfs@...r.kernel.org, jhubbard@...dia.com, hch@....de, zhang.lyra@...il.com, debug@...osinc.com, bjorn@...nel.org, balbirs@...dia.com, lorenzo.stoakes@...cle.com, linux-arm-kernel@...ts.infradead.org, loongarch@...ts.linux.dev, linuxppc-dev@...ts.ozlabs.org, linux-riscv@...ts.infradead.org, linux-cxl@...r.kernel.org, dri-devel@...ts.freedesktop.org, John@...ves.net Subject: Re: [PATCH 07/12] mm: Remove redundant pXd_devmap calls On 05.06.25 18:30, Dan Williams wrote: > David Hildenbrand wrote: >> On 05.06.25 14:09, Jason Gunthorpe wrote: >>> On Wed, Jun 04, 2025 at 07:35:24PM -0700, Dan Williams wrote: >>> >>>> If all dax pages are special, then vm_normal_page() should never find >>>> them and gup should fail. >>>> >>>> ...oh, but vm_normal_page_p[mu]d() is not used in the gup path, and >>>> 'special' is not set in the pte path. >>> >>> That seems really suboptimal?? Why would pmd and pte be different? >>> >>>> I think for any p[mu]d where p[mu]d_page() is ok to use should never set >>>> 'special', right? >>> >>> There should be dedicated functions for installing pages and PFNs, >>> only the PFN one would set the special bit. >>> >>> And certainly your tests *should* be failing as special entries should >>> never ever be converted to struct page. >> >> Worth reviewing [1] where I clean that up and describe the current >> impact. ;) > > Will do. > >> What's even worse about this pte_devmap()/pmd_devmap()/... shit (sorry! >> but it's absolute shit) is that some pte_mkdev() set the pte special, >> while others ... don't. > > As the person who started the turd rolling into this pile that Alistair > is heroically cleaning up, I approve this characterization. > >> E.g., loongarch >> >> static inline pte_t pte_mkdevmap(pte_t pte) { pte_val(pte) |= >> _PAGE_DEVMAP; return pte; } >> >> I don't even know how it can (could) survive vm_normal_page(). > > Presently "can" because dax switched away from vmf_insert_mixed() to > vmf_insert_page(), "could" in the past was the devmap hack to avoid > treating VM_MIXEDMAP as !vm_normal_page(). The thing is, in vm_normal_page() if we have CONFIG_ARCH_HAS_PTE_SPECIAL -- which loongarch sets -- if we don't see pte_special(), we will assume that it is refcounted. if (likely(!pte_special(pte)) goto check_pfn; So if pte_mkdevmap() does not set pte_special(), then ... vm_normal_page() would detect it as normal, although it isn't normal? But maybe I am missing something important. -- Cheers, David / dhildenb
Powered by blists - more mailing lists