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 6EB71C25B74 for ; Mon, 27 May 2024 08:54:02 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CFA246B0085; Mon, 27 May 2024 04:54:01 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CA9986B0088; Mon, 27 May 2024 04:54:01 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id B4B426B0089; Mon, 27 May 2024 04:54:01 -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 938F76B0085 for ; Mon, 27 May 2024 04:54:01 -0400 (EDT) Received: from smtpin14.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 2043916028E for ; Mon, 27 May 2024 08:54:01 +0000 (UTC) X-FDA: 82163563482.14.1287631 Received: from smtp-out1.suse.de (smtp-out1.suse.de [195.135.223.130]) by imf30.hostedemail.com (Postfix) with ESMTP id D5F8380008 for ; Mon, 27 May 2024 08:53:58 +0000 (UTC) Authentication-Results: imf30.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=mW+A8a81; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=AovZ2QB2; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=mW+A8a81; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=AovZ2QB2; spf=pass (imf30.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.130 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1716800039; 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=rVC/dDk5c+fIGn0MOwcknof/hJlc/Q9eHr02ULk1Nx8=; b=vX1r1i/+gKJja55R7GaUgVQAJAi0bIYdZ8h+0hWpJ0oKmfzi1xO6UHF2TVHC1zTkAaAnGH Ix89HA6+pknNrFkmYies3q3i7RAoWjfOhBBL40FVsJJJaI6PpIDzDeoj2W3de/ELkC3SnC gvKyuNVuu6lfihEAyw9dloBl876e/1w= ARC-Authentication-Results: i=1; imf30.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=mW+A8a81; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=AovZ2QB2; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=mW+A8a81; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=AovZ2QB2; spf=pass (imf30.hostedemail.com: domain of osalvador@suse.de designates 195.135.223.130 as permitted sender) smtp.mailfrom=osalvador@suse.de; dmarc=pass (policy=none) header.from=suse.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1716800039; a=rsa-sha256; cv=none; b=J3Q8m/+h2DArZLp2ntP2yw30vKC72uM0ZcnF1oFSQrg6cX4gHU3/qQ6OUQZj81HuYG0QyE JdMhChGDmYK/hNT3NSRJkKkf/O9ystNfwbnT3WdOb36qd0ONqGMVrPeTceAdc7HE2WF7OF gJQuskOPgnk4IqJM7vbUpkW1bM3M3b4= Received: from imap1.dmz-prg2.suse.org (unknown [10.150.64.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 459BB21D66; Mon, 27 May 2024 08:53:57 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1716800037; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=rVC/dDk5c+fIGn0MOwcknof/hJlc/Q9eHr02ULk1Nx8=; b=mW+A8a81nA/4/BMW6BWQa/mUk3SVkQXftMlE+3NsmhGRELQznuJOH7vKTSedt+Ct0GinS2 7ih0mgJotbupc43DGY7vPEychw6+XfNL1A5RQB/DTziSjp9qibMX6vhmbXKTmfPTx4UJRR CBilRCx95VMDGZfcWO1gtEtw+Z5dxFs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1716800037; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=rVC/dDk5c+fIGn0MOwcknof/hJlc/Q9eHr02ULk1Nx8=; b=AovZ2QB2O2C4eZQV4G7q3edNeGnxBtm5G0BycbrLiAfdBqMgtBaIdPLKnI7qxbK6fRxhW/ GNr/X3cQD8n5kcAQ== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1716800037; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=rVC/dDk5c+fIGn0MOwcknof/hJlc/Q9eHr02ULk1Nx8=; b=mW+A8a81nA/4/BMW6BWQa/mUk3SVkQXftMlE+3NsmhGRELQznuJOH7vKTSedt+Ct0GinS2 7ih0mgJotbupc43DGY7vPEychw6+XfNL1A5RQB/DTziSjp9qibMX6vhmbXKTmfPTx4UJRR CBilRCx95VMDGZfcWO1gtEtw+Z5dxFs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1716800037; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=rVC/dDk5c+fIGn0MOwcknof/hJlc/Q9eHr02ULk1Nx8=; b=AovZ2QB2O2C4eZQV4G7q3edNeGnxBtm5G0BycbrLiAfdBqMgtBaIdPLKnI7qxbK6fRxhW/ GNr/X3cQD8n5kcAQ== Received: from imap1.dmz-prg2.suse.org (localhost [127.0.0.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by imap1.dmz-prg2.suse.org (Postfix) with ESMTPS id E861813A6B; Mon, 27 May 2024 08:53:56 +0000 (UTC) Received: from dovecot-director2.suse.de ([2a07:de40:b281:106:10:150:64:167]) by imap1.dmz-prg2.suse.org with ESMTPSA id A/MfNiRKVGZaWAAAD6G6ig (envelope-from ); Mon, 27 May 2024 08:53:56 +0000 Date: Mon, 27 May 2024 10:53:55 +0200 From: Oscar Salvador To: Andrew Morton Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, Muchun Song , Vishal Moola Subject: Re: [PATCH] mm/hugetlb: Move vmf_anon_prepare upfront in hugetlb_wp Message-ID: References: <20240521073446.23185-1-osalvador@suse.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240521073446.23185-1-osalvador@suse.de> X-Stat-Signature: cn3ukxsefhuhftipwmd114nxwy1d3stq X-Rspamd-Queue-Id: D5F8380008 X-Rspam-User: X-Rspamd-Server: rspam10 X-HE-Tag: 1716800038-664527 X-HE-Meta: U2FsdGVkX19xkOJGHfXq1XpK3mE681ufSrpR6aGCdTSASXTaIRe8XwnGtDyyoUm9avpbhPwk+e8FJzI7PX9nXpcQ/x51hZdV6eoVX17LpnyBW5Lk1ERBLa5qO8eNdEqgpceE7D93ZFd6coo9/pBPTjehMBhhFevX3PjRX7CRRNVd0pPqHyHl1hu5wVm+TvDRhKvVIVQnjJwCH8S7sYzNNnDx4Gu6ET/FST0b4wyxAErhXWuSf53SuOXSBZDpISDWoO1++ZcpGEd6wuEvxxFFK2yrGCpHfLQ7Ec7yNnfXv99rV06aGVrNPoaA/OXx1QUEtE2OImB7vgaLJxYjQUtn6moAQecAq++CpxPShdwKpCtZS4ZJOqCBAl/Vp5So4kSTiiJ8BUkrrGHy7WA9kXVbfALwfDICaN83fD7XMTqEqKUk+nMr6EPuOvFfbc9gTH7SxWC0CxIVBy61Prv46KOBTxnYjM3C7ibAdMwMaxr5o5uZAJtnvR56Xf9TpEHKYaVnkXDY0/JSiR3WWhOKp9If4euXOWtBoQg79KRkNvEGvRiIclonX5UoC0SSgWN4kCP5KAdHVu27R3iIPBYFxGt8no5/RrtEiO1FtMs2D4CeQmm5AKruphSIeGyf/bqCDsw2KKOzVvbUa0iZDYc3EY1V2wAQkNTNnhnFfOKsz6C1ZW/j/Xnl/F+r0EQXqYsUaWfxnjfWheQTlxyByRqSU36KWXswVuMFJuLI/0+IMnGOrzi5mlhzTCECnnwDvdnxxEYEMaJyfI1388CK8gOLauzwwLd3FiYn1PRG8PanIqe1F9VK/W9a+pd4+RUUDbvJU3LweLUDD38DHV6CPNqV9H0+0dmTH39SM6sH2FV88dyHeIxD8DkIo8WILS8vh06a7fGOAkdQgsZ1Sct5G2ykde1bEBQN0whSD3ysppGt8bi3A5eXi4tb//cjz7tk6sCqWKNAGDH8+D5vH5nk4L2I6K5 IAA+CKcY GYXxHlJnZvbE5+G5T2rxMAu5M9RpB+OoECKeM8uD2gD+fOyYwX9cn2zywd2Oouyzy6+TQcGIJB7DGB7aUhRgWckGlynIotSXv128357Hr4KYD3T4UdscuVPo8Sw1tbrRwjhpulpUcDcTMxocU7N2OfvMw3tUbdDP4ymkRThlVRqeZ+DGG/wi3OA8lomGWu/5Q+Fgn6qmU1HTOjUN+EMDoG3/82o0wmFE0/tUsRBsWdvivPBfskcxFkHnmioCZWUafdstkzUnGR/c5v7oWEmgn6HknWKV84ZAlTlxAx+/U1aIny/mVSj+10XeqVMRhFwwqTH3C X-Bogosity: Ham, tests=bogofilter, spamicity=0.002605, 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 Tue, May 21, 2024 at 09:34:46AM +0200, Oscar Salvador wrote: > I did not hit this bug, I just spotted this because I was looking at hugetlb_wp > for some other reason. And I did not want to get creative to see if I could > trigger this so I could get a backtrace. > My assumption is that we could trigger this if 1) this was a shared mapping, > so no anon_vma and 2) we call in GUP code with FOLL_WRITE, which would cause > the FLAG_UNSHARE to be passed, so we will end up in hugetlb_wp(). So I checked this again and I have to confess I am bit confused. hugetlb_wp() can be called from either hugetlb_fault() or hugetlb_no_page(). hugetlb_fault()->hugetlb_wp() upon FAULT_FLAG_{WRITE,UNSHARE} hugetlb_no_page->hugetlb_wp()-> upon FAULT_FLAG_WRITE && !VM_SHARED hugetlb_no_page()->vmf_anon_prepare() upon !VM_SHARED, which means that VM_SHARED mappings do not have vma->anon_vma, while others do. hugetlb_wp() will call set_huge_ptep_writable() right away and return if it sees that the mapping is shared. So the only other we have to end up in hugetlb_wp() is via FAULT_FLAG_UNSHARE. For that to happen gup_must_unshare() must return true, which means the following assumptions must hold. - For Anonymous pages: 1) !PageAnonExclusive - For Filebacked pages: 2) We do not have a vma 3) It is a COW mapping 1) If gup_must_unshare() returns true for Anonymous pages because the page is not exclusive and must be unshared, hugetlb_wp() will already see the vma->anon_prepare being initialized because of the previous hugetlb_no_page()->vmf_anon_prepare. 2) I do not quite understand this case. 3) !VMSHARED mappings already had its anon_vma initialized in hugetlb_no_page()->vmf_anon_prepare. Probably I am missing some bits here, but I cannot see how we would even need vmf_anon_prepare() in hugetlb_wp() in the first place. -- Oscar Salvador SUSE Labs