patch-2.2.18 linux/mm/mmap.c
Next file: linux/mm/slab.c
Previous file: linux/mm/memory.c
Back to the patch index
Back to the overall index
- Lines: 43
- Date:
Wed Sep 13 16:48:19 2000
- Orig file:
v2.2.17/mm/mmap.c
- Orig date:
Sun Jun 11 21:44:23 2000
diff -u --new-file --recursive --exclude-from /usr/src/exclude v2.2.17/mm/mmap.c linux/mm/mmap.c
@@ -70,7 +70,7 @@
return free > pages;
}
-/* Remove one vm structure from the inode's i_mmap ring. */
+/* Remove one vm structure from the inode's i_mmap{,_shared} ring. */
static inline void remove_shared_vm_struct(struct vm_area_struct *vma)
{
struct file * file = vma->vm_file;
@@ -755,7 +755,7 @@
}
/* Insert vm structure into process list sorted by address
- * and into the inode's i_mmap ring.
+ * and into the inode's i_mmap{,_shared} ring.
*/
void insert_vm_struct(struct mm_struct *mm, struct vm_area_struct *vmp)
{
@@ -783,14 +783,20 @@
file = vmp->vm_file;
if (file) {
struct inode * inode = file->f_dentry->d_inode;
+ struct vm_area_struct **head;
+
if (vmp->vm_flags & VM_DENYWRITE)
inode->i_writecount--;
+ head = &inode->i_mmap;
+ if (vmp->vm_flags & VM_SHARED)
+ head = &inode->i_mmap_shared;
+
/* insert vmp into inode's share list */
- if((vmp->vm_next_share = inode->i_mmap) != NULL)
- inode->i_mmap->vm_pprev_share = &vmp->vm_next_share;
- inode->i_mmap = vmp;
- vmp->vm_pprev_share = &inode->i_mmap;
+ if((vmp->vm_next_share = *head) != NULL)
+ (*head)->vm_pprev_share = &vmp->vm_next_share;
+ *head = vmp;
+ vmp->vm_pprev_share = head;
}
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)