Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp379787pxj; Tue, 18 May 2021 05:36:29 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwffFYuuY7yRHyUszn7SDPizx5mIzmOhcTQT+6G6/MWlJ6ntzRBY0WVegDCCBx9VGHgl8oH X-Received: by 2002:a05:6402:1543:: with SMTP id p3mr6809030edx.120.1621341389368; Tue, 18 May 2021 05:36:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1621341389; cv=none; d=google.com; s=arc-20160816; b=Ng5e7OHamCvpvVTGWvdIlkSYdh/GKjHbo46bE7KS5G4txm1ouMnDgu0vTXjfOKK/Jz AuMHSQURdmX1I/evg/lNuVR8dpuouU8ZlHsJaMpcBdvDuHt3Pn38mdQ7A+aALOTIiNq/ xhSr0PVcqbrQzuhEdexkj0b4/RkqjC8IKmuabqY85QuXtSGa+sFn0XpGWxJlVS4s2YK/ XTPcGbgi2kHNCRp4RZH236OptosnlB0j0HfnAdWnIn4UvZcWti/2EI3z3T3FJH99qcT3 REUxNcA0Wf0tgLHWpsr9EjdL8jxCMZBoiP2i/R3eFxJBjNn1I7tkwacnhbuJOvi+HFFt YVNg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=P6dVOyYx1ZI5s3ut9sgRFscXwF3BOy/Y77Q5jO3Y5FQ=; b=ZX10X9ZCyH+jg0sAm5VCVYrh+dv9hoeK3tSQBvGlDgWxV8xMzRZXnrG1kAqUvMTAFP OLxDvC4YH/AmlsD4ZFODaBEkkT6shwwT0kVbSI6ew6ZtXdCX3aFeQU5PfoDJLuAlg/oU Sx/GQxfayWSPHvJLX3RYw1E0Okp5X6hRmBReFWBj2+zhopHkEIH0DX+8DX1DFo5HvpRF HA/PTiizS0vzOFrw0eLkthcyqndgaKuRSRKWmfDdEA8mvkwhb5gLkQEg+H4nE3Kej+c7 wV6pdljf17BjBh7INT0Qo63qk6mnY/5CZsyBnXjlM2CiWhWbRRfaMuZBiu2Svx2ouOkX LoVw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=0VCkmSa+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id b6si20951287ejb.398.2021.05.18.05.36.05; Tue, 18 May 2021 05:36:29 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b=0VCkmSa+; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S245031AbhEQPeT (ORCPT + 99 others); Mon, 17 May 2021 11:34:19 -0400 Received: from mail.kernel.org ([198.145.29.99]:51696 "EHLO mail.kernel.org" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S244143AbhEQPTS (ORCPT ); Mon, 17 May 2021 11:19:18 -0400 Received: by mail.kernel.org (Postfix) with ESMTPSA id 6414F61C76; Mon, 17 May 2021 14:33:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1621262030; bh=wANwn/r44ErjICI6BND58o0NYrEVFW5L9D4tm+uV7ME=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=0VCkmSa+CgD+OhuspA06xlSZokBM1oz4eI5dOqyOifsTxGbXjWDbmS7ZlliLY2CKe +JHcgtwRquZUrfOpzrwuBpUahATElCsWOKNdqpLew18c/MTI3KI6vs7XKPhtzRvRpd EUhZXgHGCeqIJzH5X4fQQKrLk+4FebcGikGLnKNU= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Pavel Tatashin , Jason Gunthorpe , Dan Williams , David Hildenbrand , David Rientjes , Ingo Molnar , Ira Weiny , James Morris , Jason Gunthorpe , John Hubbard , Joonsoo Kim , Matthew Wilcox , Mel Gorman , Michal Hocko , Michal Hocko , Mike Kravetz , Oscar Salvador , Peter Zijlstra , Sasha Levin , "Steven Rostedt (VMware)" , Tyler Hicks , Vlastimil Babka , Andrew Morton , Linus Torvalds Subject: [PATCH 5.11 206/329] mm/gup: return an error on migration failure Date: Mon, 17 May 2021 16:01:57 +0200 Message-Id: <20210517140309.089039294@linuxfoundation.org> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20210517140302.043055203@linuxfoundation.org> References: <20210517140302.043055203@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org From: Pavel Tatashin [ Upstream commit f0f4463837da17a89d965dcbe4e411629dbcf308 ] When migration failure occurs, we still pin pages, which means that we may pin CMA movable pages which should never be the case. Instead return an error without pinning pages when migration failure happens. No need to retry migrating, because migrate_pages() already retries 10 times. Link: https://lkml.kernel.org/r/20210215161349.246722-4-pasha.tatashin@soleen.com Signed-off-by: Pavel Tatashin Reviewed-by: Jason Gunthorpe Cc: Dan Williams Cc: David Hildenbrand Cc: David Rientjes Cc: Ingo Molnar Cc: Ira Weiny Cc: James Morris Cc: Jason Gunthorpe Cc: John Hubbard Cc: Joonsoo Kim Cc: Matthew Wilcox Cc: Mel Gorman Cc: Michal Hocko Cc: Michal Hocko Cc: Mike Kravetz Cc: Oscar Salvador Cc: Peter Zijlstra Cc: Sasha Levin Cc: Steven Rostedt (VMware) Cc: Tyler Hicks Cc: Vlastimil Babka Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Signed-off-by: Sasha Levin --- mm/gup.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/mm/gup.c b/mm/gup.c index 84d392886d85..2d7a567b4056 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -1550,7 +1550,6 @@ static long check_and_migrate_cma_pages(struct mm_struct *mm, { unsigned long i; bool drain_allow = true; - bool migrate_allow = true; LIST_HEAD(cma_page_list); long ret = nr_pages; struct page *prev_head, *head; @@ -1601,17 +1600,15 @@ check_again: for (i = 0; i < nr_pages; i++) put_page(pages[i]); - if (migrate_pages(&cma_page_list, alloc_migration_target, NULL, - (unsigned long)&mtc, MIGRATE_SYNC, MR_CONTIG_RANGE)) { - /* - * some of the pages failed migration. Do get_user_pages - * without migration. - */ - migrate_allow = false; - + ret = migrate_pages(&cma_page_list, alloc_migration_target, + NULL, (unsigned long)&mtc, MIGRATE_SYNC, + MR_CONTIG_RANGE); + if (ret) { if (!list_empty(&cma_page_list)) putback_movable_pages(&cma_page_list); + return ret > 0 ? -ENOMEM : ret; } + /* * We did migrate all the pages, Try to get the page references * again migrating any new CMA pages which we failed to isolate @@ -1621,7 +1618,7 @@ check_again: pages, vmas, NULL, gup_flags); - if ((ret > 0) && migrate_allow) { + if (ret > 0) { nr_pages = ret; drain_allow = true; goto check_again; -- 2.30.2