> +static bool is_address_protected(void *p) > +{ > + struct page *page; > + struct vmap_area *area; > + > + if (unlikely(!is_vmalloc_addr(p))) > + return false; > + page = vmalloc_to_page(p); > + if (unlikely(!page)) > + return false; > + wmb(); /* Flush changes to the page table - is it needed? */ No. The rest of this is just pretty verbose and seems to have been very heavily copied and pasted. I guess that's OK for test code, though.