]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - mm/nommu.c
mm, oom: rework oom detection
[mirror_ubuntu-artful-kernel.git] / mm / nommu.c
index ab14a2014dea76b62e77b0176d810037e1c76788..29179f7059b5c88d48064755ff3ec98e0e649959 100644 (file)
@@ -578,16 +578,16 @@ static noinline void validate_nommu_regions(void)
                return;
 
        last = rb_entry(lastp, struct vm_region, vm_rb);
-       BUG_ON(unlikely(last->vm_end <= last->vm_start));
-       BUG_ON(unlikely(last->vm_top < last->vm_end));
+       BUG_ON(last->vm_end <= last->vm_start);
+       BUG_ON(last->vm_top < last->vm_end);
 
        while ((p = rb_next(lastp))) {
                region = rb_entry(p, struct vm_region, vm_rb);
                last = rb_entry(lastp, struct vm_region, vm_rb);
 
-               BUG_ON(unlikely(region->vm_end <= region->vm_start));
-               BUG_ON(unlikely(region->vm_top < region->vm_end));
-               BUG_ON(unlikely(region->vm_start < last->vm_top));
+               BUG_ON(region->vm_end <= region->vm_start);
+               BUG_ON(region->vm_top < region->vm_end);
+               BUG_ON(region->vm_start < last->vm_top);
 
                lastp = p;
        }
@@ -671,7 +671,7 @@ static void __put_nommu_region(struct vm_region *region)
                up_write(&nommu_region_sem);
 
                if (region->vm_file)
-                       fput(region->vm_file);
+                       vmr_fput(region);
 
                /* IO memory and memory shared directly out of the pagecache
                 * from ramfs/tmpfs mustn't be released here */
@@ -829,7 +829,7 @@ static void delete_vma(struct mm_struct *mm, struct vm_area_struct *vma)
        if (vma->vm_ops && vma->vm_ops->close)
                vma->vm_ops->close(vma);
        if (vma->vm_file)
-               fput(vma->vm_file);
+               vma_fput(vma);
        put_nommu_region(vma->vm_region);
        kmem_cache_free(vm_area_cachep, vma);
 }
@@ -1355,7 +1355,7 @@ unsigned long do_mmap(struct file *file,
                                        goto error_just_free;
                                }
                        }
-                       fput(region->vm_file);
+                       vmr_fput(region);
                        kmem_cache_free(vm_region_jar, region);
                        region = pregion;
                        result = start;
@@ -1430,10 +1430,10 @@ error_just_free:
        up_write(&nommu_region_sem);
 error:
        if (region->vm_file)
-               fput(region->vm_file);
+               vmr_fput(region);
        kmem_cache_free(vm_region_jar, region);
        if (vma->vm_file)
-               fput(vma->vm_file);
+               vma_fput(vma);
        kmem_cache_free(vm_area_cachep, vma);
        return ret;
 
@@ -1497,7 +1497,7 @@ SYSCALL_DEFINE1(old_mmap, struct mmap_arg_struct __user *, arg)
 
        if (copy_from_user(&a, arg, sizeof(a)))
                return -EFAULT;
-       if (a.offset & ~PAGE_MASK)
+       if (offset_in_page(a.offset))
                return -EINVAL;
 
        return sys_mmap_pgoff(a.addr, a.len, a.prot, a.flags, a.fd,
@@ -1653,9 +1653,9 @@ int do_munmap(struct mm_struct *mm, unsigned long start, size_t len)
                        goto erase_whole_vma;
                if (start < vma->vm_start || end > vma->vm_end)
                        return -EINVAL;
-               if (start & ~PAGE_MASK)
+               if (offset_in_page(start))
                        return -EINVAL;
-               if (end != vma->vm_end && end & ~PAGE_MASK)
+               if (end != vma->vm_end && offset_in_page(end))
                        return -EINVAL;
                if (start != vma->vm_start && end != vma->vm_end) {
                        ret = split_vma(mm, vma, start, 1);
@@ -1736,7 +1736,7 @@ static unsigned long do_mremap(unsigned long addr,
        if (old_len == 0 || new_len == 0)
                return (unsigned long) -EINVAL;
 
-       if (addr & ~PAGE_MASK)
+       if (offset_in_page(addr))
                return -EINVAL;
 
        if (flags & MREMAP_FIXED && new_addr != addr)