On Mon, Mar 09 2015, David Rientjes wrote: > If __get_user_pages() is faulting a significant number of hugetlb pages, > usually as the result of mmap(MAP_LOCKED), it can potentially allocate a > very large amount of memory. > > If the process has been oom killed, this will cause a lot of memory to > be overcharged to its memcg since it has access to memory reserves or > could potentially deplete all system memory reserves. s/memcg/hugetlb_cgroup/ but I don't think hugetlb has any fatal_signal_pending() based overcharging. I no objection to the patch, but this doesn't seems like a cgroup thing, so the commit log could stand a tweak. > In the same way that commit 4779280d1ea4 ("mm: make get_user_pages() > interruptible") aborted for pending SIGKILLs when faulting non-hugetlb > memory, based on the premise of commit 462e00cc7151 ("oom: stop > allocating user memory if TIF_MEMDIE is set"), hugetlb page faults now > terminate when the process has been oom killed. > > Cc: Naoya Horiguchi <n-horiguchi@xxxxxxxxxxxxx> > Cc: Davidlohr Bueso <dave@xxxxxxxxxxxx> > Cc: "Kirill A. Shutemov" <kirill@xxxxxxxxxxxxx> > Signed-off-by: David Rientjes <rientjes@xxxxxxxxxx> > --- > v2: check signal inside follow_huegtlb_page() loop per Kirill > > mm/hugetlb.c | 9 +++++++++ > 1 file changed, 9 insertions(+) > > diff --git a/mm/hugetlb.c b/mm/hugetlb.c > --- a/mm/hugetlb.c > +++ b/mm/hugetlb.c > @@ -3276,6 +3276,15 @@ long follow_hugetlb_page(struct mm_struct *mm, struct vm_area_struct *vma, > struct page *page; > > /* > + * If we have a pending SIGKILL, don't keep faulting pages and > + * potentially allocating memory. > + */ > + if (unlikely(fatal_signal_pending(current))) { > + remainder = 0; > + break; > + } > + > + /* > * Some archs (sparc64, sh*) have multiple pte_ts to > * each hugepage. We have to make sure we get the > * first, for the page indexing below to work. -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>