On 05/12/2025 17:30, Dave Hansen wrote:
On 12/5/25 08:58, Kalyazin, Nikita wrote:
+static void kvm_gmem_folio_restore_direct_map(struct folio *folio)
+{
+     /*
+      * Direct map restoration cannot fail, as the only error condition
+      * for direct map manipulation is failure to allocate page tables
+      * when splitting huge pages, but this split would have already
+      * happened in set_direct_map_invalid_noflush() in 
kvm_gmem_folio_zap_direct_map().
+      * Thus set_direct_map_valid_noflush() here only updates prot bits.
+      */
+     if (kvm_gmem_folio_no_direct_map(folio))
+             set_direct_map_valid_noflush(folio_page(folio, 0), 
folio_nr_pages(folio),
+                                      true);
+}

This is rather hopeful programming.

I can think of a number of ways that this assumption might become invalid.
This at *least* check for set_direct_map_valid_noflush() failures (or
whatever interface you end up using)?

A WARN_ON_ONCE() would be fine.

Done in v9, thanks.


Reply via email to