Commit eac522ef438f8ea173569fd0469371bc5d317947

Authored by David Howells
1 parent 16c29dafcc

NOMMU: percpu should use is_vmalloc_addr().

per_cpu_ptr_to_phys() uses VMALLOC_START and VMALLOC_END to determine if an
address is in the vmalloc() region or not.  This is incorrect on NOMMU as
there is no real vmalloc() capability (vmalloc() is emulated by kmalloc()).

The correct way to do this is to use is_vmalloc_addr().  This encapsulates the
vmalloc() region test in MMU mode and just returns 0 in NOMMU mode.

On FRV in NOMMU mode, the percpu compilation fails without this patch:

mm/percpu.c: In function 'per_cpu_ptr_to_phys':
mm/percpu.c:1011: error: 'VMALLOC_START' undeclared (first use in this function)
mm/percpu.c:1011: error: (Each undeclared identifier is reported only once
mm/percpu.c:1011: error: for each function it appears in.)
mm/percpu.c:1012: error: 'VMALLOC_END' undeclared (first use in this function)
mm/percpu.c:1018: warning: control reaches end of non-void function

Signed-off-by: David Howells <dhowells@redhat.com>

Showing 1 changed file with 1 additions and 2 deletions Side-by-side Diff

... ... @@ -1008,8 +1008,7 @@
1008 1008 }
1009 1009  
1010 1010 if (in_first_chunk) {
1011   - if ((unsigned long)addr < VMALLOC_START ||
1012   - (unsigned long)addr >= VMALLOC_END)
  1011 + if (!is_vmalloc_addr(addr))
1013 1012 return __pa(addr);
1014 1013 else
1015 1014 return page_to_phys(vmalloc_to_page(addr));