Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 14607
b: refs/heads/master
c: 0b14c17
h: refs/heads/master
i:
  14605: 17a09a3
  14603: d969f0f
  14599: 9ccd2fb
  14591: 0d7116b
v: v3
  • Loading branch information
Hugh Dickins authored and Linus Torvalds committed Nov 22, 2005
1 parent bd73ac2 commit c0a3932
Show file tree
Hide file tree
Showing 10 changed files with 31 additions and 25 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 664beed0190fae687ac51295694004902ddeb18e
refs/heads/master: 0b14c179a483e71ea41df2aa4a661760063115bd
3 changes: 1 addition & 2 deletions trunk/arch/powerpc/kernel/vdso.c
Original file line number Diff line number Diff line change
Expand Up @@ -285,8 +285,7 @@ int arch_setup_additional_pages(struct linux_binprm *bprm,
* It's fine to use that for setting breakpoints in the vDSO code
* pages though
*/
vma->vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE |
VM_MAYEXEC | VM_RESERVED;
vma->vm_flags = VM_READ | VM_EXEC | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC;
vma->vm_flags |= mm->def_flags;
vma->vm_page_prot = protection_map[vma->vm_flags & 0x7];
vma->vm_ops = &vdso_vmops;
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/sparc/mm/generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT;

/* See comment in mm/memory.c remap_pfn_range */
vma->vm_flags |= VM_IO | VM_RESERVED;
vma->vm_flags |= VM_IO | VM_RESERVED | VM_UNPAGED;

prot = __pgprot(pg_iobits);
offset -= from;
Expand Down
2 changes: 1 addition & 1 deletion trunk/arch/sparc64/mm/generic.c
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ int io_remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
unsigned long offset = GET_PFN(pfn) << PAGE_SHIFT;

/* See comment in mm/memory.c remap_pfn_range */
vma->vm_flags |= VM_IO | VM_RESERVED;
vma->vm_flags |= VM_IO | VM_RESERVED | VM_UNPAGED;

prot = __pgprot(pg_iobits);
offset -= from;
Expand Down
5 changes: 3 additions & 2 deletions trunk/include/linux/mm.h
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@ extern unsigned int kobjsize(const void *objp);

#define VM_GROWSDOWN 0x00000100 /* general info on the segment */
#define VM_GROWSUP 0x00000200
#define VM_SHM 0x00000400 /* shared memory area, don't swap out */
#define VM_SHM 0x00000000 /* Means nothing: delete it later */
#define VM_UNPAGED 0x00000400 /* Pages managed without map count */
#define VM_DENYWRITE 0x00000800 /* ETXTBSY on write attempts.. */

#define VM_EXECUTABLE 0x00001000
Expand All @@ -157,7 +158,7 @@ extern unsigned int kobjsize(const void *objp);

#define VM_DONTCOPY 0x00020000 /* Do not copy this vma on fork */
#define VM_DONTEXPAND 0x00040000 /* Cannot expand with mremap() */
#define VM_RESERVED 0x00080000 /* Pages managed in a special way */
#define VM_RESERVED 0x00080000 /* Count as reserved_vm like IO */
#define VM_ACCOUNT 0x00100000 /* Is a VM accounted object */
#define VM_HUGETLB 0x00400000 /* Huge TLB Page VM */
#define VM_NONLINEAR 0x00800000 /* Is non-linear (remap_file_pages) */
Expand Down
4 changes: 2 additions & 2 deletions trunk/mm/fremap.c
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ int install_page(struct mm_struct *mm, struct vm_area_struct *vma,
pte_t pte_val;
spinlock_t *ptl;

BUG_ON(vma->vm_flags & VM_RESERVED);
BUG_ON(vma->vm_flags & VM_UNPAGED);

pgd = pgd_offset(mm, addr);
pud = pud_alloc(mm, pgd, addr);
Expand Down Expand Up @@ -122,7 +122,7 @@ int install_file_pte(struct mm_struct *mm, struct vm_area_struct *vma,
pte_t pte_val;
spinlock_t *ptl;

BUG_ON(vma->vm_flags & VM_RESERVED);
BUG_ON(vma->vm_flags & VM_UNPAGED);

pgd = pgd_offset(mm, addr);
pud = pud_alloc(mm, pgd, addr);
Expand Down
2 changes: 1 addition & 1 deletion trunk/mm/madvise.c
Original file line number Diff line number Diff line change
Expand Up @@ -126,7 +126,7 @@ static long madvise_dontneed(struct vm_area_struct * vma,
unsigned long start, unsigned long end)
{
*prev = vma;
if (vma->vm_flags & (VM_LOCKED|VM_HUGETLB|VM_RESERVED))
if (vma->vm_flags & (VM_LOCKED|VM_HUGETLB|VM_UNPAGED))
return -EINVAL;

if (unlikely(vma->vm_flags & VM_NONLINEAR)) {
Expand Down
30 changes: 18 additions & 12 deletions trunk/mm/memory.c
Original file line number Diff line number Diff line change
Expand Up @@ -334,7 +334,7 @@ static inline void add_mm_rss(struct mm_struct *mm, int file_rss, int anon_rss)

/*
* This function is called to print an error when a pte in a
* !VM_RESERVED region is found pointing to an invalid pfn (which
* !VM_UNPAGED region is found pointing to an invalid pfn (which
* is an error.
*
* The calling function must still handle the error.
Expand Down Expand Up @@ -381,15 +381,15 @@ copy_one_pte(struct mm_struct *dst_mm, struct mm_struct *src_mm,
goto out_set_pte;
}

/* If the region is VM_RESERVED, the mapping is not
/* If the region is VM_UNPAGED, the mapping is not
* mapped via rmap - duplicate the pte as is.
*/
if (vm_flags & VM_RESERVED)
if (vm_flags & VM_UNPAGED)
goto out_set_pte;

pfn = pte_pfn(pte);
/* If the pte points outside of valid memory but
* the region is not VM_RESERVED, we have a problem.
* the region is not VM_UNPAGED, we have a problem.
*/
if (unlikely(!pfn_valid(pfn))) {
print_bad_pte(vma, pte, addr);
Expand Down Expand Up @@ -528,7 +528,7 @@ int copy_page_range(struct mm_struct *dst_mm, struct mm_struct *src_mm,
* readonly mappings. The tradeoff is that copy_page_range is more
* efficient than faulting.
*/
if (!(vma->vm_flags & (VM_HUGETLB|VM_NONLINEAR|VM_RESERVED))) {
if (!(vma->vm_flags & (VM_HUGETLB|VM_NONLINEAR|VM_UNPAGED))) {
if (!vma->anon_vma)
return 0;
}
Expand Down Expand Up @@ -572,7 +572,7 @@ static unsigned long zap_pte_range(struct mmu_gather *tlb,

(*zap_work) -= PAGE_SIZE;

if (!(vma->vm_flags & VM_RESERVED)) {
if (!(vma->vm_flags & VM_UNPAGED)) {
unsigned long pfn = pte_pfn(ptent);
if (unlikely(!pfn_valid(pfn)))
print_bad_pte(vma, ptent, addr);
Expand Down Expand Up @@ -1191,10 +1191,16 @@ int remap_pfn_range(struct vm_area_struct *vma, unsigned long addr,
* rest of the world about it:
* VM_IO tells people not to look at these pages
* (accesses can have side effects).
* VM_RESERVED tells the core MM not to "manage" these pages
* (e.g. refcount, mapcount, try to swap them out).
* VM_RESERVED is specified all over the place, because
* in 2.4 it kept swapout's vma scan off this vma; but
* in 2.6 the LRU scan won't even find its pages, so this
* flag means no more than count its pages in reserved_vm,
* and omit it from core dump, even when VM_IO turned off.
* VM_UNPAGED tells the core MM not to "manage" these pages
* (e.g. refcount, mapcount, try to swap them out): in
* particular, zap_pte_range does not try to free them.
*/
vma->vm_flags |= VM_IO | VM_RESERVED;
vma->vm_flags |= VM_IO | VM_RESERVED | VM_UNPAGED;

BUG_ON(addr >= end);
pfn -= addr >> PAGE_SHIFT;
Expand Down Expand Up @@ -1276,7 +1282,7 @@ static int do_wp_page(struct mm_struct *mm, struct vm_area_struct *vma,
pte_t entry;
int ret = VM_FAULT_MINOR;

BUG_ON(vma->vm_flags & VM_RESERVED);
BUG_ON(vma->vm_flags & VM_UNPAGED);

if (unlikely(!pfn_valid(pfn))) {
/*
Expand Down Expand Up @@ -1924,7 +1930,7 @@ static int do_no_page(struct mm_struct *mm, struct vm_area_struct *vma,
inc_mm_counter(mm, anon_rss);
lru_cache_add_active(new_page);
page_add_anon_rmap(new_page, vma, address);
} else if (!(vma->vm_flags & VM_RESERVED)) {
} else if (!(vma->vm_flags & VM_UNPAGED)) {
inc_mm_counter(mm, file_rss);
page_add_file_rmap(new_page);
}
Expand Down Expand Up @@ -2203,7 +2209,7 @@ static int __init gate_vma_init(void)
gate_vma.vm_start = FIXADDR_USER_START;
gate_vma.vm_end = FIXADDR_USER_END;
gate_vma.vm_page_prot = PAGE_READONLY;
gate_vma.vm_flags = VM_RESERVED;
gate_vma.vm_flags = 0;
return 0;
}
__initcall(gate_vma_init);
Expand Down
2 changes: 1 addition & 1 deletion trunk/mm/mempolicy.c
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ check_range(struct mm_struct *mm, unsigned long start, unsigned long end,
first = find_vma(mm, start);
if (!first)
return ERR_PTR(-EFAULT);
if (first->vm_flags & VM_RESERVED)
if (first->vm_flags & VM_UNPAGED)
return ERR_PTR(-EACCES);
prev = NULL;
for (vma = first; vma && vma->vm_start < end; vma = vma->vm_next) {
Expand Down
4 changes: 2 additions & 2 deletions trunk/mm/msync.c
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,9 @@ static void msync_page_range(struct vm_area_struct *vma,
/* For hugepages we can't go walking the page table normally,
* but that's ok, hugetlbfs is memory based, so we don't need
* to do anything more on an msync().
* Can't do anything with VM_RESERVED regions either.
* Can't do anything with VM_UNPAGED regions either.
*/
if (vma->vm_flags & (VM_HUGETLB|VM_RESERVED))
if (vma->vm_flags & (VM_HUGETLB|VM_UNPAGED))
return;

BUG_ON(addr >= end);
Expand Down

0 comments on commit c0a3932

Please sign in to comment.