• Franck Bui-Huu's avatar
    [PATCH] Fix up mmap_kmem · 99a10a60
    Franck Bui-Huu authored
    vma->vm_pgoff is an pfn _offset_ relatif to the begining
    of the memory start. The previous code was doing at first:
    
    	vma->vm_pgoff << PAGE_SHIFT
    
    which results into a wrong physical address since some
    platforms have a physical mem start that can be different
    from 0. After that the previous call __pa() on this
    wrong physical address, however __pa() is used to convert
    a _virtual_ address into a physical one.
    
    This patch rewrites this convertion. It calculates the
    pfn of PAGE_OFFSET which is the pfn of the mem start
    then it adds the vma->vm_pgoff to it.
    
    It also uses virt_to_phys() instead of __pa() since the
    latter shouldn't be used by drivers.
    Signed-off-by: default avatarFranck Bui-Huu <fbuihuu@gmail.com>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    99a10a60
mem.c 21.8 KB