From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-12.6 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 931CAC4727F for ; Mon, 28 Sep 2020 08:51:02 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id E5B9A2080C for ; Mon, 28 Sep 2020 08:51:01 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="e7SpeOXc" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org E5B9A2080C Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 012FE6B005D; Mon, 28 Sep 2020 04:51:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id F042B6B0062; Mon, 28 Sep 2020 04:51:00 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id DF4868E0001; Mon, 28 Sep 2020 04:51:00 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0112.hostedemail.com [216.40.44.112]) by kanga.kvack.org (Postfix) with ESMTP id C0F8F6B005D for ; Mon, 28 Sep 2020 04:51:00 -0400 (EDT) Received: from smtpin25.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with ESMTP id 7DE15180AD801 for ; Mon, 28 Sep 2020 08:51:00 +0000 (UTC) X-FDA: 77311850280.25.bath29_54158b727180 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin25.hostedemail.com (Postfix) with ESMTP id 2D3BF1804E3A8 for ; Mon, 28 Sep 2020 08:51:00 +0000 (UTC) X-HE-Tag: bath29_54158b727180 X-Filterd-Recvd-Size: 4642 Received: from mail-pf1-f196.google.com (mail-pf1-f196.google.com [209.85.210.196]) by imf43.hostedemail.com (Postfix) with ESMTP for ; Mon, 28 Sep 2020 08:50:59 +0000 (UTC) Received: by mail-pf1-f196.google.com with SMTP id k8so365826pfk.2 for ; Mon, 28 Sep 2020 01:50:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=ZDjTmD8WXSKHMRbSqfZC1xkl/k+jJPbBPKscEUWmXVo=; b=e7SpeOXcZjEd+0h/T9A5Kh+HBS8aO8yWGksPOS+HWKr8Z0FYdq6kbJX84iBnUuhiew WJuWvYcmBSLsdNz5tydO4YuXjLZQ6b6DBVu/GD/REKE9aJrogSALKEvo9999IwtaWq7F Kd7qQoK12VhqhxHGog2JwChpo7jvDjM3pVB23IVl9rVOTS7eYZ0ZmASboAZKe5bOAQjh V/BIfo6LCdI2fCpwo88VkMlk0oDD4nvlBmqsRvHD0+L+9WutRkkcr8KRpND6WFzQyDn/ 7OPTOmCj6TyuY4OFnm/ucUtsz24f4jwxVNS49VQB8L5jXD1ZV0Ds01hqp8w0/hBvtbus vnKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=ZDjTmD8WXSKHMRbSqfZC1xkl/k+jJPbBPKscEUWmXVo=; b=JPNae3HsE/4x3f/zj5OTgif60RThpY6Dg8DgoHD7at8wo3LQYbiRVNUhjFzKVfX/mE FWT3RD+6KbSLMiaBmjCQdjSprDXd3W3TBaUBfXyxAF7elrMhGbXzVG/htLjRaZfMylWr H8GC+WvEyX0CfNePEuqPo84Hw3pV1lmDLRUPrz4vGpxLuVE2zLxEzSUO9Xzu+W4UrHRs hoAZX9vQ7b1LGK4W+nsfC5EyUaP1z6Hdf9el9p6M3lHnazQyBQpWxHKPwaDPrlG2Uq06 QNdmx4MWPridD6Q0PXbjylXN+J/iLPdLN1aH8UQBV0ZsF/csTkIiFb2tJjc9UDIHQgCs /3sw== X-Gm-Message-State: AOAM532bZWs4FhfbX0zoKkgOF3p5J7+RGAZ/8i+aIbsBMAboeH4X0RoG c94JCZ3FPB4X4xoC1vkf4vY= X-Google-Smtp-Source: ABdhPJxQRM/bGZin9MRaO9UEh3gXWshfNO2JplvTsuCJwiLvJlWhunRZvrH4MjisGe9C6cDgaeE6Eg== X-Received: by 2002:a62:1d51:0:b029:13e:d13d:a0fc with SMTP id d78-20020a621d510000b029013ed13da0fcmr9674568pfd.24.1601283058629; Mon, 28 Sep 2020 01:50:58 -0700 (PDT) Received: from localhost.localdomain ([114.206.198.176]) by smtp.gmail.com with ESMTPSA id g26sm765251pfr.105.2020.09.28.01.50.55 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 28 Sep 2020 01:50:57 -0700 (PDT) From: js1304@gmail.com X-Google-Original-From: iamjoonsoo.kim@lge.com To: Andrew Morton Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org, Michal Hocko , Vlastimil Babka , "Aneesh Kumar K . V" , Mel Gorman , kernel-team@lge.com, Joonsoo Kim Subject: [PATCH v2 for v5.9] mm/page_alloc: handle a missing case for memalloc_nocma_{save/restore} APIs Date: Mon, 28 Sep 2020 17:50:46 +0900 Message-Id: <1601283046-15329-1-git-send-email-iamjoonsoo.kim@lge.com> X-Mailer: git-send-email 2.7.4 X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: From: Joonsoo Kim memalloc_nocma_{save/restore} APIs can be used to skip page allocation on CMA area, but, there is a missing case and the page on CMA area could be allocated even if APIs are used. This patch handles this case to fix the potential issue. Missing case is an allocation from the pcplist. MIGRATE_MOVABLE pcplist could have the pages on CMA area so we need to skip it if ALLOC_CMA isn't specified. Fixes: 8510e69c8efe (mm/page_alloc: fix memalloc_nocma_{save/restore} APIs) Signed-off-by: Joonsoo Kim --- mm/page_alloc.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/mm/page_alloc.c b/mm/page_alloc.c index fab5e97..104d2e1 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -3367,9 +3367,16 @@ struct page *rmqueue(struct zone *preferred_zone, struct page *page; if (likely(order == 0)) { - page = rmqueue_pcplist(preferred_zone, zone, gfp_flags, + /* + * MIGRATE_MOVABLE pcplist could have the pages on CMA area and + * we need to skip it when CMA area isn't allowed. + */ + if (!IS_ENABLED(CONFIG_CMA) || alloc_flags & ALLOC_CMA || + migratetype != MIGRATE_MOVABLE) { + page = rmqueue_pcplist(preferred_zone, zone, gfp_flags, migratetype, alloc_flags); - goto out; + goto out; + } } /* @@ -3381,7 +3388,7 @@ struct page *rmqueue(struct zone *preferred_zone, do { page = NULL; - if (alloc_flags & ALLOC_HARDER) { + if (order > 0 && alloc_flags & ALLOC_HARDER) { page = __rmqueue_smallest(zone, order, MIGRATE_HIGHATOMIC); if (page) trace_mm_page_alloc_zone_locked(page, order, migratetype); -- 2.7.4