The patch titled Subject: mm-hugetlb-soft-offline-dissolve_free_huge_page-return-zero-on-pagehuge-v3 has been removed from the -mm tree. Its filename was mm-hugetlb-soft-offline-dissolve_free_huge_page-return-zero-on-pagehuge-v3.patch
This patch was dropped because it was merged into mainline or a subsystem tree
------------------------------------------------------ From: Naoya Horiguchi n-horiguchi@ah.jp.nec.com Subject: mm-hugetlb-soft-offline-dissolve_free_huge_page-return-zero-on-pagehuge-v3
- add PageHuge check in dissolve_free_huge_page() outside hugetlb_lock - update comment on dissolve_free_huge_page() about return value
Link: http://lkml.kernel.org/r/1560761476-4651-3-git-send-email-n-horiguchi@ah.jp.... Reported-by: Chen, Jerry T jerry.t.chen@intel.com Tested-by: Chen, Jerry T jerry.t.chen@intel.com Signed-off-by: Naoya Horiguchi n-horiguchi@ah.jp.nec.com Fixes: 6bc9b56433b76 ("mm: fix race on soft-offlining") Cc: Michal Hocko mhocko@kernel.org Cc: Mike Kravetz mike.kravetz@oracle.com Cc: Xishi Qiu xishi.qiuxishi@alibaba-inc.com Cc: "Chen, Jerry T" jerry.t.chen@intel.com Cc: "Zhuo, Qiuxu" qiuxu.zhuo@intel.com Cc: Oscar Salvador osalvador@suse.de Cc: stable@vger.kernel.org [4.19+] Signed-off-by: Andrew Morton akpm@linux-foundation.org ---
mm/hugetlb.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
--- a/mm/hugetlb.c~mm-hugetlb-soft-offline-dissolve_free_huge_page-return-zero-on-pagehuge-v3 +++ a/mm/hugetlb.c @@ -1510,14 +1510,22 @@ static int free_pool_huge_page(struct hs
/* * Dissolve a given free hugepage into free buddy pages. This function does - * nothing for in-use (including surplus) hugepages. Returns -EBUSY if the - * dissolution fails because a give page is not a free hugepage, or because - * free hugepages are fully reserved. + * nothing for in-use hugepages and non-hugepages. + * This function returns values like below: + * + * -EBUSY: failed to dissolved free hugepages or the hugepage is in-use + * (allocated or reserved.) + * 0: successfully dissolved free hugepages or the page is not a + * hugepage (considered as already dissolved) */ int dissolve_free_huge_page(struct page *page) { int rc = -EBUSY;
+ /* Not to disrupt normal path by vainly holding hugetlb_lock */ + if (!PageHuge(page)) + return 0; + spin_lock(&hugetlb_lock); if (!PageHuge(page)) { rc = 0; _
Patches currently in -mm which might be from n-horiguchi@ah.jp.nec.com are
linux-stable-mirror@lists.linaro.org