Skip to content
  • Kirill A. Shutemov's avatar
    mm: consolidate all page-flags helpers in <linux/page-flags.h> · e8c6158f
    Kirill A. Shutemov authored
    
    
    Currently we take a naive approach to page flags on compound pages - we
    set the flag on the page without consideration if the flag makes sense
    for tail page or for compound page in general.  This patchset try to
    sort this out by defining per-flag policy on what need to be done if
    page-flag helper operate on compound page.
    
    The last patch in the patchset also sanitizes usege of page->mapping for
    tail pages.  We don't define the meaning of page->mapping for tail
    pages.  Currently it's always NULL, which can be inconsistent with head
    page and potentially lead to problems.
    
    For now I caught one case of illegal usage of page flags or ->mapping:
    sound subsystem allocates pages with __GFP_COMP and maps them with PTEs.
    It leads to setting dirty bit on tail pages and access to tail_page's
    ->mapping.  I don't see any bad behaviour caused by this, but worth
    fixing anyway.
    
    This patchset makes more sense if you take my THP refcounting into
    account: we will see more compound pages mapped with PTEs and we need to
    define behaviour of flags on compound pages to avoid bugs.
    
    This patch (of 16):
    
    We have page-flags helper function declarations/definitions spread over
    several header files.  Let's consolidate them in <linux/page-flags.h>.
    
    Signed-off-by: default avatarKirill A. Shutemov <kirill.shutemov@linux.intel.com>
    Cc: Andrea Arcangeli <aarcange@redhat.com>
    Acked-by: default avatarHugh Dickins <hughd@google.com>
    Cc: Dave Hansen <dave.hansen@intel.com>
    Cc: Mel Gorman <mgorman@suse.de>
    Cc: Rik van Riel <riel@redhat.com>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Christoph Lameter <cl@linux.com>
    Cc: Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Steve Capper <steve.capper@linaro.org>
    Cc: "Aneesh Kumar K.V" <aneesh.kumar@linux.vnet.ibm.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Michal Hocko <mhocko@suse.cz>
    Cc: Jerome Marchand <jmarchan@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    e8c6158f