nommu: don't need get_unmapped_area() for NOMMU
get_unmapped_area() is unnecessary for NOMMU as no-one calls it. Signed-off-by: David Howells <dhowells@redhat.com> Acked-by: Al Viro <viro@zeniv.linux.org.uk> Cc: Greg Ungerer <gerg@snapgear.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
Родитель
779c10232c
Коммит
efc1a3b169
|
@ -205,10 +205,12 @@ struct mm_struct {
|
||||||
struct vm_area_struct * mmap; /* list of VMAs */
|
struct vm_area_struct * mmap; /* list of VMAs */
|
||||||
struct rb_root mm_rb;
|
struct rb_root mm_rb;
|
||||||
struct vm_area_struct * mmap_cache; /* last find_vma result */
|
struct vm_area_struct * mmap_cache; /* last find_vma result */
|
||||||
|
#ifdef CONFIG_MMU
|
||||||
unsigned long (*get_unmapped_area) (struct file *filp,
|
unsigned long (*get_unmapped_area) (struct file *filp,
|
||||||
unsigned long addr, unsigned long len,
|
unsigned long addr, unsigned long len,
|
||||||
unsigned long pgoff, unsigned long flags);
|
unsigned long pgoff, unsigned long flags);
|
||||||
void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
|
void (*unmap_area) (struct mm_struct *mm, unsigned long addr);
|
||||||
|
#endif
|
||||||
unsigned long mmap_base; /* base of mmap area */
|
unsigned long mmap_base; /* base of mmap area */
|
||||||
unsigned long task_size; /* size of task vm space */
|
unsigned long task_size; /* size of task vm space */
|
||||||
unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */
|
unsigned long cached_hole_size; /* if non-zero, the largest hole below free_area_cache */
|
||||||
|
|
|
@ -377,6 +377,8 @@ extern int sysctl_max_map_count;
|
||||||
|
|
||||||
#include <linux/aio.h>
|
#include <linux/aio.h>
|
||||||
|
|
||||||
|
#ifdef CONFIG_MMU
|
||||||
|
extern void arch_pick_mmap_layout(struct mm_struct *mm);
|
||||||
extern unsigned long
|
extern unsigned long
|
||||||
arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
|
arch_get_unmapped_area(struct file *, unsigned long, unsigned long,
|
||||||
unsigned long, unsigned long);
|
unsigned long, unsigned long);
|
||||||
|
@ -386,6 +388,9 @@ arch_get_unmapped_area_topdown(struct file *filp, unsigned long addr,
|
||||||
unsigned long flags);
|
unsigned long flags);
|
||||||
extern void arch_unmap_area(struct mm_struct *, unsigned long);
|
extern void arch_unmap_area(struct mm_struct *, unsigned long);
|
||||||
extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long);
|
extern void arch_unmap_area_topdown(struct mm_struct *, unsigned long);
|
||||||
|
#else
|
||||||
|
static inline void arch_pick_mmap_layout(struct mm_struct *mm) {}
|
||||||
|
#endif
|
||||||
|
|
||||||
#if USE_SPLIT_PTLOCKS
|
#if USE_SPLIT_PTLOCKS
|
||||||
/*
|
/*
|
||||||
|
@ -2491,8 +2496,6 @@ static inline void set_task_cpu(struct task_struct *p, unsigned int cpu)
|
||||||
|
|
||||||
#endif /* CONFIG_SMP */
|
#endif /* CONFIG_SMP */
|
||||||
|
|
||||||
extern void arch_pick_mmap_layout(struct mm_struct *mm);
|
|
||||||
|
|
||||||
#ifdef CONFIG_TRACING
|
#ifdef CONFIG_TRACING
|
||||||
extern void
|
extern void
|
||||||
__trace_special(void *__tr, void *__data,
|
__trace_special(void *__tr, void *__data,
|
||||||
|
|
21
mm/nommu.c
21
mm/nommu.c
|
@ -1760,27 +1760,6 @@ void unmap_mapping_range(struct address_space *mapping,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(unmap_mapping_range);
|
EXPORT_SYMBOL(unmap_mapping_range);
|
||||||
|
|
||||||
/*
|
|
||||||
* ask for an unmapped area at which to create a mapping on a file
|
|
||||||
*/
|
|
||||||
unsigned long get_unmapped_area(struct file *file, unsigned long addr,
|
|
||||||
unsigned long len, unsigned long pgoff,
|
|
||||||
unsigned long flags)
|
|
||||||
{
|
|
||||||
unsigned long (*get_area)(struct file *, unsigned long, unsigned long,
|
|
||||||
unsigned long, unsigned long);
|
|
||||||
|
|
||||||
get_area = current->mm->get_unmapped_area;
|
|
||||||
if (file && file->f_op && file->f_op->get_unmapped_area)
|
|
||||||
get_area = file->f_op->get_unmapped_area;
|
|
||||||
|
|
||||||
if (!get_area)
|
|
||||||
return -ENOSYS;
|
|
||||||
|
|
||||||
return get_area(file, addr, len, pgoff, flags);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(get_unmapped_area);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check that a process has enough memory to allocate a new virtual
|
* Check that a process has enough memory to allocate a new virtual
|
||||||
* mapping. 0 means there is enough memory for the allocation to
|
* mapping. 0 means there is enough memory for the allocation to
|
||||||
|
|
|
@ -220,7 +220,7 @@ char *strndup_user(const char __user *s, long n)
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(strndup_user);
|
EXPORT_SYMBOL(strndup_user);
|
||||||
|
|
||||||
#ifndef HAVE_ARCH_PICK_MMAP_LAYOUT
|
#if defined(CONFIG_MMU) && !defined(HAVE_ARCH_PICK_MMAP_LAYOUT)
|
||||||
void arch_pick_mmap_layout(struct mm_struct *mm)
|
void arch_pick_mmap_layout(struct mm_struct *mm)
|
||||||
{
|
{
|
||||||
mm->mmap_base = TASK_UNMAPPED_BASE;
|
mm->mmap_base = TASK_UNMAPPED_BASE;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче