Commit:     a6f36be32622730710b2fadacb6e2649defa4371
Parent:     e47c222b22cd53c317a5573e1dc5f9e0cbd46380
Author:     Russell King <[EMAIL PROTECTED]>
AuthorDate: Sat Dec 30 22:24:19 2006 +0000
Committer:  Russell King <[EMAIL PROTECTED]>
CommitDate: Mon Jan 8 19:49:54 2007 +0000

    [ARM] pass vma for flush_anon_page()
    Since get_user_pages() may be used with processes other than the
    current process and calls flush_anon_page(), flush_anon_page() has to
    cope in some way with non-current processes.
    It may not be appropriate, or even desirable to flush a region of
    virtual memory cache in the current process when that is different to
    the process that we want the flush to occur for.
    Therefore, pass the vma into flush_anon_page() so that the architecture
    can work out whether the 'vmaddr' is for the current process or not.
    Signed-off-by: Russell King <[EMAIL PROTECTED]>
 Documentation/cachetlb.txt      |    5 +++--
 include/asm-parisc/cacheflush.h |    2 +-
 include/linux/highmem.h         |    2 +-
 mm/memory.c                     |    2 +-
 4 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/Documentation/cachetlb.txt b/Documentation/cachetlb.txt
index 73e794f..debf681 100644
--- a/Documentation/cachetlb.txt
+++ b/Documentation/cachetlb.txt
@@ -373,14 +373,15 @@ maps this page at its virtual address.
        likely that you will need to flush the instruction cache
        for copy_to_user_page().
-  void flush_anon_page(struct page *page, unsigned long vmaddr)
+  void flush_anon_page(struct vm_area_struct *vma, struct page *page,
+                       unsigned long vmaddr)
        When the kernel needs to access the contents of an anonymous
        page, it calls this function (currently only
        get_user_pages()).  Note: flush_dcache_page() deliberately
        doesn't work for an anonymous page.  The default
        implementation is a nop (and should remain so for all coherent
        architectures).  For incoherent architectures, it should flush
-       the cache of the page at vmaddr in the current user process.
+       the cache of the page at vmaddr.
   void flush_kernel_dcache_page(struct page *page)
        When the kernel needs to modify a user page is has obtained
diff --git a/include/asm-parisc/cacheflush.h b/include/asm-parisc/cacheflush.h
index aedb051..a799dd8 100644
--- a/include/asm-parisc/cacheflush.h
+++ b/include/asm-parisc/cacheflush.h
@@ -186,7 +186,7 @@ flush_cache_page(struct vm_area_struct *vma, unsigned long 
vmaddr, unsigned long
 static inline void
-flush_anon_page(struct page *page, unsigned long vmaddr)
+flush_anon_page(struct vm_area_struct *vma, struct page *page, unsigned long 
        if (PageAnon(page))
diff --git a/include/linux/highmem.h b/include/linux/highmem.h
index ca9a602..645d440 100644
--- a/include/linux/highmem.h
+++ b/include/linux/highmem.h
@@ -8,7 +8,7 @@
 #include <asm/cacheflush.h>
-static inline void flush_anon_page(struct page *page, unsigned long vmaddr)
+static inline void flush_anon_page(struct vm_area_struct *vma, struct page 
*page, unsigned long vmaddr)
diff --git a/mm/memory.c b/mm/memory.c
index 563792f..af227d2 100644
--- a/mm/memory.c
+++ b/mm/memory.c
@@ -1091,7 +1091,7 @@ int get_user_pages(struct task_struct *tsk, struct 
mm_struct *mm,
                        if (pages) {
                                pages[i] = page;
-                               flush_anon_page(page, start);
+                               flush_anon_page(vma, page, start);
                        if (vmas)
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at

Reply via email to