hugetlb: fix overcommit locking
proc_doulongvec_minmax() calls copy_to_user()/copy_from_user(), so we can't hold hugetlb_lock over the call. Use a dummy variable to store the sysctl result, like in hugetlb_sysctl_handler(), then grab the lock to update nr_overcommit_huge_pages. Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> Reported-by: Miles Lane <miles.lane@gmail.com> Cc: Adam Litke <agl@us.ibm.com> Cc: David Gibson <david@gibson.dropbear.id.au> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
committed by
Linus Torvalds
parent
2695a14d31
commit
064d9efe94
@ -978,8 +978,8 @@ static struct ctl_table vm_table[] = {
|
||||
{
|
||||
.ctl_name = CTL_UNNUMBERED,
|
||||
.procname = "nr_overcommit_hugepages",
|
||||
.data = &nr_overcommit_huge_pages,
|
||||
.maxlen = sizeof(nr_overcommit_huge_pages),
|
||||
.data = &sysctl_overcommit_huge_pages,
|
||||
.maxlen = sizeof(sysctl_overcommit_huge_pages),
|
||||
.mode = 0644,
|
||||
.proc_handler = &hugetlb_overcommit_handler,
|
||||
},
|
||||
|
Reference in New Issue
Block a user