All of lore.kernel.org
 help / color / mirror / Atom feed
* [parisc-linux] Proposed changes to flush_dcache_page to fix our shared ro mapping problem
@ 2003-08-23 16:25 James Bottomley
  0 siblings, 0 replies; only message in thread
From: James Bottomley @ 2003-08-23 16:25 UTC (permalink / raw)
  To: PARISC list

[-- Attachment #1: Type: text/plain, Size: 157 bytes --]

The attached should do it

(plus the fix to preserve the VM_MAYSHARE flag on remap).

I've verified that this fixes the glibc tst-mmap-eofsync test.

James


[-- Attachment #2: tmp.diff --]
[-- Type: text/plain, Size: 1346 bytes --]

===== arch/parisc/kernel/cache.c 1.4 vs edited =====
--- 1.4/arch/parisc/kernel/cache.c	Sat Mar  8 14:01:30 2003
+++ edited/arch/parisc/kernel/cache.c	Sat Aug 23 11:22:22 2003
@@ -232,7 +232,8 @@
 
 	if (!page->mapping)
 		return;
-
+	/* check shared list first if it's not empty...it's usually
+	 * the shortest */
 	list_for_each(l, &page->mapping->i_mmap_shared) {
 		struct vm_area_struct *mpnt;
 		unsigned long off;
@@ -243,6 +244,33 @@
 		 * If this VMA is not in our MM, we can ignore it.
 		 */
 		if (mpnt->vm_mm != mm)
+			continue;
+
+		if (page->index < mpnt->vm_pgoff)
+			continue;
+
+		off = page->index - mpnt->vm_pgoff;
+		if (off >= (mpnt->vm_end - mpnt->vm_start) >> PAGE_SHIFT)
+			continue;
+
+		flush_cache_page(mpnt, mpnt->vm_start + (off << PAGE_SHIFT));
+
+		/* All user shared mappings should be equivalently mapped,
+		 * so once we've flushed one we should be ok
+		 */
+		return;
+	}
+
+	/* then check private mapping list for read only shared mappings
+	 * which are flagged by VM_MAYSHARE */
+	list_for_each(l, &page->mapping->i_mmap) {
+		struct vm_area_struct *mpnt;
+		unsigned long off;
+
+		mpnt = list_entry(l, struct vm_area_struct, shared);
+
+
+		if (mpnt->vm_mm != mm || !(mpnt->vm_flags & VM_MAYSHARE))
 			continue;
 
 		if (page->index < mpnt->vm_pgoff)

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2003-08-23 16:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-08-23 16:25 [parisc-linux] Proposed changes to flush_dcache_page to fix our shared ro mapping problem James Bottomley

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.