brintos

brintos / linux-shallow public Read only

0
0
Text · 1.0 KiB · 4895236 Raw
49 lines · c
1// SPDX-License-Identifier: GPL-2.0+2/*3 * test_free_pages.c: Check that free_pages() doesn't leak memory4 * Copyright (c) 2020 Oracle5 * Author: Matthew Wilcox <willy@infradead.org>6 */7 8#define pr_fmt(fmt)	KBUILD_MODNAME ": " fmt9 10#include <linux/gfp.h>11#include <linux/mm.h>12#include <linux/module.h>13 14static void test_free_pages(gfp_t gfp)15{16	unsigned int i;17 18	for (i = 0; i < 1000 * 1000; i++) {19		unsigned long addr = __get_free_pages(gfp, 3);20		struct page *page = virt_to_page((void *)addr);21 22		/* Simulate page cache getting a speculative reference */23		get_page(page);24		free_pages(addr, 3);25		put_page(page);26	}27}28 29static int m_in(void)30{31	pr_info("Testing with GFP_KERNEL\n");32	test_free_pages(GFP_KERNEL);33	pr_info("Testing with GFP_KERNEL | __GFP_COMP\n");34	test_free_pages(GFP_KERNEL | __GFP_COMP);35	pr_info("Test completed\n");36 37	return 0;38}39 40static void m_ex(void)41{42}43 44module_init(m_in);45module_exit(m_ex);46MODULE_AUTHOR("Matthew Wilcox <willy@infradead.org>");47MODULE_DESCRIPTION("Check that free_pages() doesn't leak memory");48MODULE_LICENSE("GPL");49