projects
/
powerpc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
sh: Add flag for MMU PTEA capability.
[powerpc.git]
/
mm
/
nommu.c
diff --git
a/mm/nommu.c
b/mm/nommu.c
index
db45efa
..
d99dea3
100644
(file)
--- a/
mm/nommu.c
+++ b/
mm/nommu.c
@@
-1070,6
+1070,7
@@
int remap_pfn_range(struct vm_area_struct *vma, unsigned long from,
vma->vm_start = vma->vm_pgoff << PAGE_SHIFT;
return 0;
}
vma->vm_start = vma->vm_pgoff << PAGE_SHIFT;
return 0;
}
+EXPORT_SYMBOL(remap_pfn_range);
void swap_unplug_io_fn(struct backing_dev_info *bdi, struct page *page)
{
void swap_unplug_io_fn(struct backing_dev_info *bdi, struct page *page)
{
@@
-1090,6
+1091,7
@@
void unmap_mapping_range(struct address_space *mapping,
int even_cows)
{
}
int even_cows)
{
}
+EXPORT_SYMBOL(unmap_mapping_range);
/*
* Check that a process has enough memory to allocate a new virtual
/*
* Check that a process has enough memory to allocate a new virtual
@@
-1122,7
+1124,7
@@
int __vm_enough_memory(long pages, int cap_sys_admin)
if (sysctl_overcommit_memory == OVERCOMMIT_GUESS) {
unsigned long n;
if (sysctl_overcommit_memory == OVERCOMMIT_GUESS) {
unsigned long n;
- free = g
et_page_cache_size(
);
+ free = g
lobal_page_state(NR_FILE_PAGES
);
free += nr_swap_pages;
/*
free += nr_swap_pages;
/*
@@
-1131,7
+1133,7
@@
int __vm_enough_memory(long pages, int cap_sys_admin)
* which are reclaimable, under pressure. The dentry
* cache and most inode caches should fall into this
*/
* which are reclaimable, under pressure. The dentry
* cache and most inode caches should fall into this
*/
- free +=
atomic_read(&slab_reclaim_pages
);
+ free +=
global_page_state(NR_SLAB_RECLAIMABLE
);
/*
* Leave the last 3% for root
/*
* Leave the last 3% for root
@@
-1147,14
+1149,26
@@
int __vm_enough_memory(long pages, int cap_sys_admin)
* only call if we're about to fail.
*/
n = nr_free_pages();
* only call if we're about to fail.
*/
n = nr_free_pages();
+
+ /*
+ * Leave reserved pages. The pages are not for anonymous pages.
+ */
+ if (n <= totalreserve_pages)
+ goto error;
+ else
+ n -= totalreserve_pages;
+
+ /*
+ * Leave the last 3% for root
+ */
if (!cap_sys_admin)
n -= n / 32;
free += n;
if (free > pages)
return 0;
if (!cap_sys_admin)
n -= n / 32;
free += n;
if (free > pages)
return 0;
- vm_unacct_memory(pages);
-
return -ENOMEM
;
+
+
goto error
;
}
allowed = totalram_pages * sysctl_overcommit_ratio / 100;
}
allowed = totalram_pages * sysctl_overcommit_ratio / 100;
@@
-1175,7
+1189,7
@@
int __vm_enough_memory(long pages, int cap_sys_admin)
*/
if (atomic_read(&vm_committed_space) < (long)allowed)
return 0;
*/
if (atomic_read(&vm_committed_space) < (long)allowed)
return 0;
-
+error:
vm_unacct_memory(pages);
return -ENOMEM;
vm_unacct_memory(pages);
return -ENOMEM;