From: Dave Hansen <[email protected]>

Kirill reported that he hit:
>> +    if (vma || addr) {
>> +            WARN_ON_ONCE(!addr || addr == -1);
>
> Trinity triggered the WARN for me:

This was just a dumb mistake. I put the WARN_ON() in and planned to
have addr=0 mean "use nid". But, I realized pretty quickly that addr=0
_is_ a valid place to fault. So I made it addr=-1 in
__alloc_buddy_huge_page_no_mpol(), but I did not fix up the WARN_ON().

So hitting the warning in this case was harmless.  But, fix up the
warning condition.

Cc: Kirill A. Shutemov <[email protected]>
Cc: Andrew Morton <[email protected]>
Cc: Naoya Horiguchi <[email protected]>
Cc: Mike Kravetz <[email protected]>
Cc: Hillf Danton <[email protected]>
Cc: David Rientjes <[email protected]>
Cc: [email protected]
Cc: [email protected]
Signed-off-by: Dave Hansen <[email protected]>

---

 b/mm/hugetlb.c |   10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff -puN mm/hugetlb.c~hugetlbfs-fix-warn mm/hugetlb.c
--- a/mm/hugetlb.c~hugetlbfs-fix-warn   2015-10-21 14:40:15.809961389 -0700
+++ b/mm/hugetlb.c      2015-10-21 14:40:15.814961616 -0700
@@ -1520,8 +1520,14 @@ static struct page *__alloc_buddy_huge_p
        if (hstate_is_gigantic(h))
                return NULL;
 
-       if (vma || addr) {
-               VM_WARN_ON_ONCE(!addr || addr == -1);
+       /*
+        * Make sure that anyone specifying 'nid' is not also
+        * specifying a VMA.  This makes sure the caller is
+        * picking _one_ of the modes with which we can call this
+        * function, not both.
+        */
+       if (vma || (addr != -1)) {
+               VM_WARN_ON_ONCE(addr == -1);
                VM_WARN_ON_ONCE(nid != NUMA_NO_NODE);
        }
        /*
_
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to