All of lore.kernel.org
 help / color / mirror / Atom feed
From: js1304@gmail.com
To: Andrew Morton <akpm@linux-foundation.org>
Cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	kernel-team@lge.com, Vlastimil Babka <vbabka@suse.cz>,
	Christoph Hellwig <hch@infradead.org>,
	Roman Gushchin <guro@fb.com>,
	Mike Kravetz <mike.kravetz@oracle.com>,
	Naoya Horiguchi <n-horiguchi@ah.jp.nec.com>,
	Michal Hocko <mhocko@suse.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>
Subject: [PATCH 06/11] mm/hugetlb: do not modify user provided gfp_mask
Date: Mon, 18 May 2020 10:20:52 +0900	[thread overview]
Message-ID: <1589764857-6800-7-git-send-email-iamjoonsoo.kim@lge.com> (raw)
In-Reply-To: <1589764857-6800-1-git-send-email-iamjoonsoo.kim@lge.com>

From: Joonsoo Kim <iamjoonsoo.kim@lge.com>

It's not good practice to modify user input. Instead of using it to
build correct gfp_mask for APIs, this patch introduces another gfp_mask
field, __gfp_mask, for internal usage.

Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com>
---
 mm/hugetlb.c  | 15 ++++++++-------
 mm/internal.h |  2 ++
 2 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/mm/hugetlb.c b/mm/hugetlb.c
index 53edd02..5f43b7e 100644
--- a/mm/hugetlb.c
+++ b/mm/hugetlb.c
@@ -1069,15 +1069,15 @@ static struct page *dequeue_huge_page_nodemask(struct hstate *h,
 	struct zoneref *z;
 	int node = NUMA_NO_NODE;
 
-	zonelist = node_zonelist(ac->nid, ac->gfp_mask);
+	zonelist = node_zonelist(ac->nid, ac->__gfp_mask);
 
 retry_cpuset:
 	cpuset_mems_cookie = read_mems_allowed_begin();
 	for_each_zone_zonelist_nodemask(zone, z, zonelist,
-			gfp_zone(ac->gfp_mask), ac->nmask) {
+			gfp_zone(ac->__gfp_mask), ac->nmask) {
 		struct page *page;
 
-		if (!cpuset_zone_allowed(zone, ac->gfp_mask))
+		if (!cpuset_zone_allowed(zone, ac->__gfp_mask))
 			continue;
 		/*
 		 * no need to ask again on the same node. Pool is node rather than
@@ -1952,7 +1952,7 @@ static struct page *alloc_migrate_huge_page(struct hstate *h,
 	if (hstate_is_gigantic(h))
 		return NULL;
 
-	page = alloc_fresh_huge_page(h, ac->gfp_mask,
+	page = alloc_fresh_huge_page(h, ac->__gfp_mask,
 				ac->nid, ac->nmask, NULL);
 	if (!page)
 		return NULL;
@@ -1990,9 +1990,10 @@ struct page *alloc_buddy_huge_page_with_mpol(struct hstate *h,
 struct page *alloc_huge_page_nodemask(struct hstate *h,
 				struct alloc_control *ac)
 {
-	ac->gfp_mask |= htlb_alloc_mask(h);
+	ac->__gfp_mask = htlb_alloc_mask(h);
+	ac->__gfp_mask |= ac->gfp_mask;
 	if (ac->thisnode && ac->nid != NUMA_NO_NODE)
-		ac->gfp_mask |= __GFP_THISNODE;
+		ac->__gfp_mask |= __GFP_THISNODE;
 
 	spin_lock(&hugetlb_lock);
 	if (h->free_huge_pages - h->resv_huge_pages > 0) {
@@ -2011,7 +2012,7 @@ struct page *alloc_huge_page_nodemask(struct hstate *h,
 	 * will not come from CMA area
 	 */
 	if (ac->skip_cma)
-		ac->gfp_mask &= ~__GFP_MOVABLE;
+		ac->__gfp_mask &= ~__GFP_MOVABLE;
 
 	return alloc_migrate_huge_page(h, ac);
 }
diff --git a/mm/internal.h b/mm/internal.h
index 6b6507e..3239d71 100644
--- a/mm/internal.h
+++ b/mm/internal.h
@@ -620,6 +620,8 @@ struct alloc_control {
 	gfp_t gfp_mask;
 	bool thisnode;
 	bool skip_cma;
+
+	gfp_t __gfp_mask;	/* Used internally in API implementation */
 };
 
 #endif	/* __MM_INTERNAL_H */
-- 
2.7.4


  parent reply	other threads:[~2020-05-18  1:22 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-18  1:20 [PATCH 00/11] clean-up the migration target allocation functions js1304
2020-05-18  1:20 ` [PATCH 01/11] mm/page_isolation: prefer the node of the source page js1304
2020-05-21  0:37   ` Roman Gushchin
2020-05-21  1:18     ` Joonsoo Kim
2020-05-21  1:18       ` Joonsoo Kim
2020-05-27  6:45       ` Joonsoo Kim
2020-05-27  6:45         ` Joonsoo Kim
2020-05-18  1:20 ` [PATCH 02/11] mm/migrate: move migration helper from .h to .c js1304
2020-05-21 18:17   ` Mike Kravetz
2020-05-18  1:20 ` [PATCH 03/11] mm/hugetlb: introduce alloc_control structure to simplify migration target allocation APIs js1304
2020-05-21  0:43   ` Roman Gushchin
2020-05-21  1:20     ` Joonsoo Kim
2020-05-21  1:20       ` Joonsoo Kim
2020-05-21 18:57   ` Mike Kravetz
2020-05-22  5:52     ` Joonsoo Kim
2020-05-22  5:52       ` Joonsoo Kim
2020-05-18  1:20 ` [PATCH 04/11] mm/hugetlb: unify hugetlb migration callback function js1304
2020-05-21  0:46   ` Roman Gushchin
2020-05-21  1:22     ` Joonsoo Kim
2020-05-21  1:22       ` Joonsoo Kim
2020-05-21 20:54   ` Mike Kravetz
2020-05-22  7:38     ` Joonsoo Kim
2020-05-22  7:38       ` Joonsoo Kim
2020-05-18  1:20 ` [PATCH 05/11] mm/hugetlb: make hugetlb migration target allocation APIs CMA aware js1304
2020-05-21 21:43   ` Mike Kravetz
2020-05-18  1:20 ` js1304 [this message]
2020-05-21 22:19   ` [PATCH 06/11] mm/hugetlb: do not modify user provided gfp_mask Mike Kravetz
2020-05-22  7:42     ` Joonsoo Kim
2020-05-22  7:42       ` Joonsoo Kim
2020-05-18  1:20 ` [PATCH 07/11] mm/migrate: change the interface of the migration target alloc/free functions js1304
2020-05-18  1:20 ` [PATCH 08/11] mm/migrate: make standard migration target allocation functions js1304
2020-05-18  1:20 ` [PATCH 09/11] mm/gup: use standard migration target allocation function js1304
2020-05-18  1:20 ` [PATCH 10/11] mm/mempolicy: " js1304
2020-05-18  1:20 ` [PATCH 11/11] mm/page_alloc: use standard migration target allocation function directly js1304

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1589764857-6800-7-git-send-email-iamjoonsoo.kim@lge.com \
    --to=js1304@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=guro@fb.com \
    --cc=hch@infradead.org \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=kernel-team@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=mhocko@suse.com \
    --cc=mike.kravetz@oracle.com \
    --cc=n-horiguchi@ah.jp.nec.com \
    --cc=vbabka@suse.cz \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.