Re: [RFC][PATCH] lkdtm/usercopy: Add tests for other memory types

From: Kees Cook
Date: Thu May 12 2022 - 15:12:09 EST


On Thu, May 12, 2022 at 07:56:13PM +0100, Matthew Wilcox wrote:
> On Thu, May 12, 2022 at 11:36:13AM -0700, Kees Cook wrote:
> > +static void lkdtm_USERCOPY_FOLIO(void)
> > +{
> > + struct folio *folio;
> > + void *addr;
> > +
> > + /*
> > + * FIXME: Folio checking currently misses 0-order allocations, so
> > + * allocate and bump forward to the last page.
> > + */
> > + folio = folio_alloc(GFP_KERNEL | __GFP_ZERO, 1);
> > + if (!folio) {
> > + pr_err("folio_alloc() failed!?\n");
> > + return;
> > + }
> > + addr = page_address(&folio->page);
>
> Ideally, code shouldn't be using &folio->page. If it is, we have a
> gap in the folio API. Fortunately, we have folio_address().

Ah! Perfect, thanks. In trying to find the right alloc/free pair I
missed folio_address() :)

--
Kees Cook