• malc's avatar
    Revert "mm/vmalloc: interchage the implementation of vmalloc_to_{pfn,page}" · add688fb
    malc authored
    Revert commit ece86e22
    , which was intended as a small performance
    Despite the claim that the patch doesn't introduce any functional
    changes in fact it does.
    The "no page" path behaves different now.  Originally, vmalloc_to_page
    might return NULL under some conditions, with new implementation it
    returns pfn_to_page(0) which is not the same as NULL.
    Simple test shows the difference.
    #include <linux/kernel.h>
    #include <linux/module.h>
    #include <linux/vmalloc.h>
    #include <linux/mm.h>
    int __init myi(void)
    	struct page *p;
    	void *v;
    	v = vmalloc(PAGE_SIZE);
    	/* trigger the "no page" path in vmalloc_to_page*/
    	p = vmalloc_to_page(v);
    	pr_err("expected val = NULL, returned val = %p", p);
    	return -EBUSY;
    void __exit mye(void)
    Before interchange:
    expected val = NULL, returned val =   (null)
    After interchange:
    expected val = NULL, returned val = c7ebe000
    Signed-off-by: default avatarVladimir Murzin <murzin.v@gmail.com>
    Cc: Jianyu Zhan <nasa4836@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
vmalloc.c 67.9 KB