From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-alma10-1.taild15c8.ts.net [100.103.45.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5489A43DA55 for ; Wed, 3 Jun 2026 12:08:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=100.103.45.18 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780488537; cv=none; b=Skd1tWCkgeymijDnTHgHk/SxnKeLhxr+NNCZGWkPKYL3s5NNM68YDyjnNmBSvJYBvEP9pQMjkkfPLVTcWUX1shIW5B5DYlmBdPV1gnnsLrb8+qvfietw9hxQY78iUdXf8QffdiXhxKXMwaSjiJ5yEI1gjXv2d/ESwQB9SGshoQ8= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780488537; c=relaxed/simple; bh=qSZRPzQkxZAsWhz4aHvgVNbLbSzzK/FTOTpLpXEEG0s=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=rJrG/tP/2ImB6piL3abbc1LKKTs7kG3G0orno4r675YkaW8/xR9zs72Kspxb1QhW+Nw655MV+ZC+Usvv+6+rJg1wRXsbzhfWboiaH95C6/NbswaTLM58oS0QJpfdh3pSRVChjzBNdEl1uoSM4PdtT65UfpDeNHftp12TgdGFcxw= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=eIQ101iR; arc=none smtp.client-ip=100.103.45.18 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="eIQ101iR" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 223971F00893; Wed, 3 Jun 2026 12:08:51 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel.org; s=k20260515; t=1780488536; bh=bcPvlsJ3ZlZ9MeuQiLG4OrJyUMRTqYg7H9gJIZrjyk0=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=eIQ101iRBsPA6N5XS3Ycvye4F2+hH/77n6vCQfOfAefxiXa+Ak4zxKokck3yet1Jv OVAglGKBVhX6K4ozK5sODUtWd64ydP3XayR+Wyw/nlJkyJPeakio6DcZbUcV/ypnWZ 9hwnbf6vZFuzOf6zBhZnjEtyzX2QNWg0zLP0A+aNbKqKP99o7SvedRM9NQrZY0z/hM c6V3C3bLoEpYrL1zOk7nl16NnR9kzDIueuzRlmNhuShqG0KcGCzRO+Rz42uUVUxX8t n8WoRwNBA2QzAqlUdGFFbSiIg/ghe3J9wqPBba7kyz4Yg6gR3cfdOEsD/WaWUwNUnx Tcvz+fafqolZg== Date: Wed, 3 Jun 2026 13:08:49 +0100 From: Lorenzo Stoakes To: Usama Arif Cc: Andrew Morton , jannh@google.com, liam@infradead.org, linux-kernel@vger.kernel.org, linux-mm@kvack.org, pfalcato@suse.de, vbabka@kernel.org, chrisl@kernel.org, kasong@tencent.com, baoquan.he@linux.dev, youngjun.park@lge.com, hannes@cmpxchg.org, riel@surriel.com, shakeel.butt@linux.dev, kas@kernel.org, kernel-team@meta.com Subject: Re: [PATCH] mm/mincore: handle non-swap entries before !CONFIG_SWAP guard Message-ID: References: <20260602172247.279421-1-usama.arif@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260602172247.279421-1-usama.arif@linux.dev> On Tue, Jun 02, 2026 at 10:22:47AM -0700, Usama Arif wrote: > mincore_swap() also fields migration/hwpoison entries (and shmem > swapin-error entries), which can exist on !CONFIG_SWAP builds when > CONFIG_MIGRATION or CONFIG_MEMORY_FAILURE is enabled. The > !IS_ENABLED(CONFIG_SWAP) guard ran before the non-swap-entry early > return, so mincore_pte_range() can spuriously WARN and report these > pages nonresident on !CONFIG_SWAP kernels. > > Move the guard below the non-swap-entry check so only true swap > entries trip the WARN, and migration/hwpoison entries take the > existing "uptodate / non-shmem" path. > > Fixes: 1f2052755c15 ("mm/mincore: use a helper for checking the swap cache") > Signed-off-by: Usama Arif Logic LGTM so: Reviewed-by: Lorenzo Stoakes Small note below but I think not a problem. Thanks, Lorenzo > --- > This was discovered when working on PMD swap entry series > (https://lore.kernel.org/all/20260602142537.198755-1-usama.arif@linux.dev/) > --- > mm/mincore.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/mm/mincore.c b/mm/mincore.c > index e5d13eea9234..296f2e3922b5 100644 > --- a/mm/mincore.c > +++ b/mm/mincore.c > @@ -64,11 +64,6 @@ static unsigned char mincore_swap(swp_entry_t entry, bool shmem) > struct folio *folio = NULL; > unsigned char present = 0; > > - if (!IS_ENABLED(CONFIG_SWAP)) { > - WARN_ON(1); > - return 0; > - } > - > /* > * Shmem mapping may contain swapin error entries, which are > * absent. Page table may contain migration or hwpoison > @@ -77,6 +72,11 @@ static unsigned char mincore_swap(swp_entry_t entry, bool shmem) > if (!softleaf_is_swap(entry)) > return !shmem; > I guess fine to do this after software_is_swap() because for !CONFIG_SWAP this will always evaluate false? Not a big deal therefore I think. > + if (!IS_ENABLED(CONFIG_SWAP)) { > + WARN_ON(1); > + return 0; > + } > + > /* > * Shmem mapping lookup is lockless, so we need to grab the swap > * device. mincore page table walk locks the PTL, and the swap > -- > 2.52.0 >