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:
3484563
)
mm: hugetlb: fix non-atomic enqueue of huge page
author
Hillf Danton
<
[email protected]
>
Wed, 28 Dec 2011 23:57:16 +0000
(15:57 -0800)
committer
Linus Torvalds
<
[email protected]
>
Fri, 30 Dec 2011 00:31:57 +0000
(16:31 -0800)
If a huge page is enqueued under the protection of hugetlb_lock, then the
operation is atomic and safe.
Signed-off-by: Hillf Danton <
[email protected]
>
Reviewed-by: Michal Hocko <
[email protected]
>
Acked-by: KAMEZAWA Hiroyuki <
[email protected]
>
Cc: <
[email protected]
> [2.6.37+]
Signed-off-by: Andrew Morton <
[email protected]
>
Signed-off-by: Linus Torvalds <
[email protected]
>
mm/hugetlb.c
patch
|
blob
|
history
diff --git
a/mm/hugetlb.c
b/mm/hugetlb.c
index 73f17c0293c0a0e57a62f65f11c969b9319532f5..2316840b337a37447d2d8cbe294f53df71e53575 100644
(file)
--- a/
mm/hugetlb.c
+++ b/
mm/hugetlb.c
@@
-901,7
+901,6
@@
retry:
h->resv_huge_pages += delta;
ret = 0;
- spin_unlock(&hugetlb_lock);
/* Free the needed pages to the hugetlb pool */
list_for_each_entry_safe(page, tmp, &surplus_list, lru) {
if ((--needed) < 0)
@@
-915,6
+914,7
@@
retry:
VM_BUG_ON(page_count(page));
enqueue_huge_page(h, page);
}
+ spin_unlock(&hugetlb_lock);
/* Free unnecessary surplus pages to the buddy allocator */
free: