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 9E88CC3ABDA for ; Tue, 20 May 2025 03:31:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 088836B007B; Mon, 19 May 2025 23:31:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 0392C6B0082; Mon, 19 May 2025 23:31:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id E910B6B0083; Mon, 19 May 2025 23:31:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id C51C16B007B for ; Mon, 19 May 2025 23:31:47 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 70777BEFC2 for ; Tue, 20 May 2025 03:31:47 +0000 (UTC) X-FDA: 83461861854.30.8562B27 Received: from mail-lj1-f180.google.com (mail-lj1-f180.google.com [209.85.208.180]) by imf23.hostedemail.com (Postfix) with ESMTP id 5A0B014000A for ; Tue, 20 May 2025 03:31:45 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=g2mOFo29; spf=pass (imf23.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.180 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1747711905; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=Uj5duSIn2gmfsncTogIgvyhtWkcPgMLCLHq+csGoNcE=; b=CzrFMEeHE8LnFg6ubWqm3gzOqfQcVrmqoOB+krM8rURDN+1AtBexK836SR/oiMEue/Bj46 42S+kmTu+WHk7u3zUbFC7CUp1qQvFTz9w5niWusZCOf8B2jWcYalo5+kzysrsuu5ammbGI FLozCh8EeWhAVRrqbfbcOrxQqQmbRE4= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=g2mOFo29; spf=pass (imf23.hostedemail.com: domain of ryncsn@gmail.com designates 209.85.208.180 as permitted sender) smtp.mailfrom=ryncsn@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1747711905; a=rsa-sha256; cv=none; b=sxfOeOcKAcM2xmrtv0OzhC/wa4uNDzv8ih4tFFv1LTYbueX8uFSV6/VEvK5pC8HHxTxVeb BpwZQPt/Cdwis4nYcO3Ub/o4rZ4sOArVsCyYv5cMUwsSTUYM+GkERmZXb/Y4i65wbK86c5 X5Rtia04L9x5izeI5sooSuQT63uMRJg= Received: by mail-lj1-f180.google.com with SMTP id 38308e7fff4ca-32807137b94so39017331fa.1 for ; Mon, 19 May 2025 20:31:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1747711903; x=1748316703; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=Uj5duSIn2gmfsncTogIgvyhtWkcPgMLCLHq+csGoNcE=; b=g2mOFo29HmRc9jll4BoDO0CMPY+LZ18FtjQWz9MjFIIN9594Q904ThuEFAgYlPmo4O 1J19u8eh1xcmDZhWCGhsnv+xCFGfrP3gGAICAgjQMlJjDI+qUJeWIYkNCm2EOuYYpbdn LYJI2pC31SjosbTbEydpmgJ+nZm3o0ENT4rjK/bgJ/L+mmqaBJI8+JOVyqqChosBo32V doS4sdZcFBNqitWFVpjeyofIEJnM+66KpnsQGrR/ersrOEUKHznSr+5gy0S5K4Zt5Y0Y rTharRupArdAvpBJKfoQk6Jfv515gK7sT1mnWJ0y36V5ZTia/+uClPoDzkt2sbG2pG7S 6Q5g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1747711903; x=1748316703; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=Uj5duSIn2gmfsncTogIgvyhtWkcPgMLCLHq+csGoNcE=; b=a/xIAZVpGhJy4y3slwJ2RHZ/bgL8Ciq1c00kYhbUsVz8fpbAGlm34hzDz9DKAG666u 3Qj3lwItBTJUX7ZbQnfbvVc7kPHdLwEphZlxZDJjeYq5wj1dBtSURzHxxSb52/bSob2+ 1NBoA6xfY5ZQETsa1mGouXU6sEigXS1pwh7T8nbRLkv2cXH2JyifgXPz+ulolHr2L+1H tMNkLdJeLFUlI3/8i+F0iOfi0SENWBUq7namzY8Nlme+wf9cAeylM/wWoR7OUeuP2SQm xuOytBShCq+GW1j22Da1udQm8mVnmdQF+iU5dflwa8OM7NwBuCMNBql61YdfUH9ujnNo kI8Q== X-Forwarded-Encrypted: i=1; AJvYcCVRcS+qZIp83Mn5dNtZYtF7inLcN5nCJQddtqFELqyT21svSbOvo8IZUdGJfPdKNJGAgZ1/TAEfjw==@kvack.org X-Gm-Message-State: AOJu0YyHqlYmL/6KrOKco4TEn+UyQLtLxKrHDJOlSErWONdFKA6NWk0C ErTWEdwt4Tivpz8bJWeb5KglPGK/4MPx0BCW+iU5SZFYicLXCCUN74fpuHnlFC8q9/nUKS1hHpj L5H7VtigEXOwQWg1ywspf8eaG565sU0g= X-Gm-Gg: ASbGncvK+NcNWMmeuNHzGMZOuFWsbS4dFeRpZmjfOBBiBTakDg8eOIGZPNxfYPqs4UF YqTtUKjZFqwC/mARJHXeal2S8FtZ0xA6uXdG3GV2hdBTP7zd2mP9Cxvrwm53OZ7vkFZApeN8OrQ OYGck0hWWAu527eUjUUiJ9YHRT01M25r3a X-Google-Smtp-Source: AGHT+IHOwNV/ROHaarvVVjjxiHBO8PcJTHdlYpa18GYBvmtjxh0w7NDl/facyDKOPJX60enKUhk0dIKsPlTY5Qlgdo8= X-Received: by 2002:a05:651c:50e:b0:329:1f6a:3222 with SMTP id 38308e7fff4ca-3291f6a3460mr18368461fa.7.1747711903077; Mon, 19 May 2025 20:31:43 -0700 (PDT) MIME-Version: 1.0 References: <20250514201729.48420-6-ryncsn@gmail.com> <20250519043847.1806-1-21cnbao@gmail.com> In-Reply-To: <20250519043847.1806-1-21cnbao@gmail.com> From: Kairui Song Date: Tue, 20 May 2025 11:31:25 +0800 X-Gm-Features: AX0GCFvroQlyfTT8oJOQql283cMjz0f6cqhQDOST_Liy09pVOHKGMSiyGdGMOEw Message-ID: Subject: Re: [PATCH 05/28] mm, swap: sanitize swap cache lookup convention To: Barry Song <21cnbao@gmail.com> Cc: akpm@linux-foundation.org, baohua@kernel.org, baolin.wang@linux.alibaba.com, bhe@redhat.com, chrisl@kernel.org, david@redhat.com, hannes@cmpxchg.org, hughd@google.com, kaleshsingh@google.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, nphamcs@gmail.com, ryan.roberts@arm.com, shikemeng@huaweicloud.com, tim.c.chen@linux.intel.com, willy@infradead.org, ying.huang@linux.alibaba.com, yosryahmed@google.com Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Rspamd-Queue-Id: 5A0B014000A X-Rspamd-Server: rspam09 X-Stat-Signature: utqguonmeg7ormgc863qyp645kms4zfm X-HE-Tag: 1747711905-860675 X-HE-Meta: U2FsdGVkX1+O2Y9DsHN2zxIxEC+Tkl5NbVMN7G5SaGRaHoLWPAnLGerJIXcgNHZPb7CpApSWOBfotgfk2oQjW87lvje0EHIIgGAE3T5Y1xMqCYiyoiLN4+p+t4WgdkMPrnxfjv6AoerFSkIYvl5zuCOg9wlWQYMYgk85cDOV3GiskB3kvnM3cordpqF+NWowW3QK3fBEjyBo4dEXGOrJ8ZauMr7wvNdBUkRE25083JdwOxL8tRDF9ppLmC1hPw4T6Oc0/d/DVFZi2hQWmjSlLzvQ2KbsRql26y3ROvsA1D63DXqYXkEaHY6wAlSi+dw+GmidOmDsokdI749OaUuag2Gd/UkawGwo99uUjpF/vqHMVIYsRc0YTgJLYsNN2E+zro7a85Clyi4NVIa8PEVGwAr5h3Vj7IyXsIFC5H0/aCUAkmH//9h2XSbgyfpD2RGW/txa6cxbhQOjKOhI1eeGpAag+X3rSqt/420gJaQ40Q8d914v0H527sM4Hp3KNb82VRwzl28ffD1Q+FHlfYUYZeKyvVIfNOP/djl3OmEjtmqk6tZQYnbR7Ay3sgBMd45j7EF4Y+PEum4qZ5CbFcqlfc6j6crWvJxre4VHDBzUNZaldANFQCYWJ0XDZSWEaZZHVlhOFY+2l8A+FzARpzJn7eY7/MUluTB+BEC3JkCINwWoOKXHt3p7Rdra6p5V73mPYbtk0XD1zkh4X9CmlPdEvBZWAMYye1F9tqRjZ+FgzBdqw/Q+8GcyaVGHSVehl7Q+6QkgAhYDyLCfPdhBf0UqZLApL0D23vLwsoLX1R84F2e/nD6Q5jCJOwndlNy/b8d1y/DrEIN3wa1uV2G56R3aoLBzis9PCznTBLGpJsDHDDxRAe8EiFCtw+HuTUJozITvYXaNl8t3SFBifDsLdG6A+rXfaw17/H1uhKFhl0q5gFU8slpC9bXNOEowYu/t10InsBROeigxo9waRg3G+CV vwbiLh3V r6vDTzG/vIY5GB6dAQmvnL+R7V0vu+zkz12vceGNOvIWTqMOdeUIWwEfBDSUMuS5SJvP3w61d4bbqD2R7iFY2Rnyat+azVdJ5vZO/paci0Y9eey8hYfBCQ3OEDLbveFqc4bM61+jqSmGh+xdaHlQh77IcAsXmWQOJE1GIOEOlof8jier5ZFTkEhiwLCaTY6fseavJmXZQ0hGqP1ToD3Eo30MCAuTrLCfaJDfP6HsFDnGzOYimO8kc7ePsV1d/IXiP++ndBTQdXzcWJgKY79f6gktQlKGWhLj/Rd1kYH4/ymyySXDLLG3am5yfSMJRTurOCS7sDtLMEUVQX8Vye9mM9XmHGeN29Xk78MdR7GD1qf0LkqmVNrr5WmPSUA== 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 Mon, May 19, 2025 at 12:38=E2=80=AFPM Barry Song <21cnbao@gmail.com> wro= te: > > > From: Kairui Song > > > diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c > > index e5a0db7f3331..5b4f01aecf35 100644 > > --- a/mm/userfaultfd.c > > +++ b/mm/userfaultfd.c > > @@ -1409,6 +1409,10 @@ static int move_pages_pte(struct mm_struct *mm, = pmd_t *dst_pmd, pmd_t *src_pmd, > > goto retry; > > } > > } > > + if (!folio_swap_contains(src_folio, entry)) { > > + err =3D -EBUSY; > > + goto out; > > + } > > It seems we don't need this. In move_swap_pte(), we have been checking pt= e pages > are stable: > > if (!is_pte_pages_stable(dst_pte, src_pte, orig_dst_pte, orig_src= _pte, > dst_pmd, dst_pmdval)) { > double_pt_unlock(dst_ptl, src_ptl); > return -EAGAIN; > } The tricky part is when swap_cache_get_folio returns the folio, both folio and ptes are unlocked. So is it possible that someone else swapped in the entries, then swapped them out again using the same entries? The folio will be different here but PTEs are still the same value to they will pass the is_pte_pages_stable check, we previously saw similar races with anon fault or shmem. I think more strict checking won't hurt here. > > Also, -EBUSY is somehow incorrect error code. Yes, thanks, I'll use EAGAIN here just like move_swap_pte. > > > err =3D move_swap_pte(mm, dst_vma, dst_addr, src_addr, ds= t_pte, src_pte, > > orig_dst_pte, orig_src_pte, dst_pmd, dst_= pmdval, > > dst_ptl, src_ptl, src_folio); > > > > Thanks > Barry