mm: don't rely on flags coincidence
authorHugh Dickins <hugh.dickins@tiscali.co.uk>
Tue, 23 Jun 2009 12:52:49 +0000 (13:52 +0100)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 23 Jun 2009 18:23:33 +0000 (11:23 -0700)
Indeed FOLL_WRITE matches FAULT_FLAG_WRITE, matches GUP_FLAGS_WRITE,
and it's tempting to devise a set of Grand Unified Paging flags;
but not today.  So until then, let's rely upon the compiler to spot
the coincidence, "rather than have that subtle dependency and a
comment for it" - as you remarked in another context yesterday.

Signed-off-by: Hugh Dickins <hugh.dickins@tiscali.co.uk>
Acked-by: Wu Fengguang <fengguang.wu@intel.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
mm/memory.c

index 98bcb90d5957010ada3218c06117cc797aa81813..50da9511aa776dd7fb005581454a9b2becdccb9f 100644 (file)
@@ -1311,8 +1311,10 @@ int __get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
                        while (!(page = follow_page(vma, start, foll_flags))) {
                                int ret;
 
-                               /* FOLL_WRITE matches FAULT_FLAG_WRITE! */
-                               ret = handle_mm_fault(mm, vma, start, foll_flags & FOLL_WRITE);
+                               ret = handle_mm_fault(mm, vma, start,
+                                       (foll_flags & FOLL_WRITE) ?
+                                       FAULT_FLAG_WRITE : 0);
+
                                if (ret & VM_FAULT_ERROR) {
                                        if (ret & VM_FAULT_OOM)
                                                return i ? i : -ENOMEM;