+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.