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 9B8CEC433EF for ; Tue, 18 Jan 2022 12:23:53 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id EA5D76B0072; Tue, 18 Jan 2022 07:23:52 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id E55A76B0075; Tue, 18 Jan 2022 07:23:52 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id CF6106B0078; Tue, 18 Jan 2022 07:23:52 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0181.hostedemail.com [216.40.44.181]) by kanga.kvack.org (Postfix) with ESMTP id BCF5F6B0072 for ; Tue, 18 Jan 2022 07:23:52 -0500 (EST) Received: from smtpin12.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 6F3E81809AF1A for ; Tue, 18 Jan 2022 12:23:52 +0000 (UTC) X-FDA: 79043324304.12.6481B00 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf10.hostedemail.com (Postfix) with ESMTP id 88012C0005 for ; Tue, 18 Jan 2022 12:23:51 +0000 (UTC) Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 5D40C1F3B5; Tue, 18 Jan 2022 12:23:50 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_rsa; t=1642508630; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=c2B9KKsJn7oOo7jGQCOwOyWoEN/ZY+AiAjhSRRVU+n0=; b=CUCJLb/E3Xw86ur1WZwNAMdN0t7VedxvIIWp9YVdwpW4paxW3c2gqitWhfd60lMPPQichd tUCRvBgYo3VkJnHBKGy3CWJnvC1ONzLRYx8KPbJNVljKet7HNkjvz0i4eQEd2EcSIwd1lx NK1dtY8CcADUeTxnkzlw0Euq+/nOpeg= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.cz; s=susede2_ed25519; t=1642508630; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=c2B9KKsJn7oOo7jGQCOwOyWoEN/ZY+AiAjhSRRVU+n0=; b=ByVWsNnRpY/QKTq7naBB/xuz2wpZCB7j3uXN1RqlrTISJvJAqcFmWUu3hCcMFLAW1OA3aW kzYkNdRUnuEk0mCg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 12E9913B26; Tue, 18 Jan 2022 12:23:50 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id 7F6kA1ax5mGbbwAAMHmgww (envelope-from ); Tue, 18 Jan 2022 12:23:50 +0000 Message-ID: Date: Tue, 18 Jan 2022 13:23:49 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Content-Language: en-US To: Liam Howlett , "maple-tree@lists.infradead.org" , "linux-mm@kvack.org" , "linux-kernel@vger.kernel.org" , Andrew Morton Cc: Song Liu , Davidlohr Bueso , "Paul E . McKenney" , Matthew Wilcox , Laurent Dufour , David Rientjes , Axel Rasmussen , Suren Baghdasaryan , Rik van Riel , Peter Zijlstra , Michel Lespinasse , Jerome Glisse , Minchan Kim , Joel Fernandes , Rom Lemarchand References: <20211201142918.921493-1-Liam.Howlett@oracle.com> <20211201142918.921493-34-Liam.Howlett@oracle.com> From: Vlastimil Babka Subject: Re: [PATCH v4 33/66] xtensa: Remove vma linked list walks In-Reply-To: <20211201142918.921493-34-Liam.Howlett@oracle.com> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 88012C0005 X-Stat-Signature: bdp4cmi713psbi4bptsoae3cbtzmpnnz Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=suse.cz header.s=susede2_rsa header.b="CUCJLb/E"; dkim=pass header.d=suse.cz header.s=susede2_ed25519 header.b=ByVWsNnR; spf=pass (imf10.hostedemail.com: domain of vbabka@suse.cz designates 195.135.220.29 as permitted sender) smtp.mailfrom=vbabka@suse.cz; dmarc=none X-Rspamd-Server: rspam07 X-HE-Tag: 1642508631-533725 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: On 12/1/21 15:30, Liam Howlett wrote: > From: "Liam R. Howlett" > > Use the VMA iterator instead. > > Signed-off-by: Matthew Wilcox (Oracle) > Signed-off-by: Liam R. Howlett > --- > arch/xtensa/kernel/syscall.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/arch/xtensa/kernel/syscall.c b/arch/xtensa/kernel/syscall.c > index 201356faa7e6..20ec9534e01f 100644 > --- a/arch/xtensa/kernel/syscall.c > +++ b/arch/xtensa/kernel/syscall.c > @@ -58,6 +58,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, > unsigned long len, unsigned long pgoff, unsigned long flags) > { > struct vm_area_struct *vmm; > + VMA_ITERATOR(vmi, mm, addr) Need to use current->mm or it won't compile, AFAICS. ; > > if (flags & MAP_FIXED) { > /* We do not accept a shared mapping if it would violate > @@ -79,7 +80,7 @@ unsigned long arch_get_unmapped_area(struct file *filp, unsigned long addr, > else > addr = PAGE_ALIGN(addr); > > - for (vmm = find_vma(current->mm, addr); ; vmm = vmm->vm_next) { > + for_each_vma(vmi, vmm) { > /* At this point: (!vmm || addr < vmm->vm_end). */ Well if at this point !vmm then we are no longer here due to for_each_vma(). > if (TASK_SIZE - len < addr) > return -ENOMEM; Thus we can miss this? But maybe it could be moved above the for loop and checked just once, as addr only grows inside the for loop? However, the loop body continues: > if (!vmm || addr + len <= vm_start_gap(vmm)) > return addr; So after your patch we fail to return the unmapped area after the last vma.