mm: shrinker: make shrinker not depend on memcg kmem
[linux-2.6-block.git] / mm / mmap.c
index 7e8c3e8ae75f123e7782444127aa91264b83417e..6bc21fca20bc388e5527d2b8ec30e5a725747b31 100644 (file)
--- a/mm/mmap.c
+++ b/mm/mmap.c
@@ -1483,8 +1483,12 @@ unsigned long do_mmap(struct file *file, unsigned long addr,
                case MAP_SHARED_VALIDATE:
                        if (flags & ~flags_mask)
                                return -EOPNOTSUPP;
-                       if ((prot&PROT_WRITE) && !(file->f_mode&FMODE_WRITE))
-                               return -EACCES;
+                       if (prot & PROT_WRITE) {
+                               if (!(file->f_mode & FMODE_WRITE))
+                                       return -EACCES;
+                               if (IS_SWAPFILE(file->f_mapping->host))
+                                       return -ETXTBSY;
+                       }
 
                        /*
                         * Make sure we don't allow writing to an append-only