diff options
| author | Daniel Micay <danielmicay@gmail.com> | 2017-01-20 16:51:25 -0500 |
|---|---|---|
| committer | Moyster <oysterized@gmail.com> | 2018-05-16 13:23:30 +0200 |
| commit | c9eb9030eb59dc92cdf36e732d177fb9f50d5fdd (patch) | |
| tree | 6cdce42cf09249d2f5c480cdb165dc65ef2cf672 /include/linux | |
| parent | c30a8b5f94898c848ecf01913e876026bed1465c (diff) | |
add page sanitization / verification
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/highmem.h | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/include/linux/highmem.h b/include/linux/highmem.h index 7fb31da45..41a50714f 100644 --- a/include/linux/highmem.h +++ b/include/linux/highmem.h @@ -7,6 +7,7 @@ #include <linux/mm.h> #include <linux/uaccess.h> #include <linux/hardirq.h> +#include <linux/string.h> #include <asm/cacheflush.h> @@ -189,6 +190,27 @@ static inline void clear_highpage(struct page *page) kunmap_atomic(kaddr); } +static inline void sanitize_highpage(struct page *page) +{ + void *kaddr; + unsigned long flags; + + local_irq_save(flags); + kaddr = kmap_atomic(page); + clear_page(kaddr); + kunmap_atomic(kaddr); + local_irq_restore(flags); +} + +static inline void sanitize_highpage_verify(struct page *page) +{ + void *kaddr; + + kaddr = kmap_atomic(page); + BUG_ON(memchr_inv(kaddr, 0, PAGE_SIZE)); + kunmap_atomic(kaddr); +} + static inline void zero_user_segments(struct page *page, unsigned start1, unsigned end1, unsigned start2, unsigned end2) |
