On 1/30/20 3:31 AM, Kirill A. Shutemov wrote: ...
diff --git a/mm/huge_memory.c b/mm/huge_memory.c index 0a55dec68925..b1079aaa6f24 100644 --- a/mm/huge_memory.c +++ b/mm/huge_memory.c @@ -958,6 +958,11 @@ struct page *follow_devmap_pmd(struct vm_area_struct *vma, unsigned long addr, */ WARN_ONCE(flags & FOLL_COW, "mm: In follow_devmap_pmd with FOLL_COW set");
- /* FOLL_GET and FOLL_PIN are mutually exclusive. */
- if (WARN_ON_ONCE((flags & (FOLL_PIN | FOLL_GET)) ==
(FOLL_PIN | FOLL_GET)))
Too many parentheses.
OK, I'll remove at least one. :)
I see two.
ah, correction: actually, the original statement has exactly the right number of parentheses. The relevant C precedence order is: == & |
...which means that both "&" and "|" operations need parentheses protection from the higher precedence "==" operation.
(There are other places in the kernel that have this exact pattern, too, with the same pattern of parentheses that I'm using, of course.)
thanks,