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=-16.5 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED,USER_AGENT_GIT autolearn=ham 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 5D601C433DB for ; Thu, 11 Feb 2021 16:24:38 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id EF6C464E92 for ; Thu, 11 Feb 2021 16:24:37 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org EF6C464E92 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=soleen.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 2BA786B010E; Thu, 11 Feb 2021 11:24:36 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 2199D6B0110; Thu, 11 Feb 2021 11:24:36 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0E5676B010F; Thu, 11 Feb 2021 11:24:36 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0109.hostedemail.com [216.40.44.109]) by kanga.kvack.org (Postfix) with ESMTP id E715F6B010C for ; Thu, 11 Feb 2021 11:24:35 -0500 (EST) Received: from smtpin21.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay04.hostedemail.com (Postfix) with ESMTP id AF9A51EE6 for ; Thu, 11 Feb 2021 16:24:35 +0000 (UTC) X-FDA: 77806510110.21.crack60_4302dd92761a Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin21.hostedemail.com (Postfix) with ESMTP id 8C291180442C0 for ; Thu, 11 Feb 2021 16:24:35 +0000 (UTC) X-HE-Tag: crack60_4302dd92761a X-Filterd-Recvd-Size: 5432 Received: from mail-qk1-f173.google.com (mail-qk1-f173.google.com [209.85.222.173]) by imf33.hostedemail.com (Postfix) with ESMTP for ; Thu, 11 Feb 2021 16:24:34 +0000 (UTC) Received: by mail-qk1-f173.google.com with SMTP id w19so5251325qki.13 for ; Thu, 11 Feb 2021 08:24:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=soleen.com; s=google; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=3YGhOpgTUnoFUZs688fDjhyQOugw+M5mTwB+lsQcb5I=; b=o+yT0iXdBFV800Ng44S1WVngLnEx6WCic9zMtJB1wm+4xQZGNvyzm0ZeSKiPypriL4 ptcoRie3RdwdjYq0uvrNJwyokXgKEX8YRuGP9uTqpW5Df6MWRCoGllBnhdbj9nKOKZXI Z3FTCPmgWAHnIj6UdHe1V1prDVaBUwkVEUIIkJXxchk9pzM88eOuB3dvd7xXGroMcAc6 UoPJ9r/E01wdE4SC/gUyYf+SyYX8Ii1zA9TxCEQex9T7P+5xmjLqQfqlyz50BpY1pjkn L2ktEgolhpYdlvz4IWMmPpLnV7SHaPwC8KVAvS4dgpqXP4pGXntiAE6vPYuvudxqeZUo 0JZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=3YGhOpgTUnoFUZs688fDjhyQOugw+M5mTwB+lsQcb5I=; b=G5e4JcgpwyRhr8fPSrO9gB8d2iWmDPLB3USjdF9PxsLTUx/y1XunXVWjOaJUVaCwfx 7nFMOQzHmJq2uceYH3/kD1KRG4MfbbZyYz0ZAa/ipOLTUrwrxNvghMlwnfWFCog/zJSz IpRqdIJyYSA/4mIXD+LgVz8p/uIExReRdSVzO4yskbYM6iox4XIOTtPo/nj7b4Y/6EEJ Q7zVEo05+WfQFfkPYuuM94vybiIsF1aBSpIVXs2O2qPVFjHu04F9vLJPH+GihO+SSznM EHUPhNfqBrasEkeN7uXuzlFVSlck2odOX1ym7gmjmjaya8mPmn+I8Zt488hOGDJrVLxA 8tyg== X-Gm-Message-State: AOAM530rXCAOFXZNxvllspEg2aEtKk051BUr4+pJvEi6sFqoTuZhbfHB iPP+1TKOOAMVTT29UTGwbuk1mQ== X-Google-Smtp-Source: ABdhPJwnKajWFyfDuBVS+SGOOtyiqDkHprT6U4jwJWb/Dszw7JzrRM/J6ktUBAouVL19l73ROOoTFg== X-Received: by 2002:a05:620a:13ae:: with SMTP id m14mr8944398qki.35.1613060674348; Thu, 11 Feb 2021 08:24:34 -0800 (PST) Received: from localhost.localdomain (c-73-69-118-222.hsd1.nh.comcast.net. [73.69.118.222]) by smtp.gmail.com with ESMTPSA id i23sm3831778qtq.42.2021.02.11.08.24.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 11 Feb 2021 08:24:33 -0800 (PST) From: Pavel Tatashin To: pasha.tatashin@soleen.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, akpm@linux-foundation.org, vbabka@suse.cz, mhocko@suse.com, david@redhat.com, osalvador@suse.de, dan.j.williams@intel.com, sashal@kernel.org, tyhicks@linux.microsoft.com, iamjoonsoo.kim@lge.com, mike.kravetz@oracle.com, rostedt@goodmis.org, mingo@redhat.com, jgg@ziepe.ca, peterz@infradead.org, mgorman@suse.de, willy@infradead.org, rientjes@google.com, jhubbard@nvidia.com, linux-doc@vger.kernel.org, ira.weiny@intel.com, linux-kselftest@vger.kernel.org, jmorris@namei.org Subject: [PATCH v10 03/14] mm/gup: return an error on migration failure Date: Thu, 11 Feb 2021 11:24:16 -0500 Message-Id: <20210211162427.618913-4-pasha.tatashin@soleen.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20210211162427.618913-1-pasha.tatashin@soleen.com> References: <20210211162427.618913-1-pasha.tatashin@soleen.com> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable 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: 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. Signed-off-by: Pavel Tatashin Reviewed-by: Jason Gunthorpe --- mm/gup.c | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/mm/gup.c b/mm/gup.c index 1f73cbf7fb37..eb8c39953d53 100644 --- a/mm/gup.c +++ b/mm/gup.c @@ -1549,7 +1549,6 @@ static long check_and_migrate_cma_pages(struct mm_s= truct *mm, { unsigned long i; bool drain_allow =3D true; - bool migrate_allow =3D true; LIST_HEAD(cma_page_list); long ret =3D nr_pages; struct page *prev_head, *head; @@ -1600,17 +1599,15 @@ static long check_and_migrate_cma_pages(struct mm= _struct *mm, for (i =3D 0; i < nr_pages; i++) put_page(pages[i]); =20 - 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 =3D false; - + ret =3D 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 @@ -1620,7 +1617,7 @@ static long check_and_migrate_cma_pages(struct mm_s= truct *mm, pages, vmas, NULL, gup_flags); =20 - if ((ret > 0) && migrate_allow) { + if (ret > 0) { nr_pages =3D ret; drain_allow =3D true; goto check_again; --=20 2.25.1