Thread (137 messages) 137 messages, 11 authors, 2025-10-09

Re: [PATCH v3 29/30] luo: allow preserving memfd

From: Pratyush Yadav <pratyush@kernel.org>
Date: 2025-08-13 12:44:13
Also in: linux-doc, linux-fsdevel, linux-mm, lkml

On Fri, Aug 08 2025, Pasha Tatashin wrote:
quoted
+static int memfd_luo_preserve_folios(struct memfd_luo_preserved_folio *pfolios,
+                                    struct folio **folios,
+                                    unsigned int nr_folios)
+{
+       unsigned int i;
Should be 'long i'

Otherwise in err_unpreserve we get into an infinite loop. Thank you
Josh Hilke for noticing this.
Good catch! Will fix.
quoted
+       int err;
+
+       for (i = 0; i < nr_folios; i++) {
+               struct memfd_luo_preserved_folio *pfolio = &pfolios[i];
+               struct folio *folio = folios[i];
+               unsigned int flags = 0;
+               unsigned long pfn;
+
+               err = kho_preserve_folio(folio);
+               if (err)
+                       goto err_unpreserve;
+
+               pfn = folio_pfn(folio);
+               if (folio_test_dirty(folio))
+                       flags |= PRESERVED_FLAG_DIRTY;
+               if (folio_test_uptodate(folio))
+                       flags |= PRESERVED_FLAG_UPTODATE;
+
+               pfolio->foliodesc = PRESERVED_FOLIO_MKDESC(pfn, flags);
+               pfolio->index = folio->index;
+       }
+
+       return 0;
+
+err_unpreserve:
+       i--;
+       for (; i >= 0; i--)
+               WARN_ON_ONCE(kho_unpreserve_folio(folios[i]));
+       return err;
+}
+
-- 
Regards,
Pratyush Yadav
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help