[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <mafs0a50j466b.fsf@kernel.org>
Date: Tue, 18 Nov 2025 18:11:24 +0100
From: Pratyush Yadav <pratyush@...nel.org>
To: Pasha Tatashin <pasha.tatashin@...een.com>
Cc: Pratyush Yadav <pratyush@...nel.org>, Mike Rapoport <rppt@...nel.org>,
akpm@...ux-foundation.org, bhe@...hat.com, jasonmiu@...gle.com,
arnd@...db.de, coxu@...hat.com, dave@...ilevsky.ca,
ebiggers@...gle.com, graf@...zon.com, kees@...nel.org,
linux-kernel@...r.kernel.org, kexec@...ts.infradead.org,
linux-mm@...ck.org
Subject: Re: [PATCH v1 04/13] kho: Verify deserialization status and fix FDT
alignment access
On Tue, Nov 18 2025, Pasha Tatashin wrote:
>> > This page is never freed, so adding it to zone managed pages or keeping it
>> > reserved does not change anything.
>>
>> In practice, sure. I still don't see a good reason to _not_ initialize
>> the page properly. It's not like it costs us much in terms of
>> performance or code complexity.
>>
>> Since kho_restore_folio() makes sure the folio was _actually_ preserved
>> from KHO, you have a safety check against previous kernel having a bug
>> and not preserving the FDT properly. And I get that the FDT has already
>> been used by this point, but at least you would have some known point to
>> catch this.
>
> The kho_alloc_preserve() API is different from kho_preserve_folio().
> With kho_preserve_folio(), memory is allocated and some time later is
> preserved, so there is a possibility for that memory to exist and be
> used where it is not preserved, therefore it is a crucial step for
> such memory to also do kho_restore_folio() before used. With
> kho_alloc_preserve(), when the memory exists it is always preserved;
> it is gurantee of this API. There is no reason to do
> kho_restore_folio() on such memory at all. It can be released back to
> the system via kho_free_restore()/kho_free_unpreserve().
Even for those I think there should be a kho_restore_mem() or something
similar (naming things is hard :/), so they go through the restore,
their struct page is properly initialized and accounted for, and
make sure the pages were actually preserved.
Using the memory without restoring it first should be the exception IMO.
--
Regards,
Pratyush Yadav
Powered by blists - more mailing lists