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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id C4165C3DA61 for ; Wed, 24 Jul 2024 20:02:12 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 520D46B0083; Wed, 24 Jul 2024 16:02:12 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 4D1526B0088; Wed, 24 Jul 2024 16:02:12 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 398A26B0089; Wed, 24 Jul 2024 16:02:12 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 1B29F6B0083 for ; Wed, 24 Jul 2024 16:02:12 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay10.hostedemail.com (Postfix) with ESMTP id AC2C0C0C06 for ; Wed, 24 Jul 2024 20:02:11 +0000 (UTC) X-FDA: 82375717662.19.DED4EC1 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf10.hostedemail.com (Postfix) with ESMTP id 43B37C000D for ; Wed, 24 Jul 2024 20:02:08 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=ELIfEZvw; spf=none (imf10.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1721851282; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=RNDXkPq/hLVDx0ibhbMTtzI+6SBozY+rsScaYjX/r/k=; b=YmY2ND2NqmfKJjqkFSakYr2H7jF7qS26OaxpTxASUP/r9g+9e6kVZcJbSV+bpiU75hVVEr DnObgR8NPFwq/bjatfGgsEFD6z82kG6ytfvegZWUXJM7GjCc9sd0N2+z6c66VlVsozndYC vyYhBDdjalOACmPTxSIkkmOKcDQaeDk= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1721851282; a=rsa-sha256; cv=none; b=LcomXFofCymQD0Yw7Ne4AzUjxsxw+jfwoBhSaDCA5LikBc3Wq0u91yFh52mw96DbbYPGRN ZSGUvu3keqFVcBRzCfpVDwl3EFi+6KKOWkahq2GrmAuw1nT6cqgFboCdNgxLAl+Ea4x2xS MZd8NQQPWWgK68Thj/HOapI1R3MXgy0= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=ELIfEZvw; spf=none (imf10.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org; dmarc=none DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=RNDXkPq/hLVDx0ibhbMTtzI+6SBozY+rsScaYjX/r/k=; b=ELIfEZvwq5q99yWUqNEI7+YrKF VH8lYBG42hPEtkpp9jkc/fKCnIICDaTA4MkXcfal34pQoSQTS2a+2HI2DlTSmHr6fdFGfEGaJkOBo m34xy/earl4muLqQHMWmoLHj164+oXrgzAQ1o4llbznxPAC1rcKsIY8ty1w9clUVNGxynQMS19FNI Vf8qCPb8eGPjMYgZt+PdI3JUssHjYVXj8cjl5hetjW0IpIf6akOPEC8hsFiw2/a9UiSU+BCgGsucH SEkw24fgv/uzOTlYUwG3Ub0CCEUg59h1z7X0ibp3aPWSWfCI2rWznCGmSukcCHJ2bYKKNfqw1e31Y K651tnKg==; Received: from willy by casper.infradead.org with local (Exim 4.97.1 #2 (Red Hat Linux)) id 1sWiBX-000000088Px-3sDa; Wed, 24 Jul 2024 20:02:03 +0000 Date: Wed, 24 Jul 2024 21:02:03 +0100 From: Matthew Wilcox To: "Hailong.Liu" Cc: Andrew Morton , Uladzislau Rezki , Christoph Hellwig , Lorenzo Stoakes , Vlastimil Babka , Michal Hocko , Barry Song <21cnbao@gmail.com>, "Tangquan . Zheng" , linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [RFC PATCH v1] mm/vmalloc: fix incorrect __vmap_pages_range_noflush() if vm_area_alloc_pages() from high order fallback to order0 Message-ID: References: <20240724181916.31776-1-hailong.liu@oppo.com> <20240724182827.nlgdckimtg2gwns5@oppo.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240724182827.nlgdckimtg2gwns5@oppo.com> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 43B37C000D X-Stat-Signature: 4ku1tm9acnqk4xjh7arex4skaw7wptn7 X-HE-Tag: 1721851328-565572 X-HE-Meta: U2FsdGVkX1+hSpcU49+CqHpmglvLDVcZbB640/N/jQv4h2wP9oAuuyunRzUm1zsdEHM31nCoDJAdBVQkoS3C0RTTTO1ZIJuhxPWvrGV7R29K1ap+B3hclCmgTqZMjL98Foj7Tqwi4AnZmi/v1O9dqQTLBu5ReilZWL+zjPeGTlz4JRIvLvcNQZE1Z3axfEHucKXwzlX7iCAJ+OvTEREYZokURbvjZwaU0NMwOyXX80u3fdZozYZKcK9QmBeQlxOEA7/JLSvCnac5AM+yD3bPe6Lq9VIlKS/HUTVfq9FpWGq7GE5RdeuZotjqDTGM8jR/NhIDz91Gr3/uVHqVMXHkMdBYhMF4/IojBmJ5QemjeMPGNA+HYC+nL5sVgVh6gGHkMU5ZQ0VLxUs5Kigsn9OO+ZudgNIwJRtvXpPeuQKl+fz6ApDoBQ9A0lE8vJ09Ha8bjXs4KVCMsl5jVz7iXhy6/IS2XZsklHvqQ5AiIS0PdjcPpiVWctnETuxo4+CpAksZZuFJ5SAfnI25QtIdeg6zkzYcAZnu5YxIATLj6mAF597poHdAlXGYNljUuMNE0b+AIPswKhuIRtNlDTcC6OowJRP150tTFL8iMSWPgtLfusyb2qdmdY7hYEpvt67hXbw4i+JPqVMhLIwehNqHcZ4bE+LtYf+1u9Yg2G6z/7g1otrosL2zU8LFDjtW1TQbuNZb0w5S3tjl3y8qP/wX4ZFcTio3FIy7LdmXOckWa4jBu3eH2ktE7mvUKCDPIHYyRsg0akaktmC4rZzg6voODWpTw0NDE6nzM7IAT38a7oBpTECBzr2p79tw72uJ2bYY38JHeI74Gcb44jPqHb4UCceu+79J3lOUkCCK5/tQzpKqUYEBeBffC9VlcU24F4GGz5bzetUR/sVdTsDBWy/pkPt4olkz3FmZrm6fHvlDnj7gyfFGCsrlLkQjXiJA6wmT1faOxZjG08Ag6CWlivqSc6D uPZxow07 4DAE9+CpUZt1bxwpJntB3dW2z1sW6vx535dbv8C+MDvo5Hay8jKPu0edKHNzxuXYVGaaI7+mdKgK8xeaL+YWUhP2f9ySy3JUshxW9XS4hx13G6tFFqQ10O209RC3OxahjFLNKzamH0V4Xry+BWHH/KAJqcp2QMwnsJtC60ITJjS/uKXLtI+evE3MXmjvzfvDbeoOCUZd7Q+xhIcsTmYNo+nowV/AtIkJUMIdsmhyFvAON6mByiLbHmiNUbb9vBtNQKjq7 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: List-Subscribe: List-Unsubscribe: On Thu, Jul 25, 2024 at 02:28:27AM +0800, Hailong.Liu wrote: > > if (!IS_ENABLED(CONFIG_HAVE_ARCH_HUGE_VMALLOC) || > > - page_shift == PAGE_SHIFT) > > - return vmap_small_pages_range_noflush(addr, end, prot, pages); > > + page_shift == PAGE_SHIFT || > > + page_private(pages[0]) == VM_AREA_ALLOC_PAGES_FALLBACK) { > > + int ret = vmap_small_pages_range_noflush(addr, end, prot, pages); > > + > > + set_page_private(pages[0], 0); > > + return ret; > > + } > > > > for (i = 0; i < nr; i += 1U << (page_shift - PAGE_SHIFT)) { > > int err; > > @@ -3583,6 +3590,7 @@ vm_area_alloc_pages(gfp_t gfp, int nid, > > > > /* fall back to the zero order allocations */ > > alloc_gfp |= __GFP_NOFAIL; > > + fallback = true; > Sry for my mistake, I forget define fallback here. > BTW, This is not the optimal solution. Does anyone have a better idea? Glad to > hear:) Yeah, I really don't like this approach. You could return a small struct indicating both nr_allocated and whether you had to fall back. Or you could pass a bool * parameter. They're both pretty nasty.