Messages in this thread | | | Date | Wed, 19 Jan 2022 17:54:15 +0000 | From | "Russell King (Oracle)" <> | Subject | Re: [PATCH] vmap(): don't allow invalid pages |
| |
On Wed, Jan 19, 2022 at 04:27:32PM +0000, Matthew Wilcox wrote: > On Wed, Jan 19, 2022 at 01:28:14PM +0000, Robin Murphy wrote: > > > + if (WARN_ON(!pfn_valid(page_to_pfn(page)))) > > > > Is it page_to_pfn() guaranteed to work without blowing up if page is invalid > > in the first place? Looking at the CONFIG_SPARSEMEM case I'm not sure that's > > true... > > Even if it does blow up, at least it's blowing up here where someone > can start to debug it, rather than blowing up on first access, where > we no longer have the invlid struct page pointer. > > I don't think we have a 'page_valid' function which will tell us whether > a random pointer is actually a struct page or not.
Isn't it supposed to be:
if (!pfn_valid(pfn)) { handle invalid pfn; }
page = pfn_to_page(pfn);
Anything else - even trying to convert an invalid page back to a pfn, could well be unreliable (sparsemem or discontigmem).
-- RMK's Patch system: https://www.armlinux.org.uk/developer/patches/ FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
| |