projects
/
openwrt
/
staging
/
blogic.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
8375ad9
)
rmap: recompute pgoff for unmapping huge page
author
Hillf Danton
<
[email protected]
>
Mon, 29 Apr 2013 22:06:14 +0000
(15:06 -0700)
committer
Linus Torvalds
<
[email protected]
>
Mon, 29 Apr 2013 22:54:28 +0000
(15:54 -0700)
We have to recompute pgoff if the given page is huge, since result based
on HPAGE_SIZE is not approapriate for scanning the vma interval tree, as
shown by commit
36e4f20af833
("hugetlb: do not use vma_hugecache_offset()
for vma_prio_tree_foreach").
Signed-off-by: Hillf Danton <
[email protected]
>
Cc: Michal Hocko <
[email protected]
>
Cc: Michel Lespinasse <
[email protected]
>
Signed-off-by: Andrew Morton <
[email protected]
>
Signed-off-by: Linus Torvalds <
[email protected]
>
mm/rmap.c
patch
|
blob
|
history
diff --git
a/mm/rmap.c
b/mm/rmap.c
index 807c96bf0dc6d08cdc167ce432a68999b1e21692..6280da86b5d6761ed8a245c3fadb6e42015216c5 100644
(file)
--- a/
mm/rmap.c
+++ b/
mm/rmap.c
@@
-1513,6
+1513,9
@@
static int try_to_unmap_file(struct page *page, enum ttu_flags flags)
unsigned long max_nl_size = 0;
unsigned int mapcount;
+ if (PageHuge(page))
+ pgoff = page->index << compound_order(page);
+
mutex_lock(&mapping->i_mmap_mutex);
vma_interval_tree_foreach(vma, &mapping->i_mmap, pgoff, pgoff) {
unsigned long address = vma_address(page, vma);