Skip to content
Snippets Groups Projects
Select Git revision
  • e6a5652fd156a286faadbf7a4062b5354d4e346e
  • vme-testing default
  • ci-test
  • master
  • remoteproc
  • am625-sk-ov5640
  • pcal6534-upstreaming
  • lps22df-upstreaming
  • msc-upstreaming
  • imx8mp
  • iio/noa1305
  • vme-next
  • vme-next-4.14-rc4
  • v4.14-rc4
  • v4.14-rc3
  • v4.14-rc2
  • v4.14-rc1
  • v4.13
  • vme-next-4.13-rc7
  • v4.13-rc7
  • v4.13-rc6
  • v4.13-rc5
  • v4.13-rc4
  • v4.13-rc3
  • v4.13-rc2
  • v4.13-rc1
  • v4.12
  • v4.12-rc7
  • v4.12-rc6
  • v4.12-rc5
  • v4.12-rc4
  • v4.12-rc3
32 results

io_delay.c

Blame
  • test_free_pages.c 995 B
    // SPDX-License-Identifier: GPL-2.0+
    /*
     * test_free_pages.c: Check that free_pages() doesn't leak memory
     * Copyright (c) 2020 Oracle
     * Author: Matthew Wilcox <willy@infradead.org>
     */
    
    #define pr_fmt(fmt)	KBUILD_MODNAME ": " fmt
    
    #include <linux/gfp.h>
    #include <linux/mm.h>
    #include <linux/module.h>
    
    static void test_free_pages(gfp_t gfp)
    {
    	unsigned int i;
    
    	for (i = 0; i < 1000 * 1000; i++) {
    		unsigned long addr = __get_free_pages(gfp, 3);
    		struct page *page = virt_to_page(addr);
    
    		/* Simulate page cache getting a speculative reference */
    		get_page(page);
    		free_pages(addr, 3);
    		put_page(page);
    	}
    }
    
    static int m_in(void)
    {
    	pr_info("Testing with GFP_KERNEL\n");
    	test_free_pages(GFP_KERNEL);
    	pr_info("Testing with GFP_KERNEL | __GFP_COMP\n");
    	test_free_pages(GFP_KERNEL | __GFP_COMP);
    	pr_info("Test completed\n");
    
    	return 0;
    }
    
    static void m_ex(void)
    {
    }
    
    module_init(m_in);
    module_exit(m_ex);
    MODULE_AUTHOR("Matthew Wilcox <willy@infradead.org>");
    MODULE_LICENSE("GPL");