Linux Headquarters
[ Register ]
[ About us ] [ Home Page ]

Advertisement
[ Kernel ] [ Documentation ] [ Links ] [ Books ]

Advertisement

Kernel v2.4.0-test10 /mm/mmap.c

Filename:/mm/mmap.c
Lines Added:14
Lines Deleted:14
Also changed in: (Previous) 2.4.0-test8  2.4.0-test7  2.4.0-test5  2.4.0-test3  2.4.0-test2  2.2.0ac2 
(Following) 2.4.0-test11  2.4.0-test12  2.4.0-prerelease  2.4.1-pre12  2.4.1  2.4.1-ac1 

Location
[  2.4.0-test10
  [  mm
     o  mmap.c

Patch

diff -u --recursive --new-file v2.4.0-test9/linux/mm/mmap.c linux/mm/mmap.c
--- v2.4.0-test9/linux/mm/mmap.c   Tue Aug 29 12:41:12 2000
+++ linux/mm/mmap.c   Fri Oct 13 12:10:30 2000
@@ -317,12 +317,12 @@
     */
    flags = vma->vm_flags;
    addr = vma->vm_start; /* can addr have changed?? */
-   vmlist_modify_lock(mm);
+   spin_lock(&mm->page_table_lock);
    insert_vm_struct(mm, vma);
    if (correct_wcount)
       atomic_inc(&file->f_dentry->d_inode->i_writecount);
    merge_segments(mm, vma->vm_start, vma->vm_end);
-   vmlist_modify_unlock(mm);
+   spin_unlock(&mm->page_table_lock);
    
    mm->total_vm += len >> PAGE_SHIFT;
    if (flags & VM_LOCKED) {
@@ -534,11 +534,11 @@
    /* Work out to one of the ends. */
    if (end == area->vm_end) {
       area->vm_end = addr;
-      vmlist_modify_lock(mm);
+      spin_lock(&mm->page_table_lock);
    } else if (addr == area->vm_start) {
       area->vm_pgoff += (end - area->vm_start) >> PAGE_SHIFT;
       area->vm_start = end;
-      vmlist_modify_lock(mm);
+      spin_lock(&mm->page_table_lock);
    } else {
    /* Unmapping a hole: area->vm_start < addr <= end < area->vm_end */
       /* Add end mapping -- leave beginning for below */
@@ -560,12 +560,12 @@
       if (mpnt->vm_ops && mpnt->vm_ops->open)
          mpnt->vm_ops->open(mpnt);
       area->vm_end = addr;   /* Truncate area */
-      vmlist_modify_lock(mm);
+      spin_lock(&mm->page_table_lock);
       insert_vm_struct(mm, mpnt);
    }
 
    insert_vm_struct(mm, area);
-   vmlist_modify_unlock(mm);
+   spin_unlock(&mm->page_table_lock);
    return extra;
 }
 
@@ -670,7 +670,7 @@
 
    npp = (prev ? &prev->vm_next : &mm->mmap);
    free = NULL;
-   vmlist_modify_lock(mm);
+   spin_lock(&mm->page_table_lock);
    for ( ; mpnt && mpnt->vm_start < addr+len; mpnt = *npp) {
       *npp = mpnt->vm_next;
       mpnt->vm_next = free;
@@ -679,7 +679,7 @@
          avl_remove(mpnt, &mm->mmap_avl);
    }
    mm->mmap_cache = NULL;   /* Kill the cache. */
-   vmlist_modify_unlock(mm);
+   spin_unlock(&mm->page_table_lock);
 
    /* Ok - we have the memory areas we should free on the 'free' list,
     * so release them, and unmap the page range..
@@ -811,10 +811,10 @@
    flags = vma->vm_flags;
    addr = vma->vm_start;
 
-   vmlist_modify_lock(mm);
+   spin_lock(&mm->page_table_lock);
    insert_vm_struct(mm, vma);
    merge_segments(mm, vma->vm_start, vma->vm_end);
-   vmlist_modify_unlock(mm);
+   spin_unlock(&mm->page_table_lock);
    
    mm->total_vm += len >> PAGE_SHIFT;
    if (flags & VM_LOCKED) {
@@ -840,10 +840,10 @@
    struct vm_area_struct * mpnt;
 
    release_segments(mm);
+   spin_lock(&mm->page_table_lock);
    mpnt = mm->mmap;
-   vmlist_modify_lock(mm);
    mm->mmap = mm->mmap_avl = mm->mmap_cache = NULL;
-   vmlist_modify_unlock(mm);
+   spin_unlock(&mm->page_table_lock);
    mm->rss = 0;
    mm->total_vm = 0;
    mm->locked_vm = 0;
@@ -985,9 +985,9 @@
       if (mpnt->vm_ops && mpnt->vm_ops->close) {
          mpnt->vm_pgoff += (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT;
          mpnt->vm_start = mpnt->vm_end;
-         vmlist_modify_unlock(mm);
+         spin_unlock(&mm->page_table_lock);
          mpnt->vm_ops->close(mpnt);
-         vmlist_modify_lock(mm);
+         spin_lock(&mm->page_table_lock);
       }
       mm->map_count--;
       remove_shared_vm_struct(mpnt);


Comments: webmaster (at) linuxhq.com.
Advertising: banners (at) linuxhq.com.
Compilation ©1998-2008 Linux Headquarters, Inc.