From nobody Mon Sep 28 23:07:07 2026 Received: from mail-pj2-f1.google.com (mail-pj2-f1.google.com [74.125.227.129]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id F3EAF3E315C for ; Sat, 15 Aug 2026 10:42:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=74.125.227.129 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786790539; cv=none; b=ACumwPO9jG8V0p2LTfeZZFPRwzf+WhL23CwtLI9d5u5htJn8THbOTZd8WUAB/5e0nVZ0r97XrBb8hTULZqEKXYFXdFhVwEHpGTso/w+6bPZHZ9V1BFX3NhTDvSMB6KFDFYYnT4eKjFIYSRMoqWsQ83Sbbnom+Ro0dIBZF7HPr/o= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1786790539; c=relaxed/simple; bh=Hp0KVNpf0doCy5AAYfuWF5+uRKJAQflHpXL9ojE7B9A=; h=From:Date:To:cc:Subject:Message-ID:MIME-Version:Content-Type; b=ujHUeRZPb6bUE6mznFq+5+LYwHVoAFDfZzlUkvHsnOHObpZIglEivZELfI2dP+8OiQq/2as1zFHjsx3vzk9ZqOiJFoV4CIQmlPU2M4o1CCOJXBW04XUQ1zec8cMpgTAN8lMxtB0hPSw/ZJ4sDY+QCxjSrnsxZUCIVWKQPrnB4AA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=OfqeHshR; arc=none smtp.client-ip=74.125.227.129 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="OfqeHshR" Received: by mail-pj2-f1.google.com with SMTP id d9443c01a7336-2cabf1f1051so6872705ad.0 for ; Sat, 15 Aug 2026 03:42:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1786790537; x=1787395337; darn=vger.kernel.org; h=content-type:mime-version:message-id:subject:cc:to:date:from:from :to:cc:subject:date:message-id:reply-to:content-type; bh=QL+D2ZnVKPwk1r1lVr8tcXF6AdrhIQ8WvVtGFSKnTdo=; b=OfqeHshRbKNwF4VCpTV5E+7fQlBLvq5Gm5U4Fu+stE4Og2BN9dYx4V767b0XK3JxCo wPA8sgLXenPtFg2lt6MUkTPtrz0bWrnEp4h/Fs6UpJP4Jn55ODE4sSDc1BxAOLhGmkcm ycayrquELSSbNjC1V8KsAAx6kORnLca1MyaYTmFoZk7m+DaUuLxwatvSxwuMFtU2yjD4 VPE0NZdM/epilEaFkn3SAIfV0t2saoMlNHjnVPKHIDWBZ++TYJ+idzBzMfc86AQI4wDc d0bYUOSwVINdDpnC79I7MEaL/2/bROfDtuzR1XHz1QZUuOGC+LJrq50dqNRfyZkZTftC lsAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1786790537; x=1787395337; h=content-type:mime-version:message-id:subject:cc:to:date:from :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to:content-type; bh=QL+D2ZnVKPwk1r1lVr8tcXF6AdrhIQ8WvVtGFSKnTdo=; b=Avw62LvFqBVnnMiEyS8jzXOni8XaNkuvix4fOgeT+NTaAb036hLYcOehWXpypF98xw zxa3HgvSaR/lRBPQjimDZTVlc0exBHGiTFykf7UmmGlCoTcvOw0lKb0WvUui5wi85oox faUXvT5vvNb19umVaSBPXSy4Qp6hTLcAz1qdJslppO4zlWf7i0I5BZUXNqBzVmoOsrhV Egc+4jaTSFe4txYu36pn1BbYrwJUWO9mA1DmW/UlTraeMeWMbmayu4LWMUAnRUbni369 10aEEMI0yS9rKkIIvs+GqMg3S4vwyFDGFpsaad8YTdt+fNzuXyaU+y5KdHnEaWtq+tzg DFcg== X-Forwarded-Encrypted: i=1; AHgh+RrXo8VKSSSftZcmi+w02gBBT4kPNKXrLK97gHGLroUAH6o80Nbf87Se1NnFg6jtfC6UAYCvhkx64WBhZHA=@vger.kernel.org X-Gm-Message-State: AOJu0Yw10bwhbhKyp6O10v6mpzv4YNfa6jgqT9jFnx4i8yezQkJYpb7B dv+bhnlSx4oSzl8jN9adz60nBYUTcMuqomWrgTALoblMlIi1FJVwl301 X-Gm-Gg: AR+sD12nWsYaFypaMoa4quyBT0sMSFut4gEp1zjKFr8/4vG2FK3gNtKnYqPoEXGjAiM 6hKHjRoY0qVslMiL0FSXb7ho8B1j65+cV+ikt/qHKntBdCw86pUvL0Hiy4nieWeB4Ikj+UHWTGh cMD/Tnol7JQ6PEI5WiBiO9DSn3+NlEDQsFsal2l9pjgAdKZcIgAr0Y68MrrbiUtD9vvKoMUbvkC t1yIFcynm39qVN4WYTsT09K3BD3dQ7H90dSILaWErKkq8rD45gZR8ZZcUlxMj5yK1eFhLi+UGRu AiiELDS0RdS8Nchz/nmervCyn2O1eikmL0RaPmSDPWJdrMosv/g7yz6OQhexu6xzR2DB2Dx0tQn T9QPOY+jVesn6Bubf9yiG+DuexIZCE2mjDkXeJ0qD5kGGEqWp+Re8aMGlXqBR++FgHzRrUyZjoc C9FYZVDF5/U0+pAQYLEgWEs+9RS/0y/lOtO0cRrWsmVj1nAJmOg0Ec X-Received: by 2002:a05:6a20:ce43:b0:3b4:7eb0:47aa with SMTP id adf61e73a8af0-3cc71d19146mr15675813637.25.1786790537029; Sat, 15 Aug 2026 03:42:17 -0700 (PDT) Received: from 192.168.1.2 ([157.85.198.7]) by smtp.gmail.com with ESMTPSA id a92af1059eb24-1413889bca5sm25944351c88.12.2026.08.15.03.42.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 15 Aug 2026 03:42:16 -0700 (PDT) From: Foxie Flakey X-Google-Original-From: Foxie Flakey Date: Sat, 15 Aug 2026 17:42:12 +0700 (WIB) To: akpm@linux-foundation.org, rppt@kernel.org, peterx@redhat.com cc: linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: [PATCH] userfaultfd: reset err to be 0 when move_pages_ptes succeeded Message-ID: <9c936a9f-ed27-e510-872f-5b3b8c680975@gmail.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" An fix for edge case can occur if move_pages_ptes return -EAGAIN, later when checked and it is EAGAIN, outer loop would retry again on same page and succeeded but the err isn't reset so the outer loop would think need to retry again so it goes back again and move pages again. On third attempt move_pages_ptes will fail because it already moved and returns an error that is not EAGAIN when outer loop checks again it sees non EAGAIN so it dont retry and break out of loop. When loop is terminated it did not update the "moved" variable from successful 2nd iteration. That behaviour manifested into this at userspace Source: [ .. unmapped .. ][ .. mapped ..] Destination: [ .. mapped .. ][ .. unmapped ..] ^ ^ \ Kernel moved this far in actuality What is reported to userspace on struct uffdio_move's move field When the previous behaviour is Source: [ .. unmapped .. ][ .. mapped ..] Destination: [ .. mapped .. ][ .. unmapped ..] ^ Reported to user space via uffdio_move's move field Fixes: 50944692052b ("userfaultfd: opportunistic TLB-flush batching for pre= sent pages in MOVE") Signed-off-by: Foxie Flakey --- mm/userfaultfd.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/mm/userfaultfd.c b/mm/userfaultfd.c index c3adedaaf7d5..595e7e232f90 100644 --- a/mm/userfaultfd.c +++ b/mm/userfaultfd.c @@ -2069,10 +2069,12 @@ static ssize_t move_pages(struct userfaultfd_ctx *c= tx, unsigned long dst_start, ret =3D move_pages_ptes(mm, dst_pmd, src_pmd, dst_vma, src_vma, dst_addr, src_addr, src_end - src_addr, mode); - if (ret < 0) + if (ret < 0) { err =3D ret; - else + } else { + err =3D 0; step_size =3D ret; + } } cond_resched(); base-commit: 62cc90241548d5570ee68e01aaba6506964e9811 --=20 2.55.0