From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pl1-f196.google.com (mail-pl1-f196.google.com [209.85.214.196]) (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 903C629CE1 for ; Mon, 11 May 2026 02:06:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.214.196 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778465211; cv=none; b=M13dwXZxHO8Gs+w6TW/6jym2mzakqTX95wiHAF6hXnfEn5FRNMye2ZNXxRCKctyde7CtjE+x3ukuTMiONyrK6HmZ8/VsteFicUll1MPmE7jhBFbnKpQ2FXNTPB24B7zXH64qJUWdiue4B2h4uzK8x5pFCoK1r6pmN8/H1kOVfnE= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1778465211; c=relaxed/simple; bh=3Fgb33ulT0SoxvsyLHShMrDo4Z5bDVk0MGTDxGndSmE=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=eTIgm03ScPc9te71aZpbc70q+qrctEcsMlaz+FaTTt/vpT66vlu4F1EyeZHDPqVdF09Om0DUwGDkvqoHEtbgy63n5VVKDC5C356l+TZHVceC/VjZgw/Dk7hFecmqxvJgiDbC8g1QbqKFErzPRp/RJmG92hk4IQ7DU6eNA7sQcZ4= 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=PIcY808h; arc=none smtp.client-ip=209.85.214.196 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="PIcY808h" Received: by mail-pl1-f196.google.com with SMTP id d9443c01a7336-2b788a98557so27638945ad.2 for ; Sun, 10 May 2026 19:06:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1778465210; x=1779070010; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=YUvosZ09yddchp9wYhlE3KGFQdvsqe92JMeqa7iwdSA=; b=PIcY808hlxYSutIPi/Z0JzKF+di0kiTYtlK6/i0G5K/69dIY16Xco46JblZ99PaZaC gGArtj4WSKI5E0yhFjYZOLfNDtqdtS8oAh578DWScR6olUH3qdRDkujwDDMxFLU/ENG+ 7N163rAFmWkz+1GQjh3hSTZ7ZqXTIOuuf4FjdJ6fjNy6B980sOkVFCjSMhlIGzNVUuF3 zOcDL1WyezrxHeNyX1QK6t65F30rUrDiutAcsNpTR2aKRgF/1MV3hYjOA4zW/piOD1pV ub4Qi78a5WRBaPLUYBgnSip3hDMZWSXQPe/mLxS/QBvWxrxV1/n9vfjxk0WppWCSFCsU YXlg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778465210; x=1779070010; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=YUvosZ09yddchp9wYhlE3KGFQdvsqe92JMeqa7iwdSA=; b=WHbJk9VFGWBTSpYKogGalG7kcldmVxs0OL3lylpeKKuSkZGZ1sprJPa9jKgpZqo1hW ekWAMh23fepa6gkBBS8F8ooniqEppVUQ8aPhKk4IAhHx/jKFjgF90AzJzgza1p8Cex61 CrID3WfPH81mvZkeZdvDPDBMFV0jHfa7SccfwUy/Fo+U3vjUvnaK1AS0z2QknwZE/dhQ DJbkTUhQyuW4BPpUD7sf2p6wasGfNTrH4Pvp6DZPUNYgVDUKmS23r8e1XE4lDtp3+shW oo6wsmRCLS/+ulyK9ZVwzz20kXV4eFnTTYrA5deAMuJa01Kqb9OBjrMiQ7fkSRzVqiL+ h28A== X-Forwarded-Encrypted: i=1; AFNElJ8+s6MVv7kIAA1brgtXzt8hSm/2l3kpSU+mR2boX19J9Jjz0XU/00reAzOgoXoUO8OnM9jd6DpXf72I99k=@vger.kernel.org X-Gm-Message-State: AOJu0Ywwt7inrpKGk5g2Qu6EtPnG1EotMY/BYaTbysMmjmE3OmLTAh7v o08gUnZ4jt7eCw8EWsiQzmDJTOcITtiyMi1B14YYaMz+0K8oiYrHQzD2 X-Gm-Gg: Acq92OHjvs7DULWq5xKtp0FY94qxxi4HAJ5Cmf1lpe46JONXrzyiM/lMLV45s3uf5A1 q5dVTOlAWGacZ9hgplPWbijJpKGcib5nCPvkTlsKiKDc8IuZLbFjS1jah7m8X+LQ4hC3it2UPfl 4u6rGngnvsWH9CS4HUM50Lb1yGisjTdK5a19RfOI1TR0N0ZVGUHbsAbWxD1V9sWdCu5l6eC9Xt3 cWHpO3E/JbsMaV4GvvjKI/uTXhOuE0MudjEq+0IGa/IjmrPiptJNG1hk1UHQKdLkpFJw+q8RIkL yWV9qYsr3cvB2d/q5hHI5vOwf29ZMoDoUVLUVBnmR4knTt9Z/Mki3J6Jeo2+GFVtW3jEmeFpZvM wTZr2x8e99lhzvLDgpdSDjIoJmTq2ovgxmOsFuREziz9ubSdW88/90/NDXd1XSwmJyo+HNjl3ns 9iR5dPd49ZjbcGIpM5EE5dXmn08J624d8= X-Received: by 2002:a17:902:70ca:b0:2bc:dd58:3dc5 with SMTP id d9443c01a7336-2bcdd584272mr3255495ad.7.1778465209728; Sun, 10 May 2026 19:06:49 -0700 (PDT) Received: from [10.125.112.20] ([210.184.73.204]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2baf1e35ba2sm89530205ad.50.2026.05.10.19.06.45 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 10 May 2026 19:06:49 -0700 (PDT) Message-ID: <8aa6374e-7bfe-47a4-be8e-8a4ea1cc58fe@gmail.com> Date: Mon, 11 May 2026 10:06:43 +0800 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 0/2] mm/khugepaged: fix sub-PMD MADV_COLLAPSE range handling To: Lance Yang Cc: akpm@linux-foundation.org, david@kernel.org, ljs@kernel.org, shuah@kernel.org, zokeefe@google.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org References: <20260507070558.3064142-1-chenwandun@lixiang.com> <20260509094732.83643-1-lance.yang@linux.dev> Content-Language: en-US From: Wandun In-Reply-To: <20260509094732.83643-1-lance.yang@linux.dev> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit On 5/9/26 17:47, Lance Yang wrote: > Hi, > > scripts/get_maintainer.pl is your friend :) > Please use it to Cc the relevant maintainers and reviewers next time. Many thanks for your kind reminder :) I will do it next time. Best regards, Wandun > > Cheers, Lance > > On Thu, May 07, 2026 at 03:05:56PM +0800, Chen Wandun wrote: >> madvise_collapse() computes a THP-aligned window from the caller's range: >> >> hstart = (start + ~HPAGE_PMD_MASK) & HPAGE_PMD_MASK /* round up */ >> hend = end & HPAGE_PMD_MASK /* round down */ >> >> When the caller's range is smaller than one PMD (2 MiB) and/or not >> PMD-aligned, hstart can end up greater than hend. In that case the >> collapsing loop is correctly skipped, but the return value was computed >> as ((hend - hstart) >> HPAGE_PMD_SHIFT): with hstart > hend the >> subtraction wraps unsigned, producing a huge value, the comparison >> "thps != 0" fires, and -EINVAL is returned instead of 0. >> >> A concrete example: >> >> /* both cover less than one THP; both should return 0 */ >> madvise(aligned, PAGE_SIZE, MADV_COLLAPSE); /* OK, returns 0 */ >> madvise(aligned + PAGE_SIZE, PAGE_SIZE, MADV_COLLAPSE); /* returns -EINVAL */ >> >> The fix moves the hstart/hend calculation before kmalloc_obj() and >> returns 0 early when hstart >= hend. This also avoids the kmalloc, >> mmgrab(), and lru_add_drain_all() calls for ranges that trivially >> contain no PMD window. The same effect could be achieved by only >> guarding the final return expression, but early-return keeps the >> no-op path free of the allocator and drain overhead. >> >> Patch 1 fixes the kernel bug. >> Patch 2 adds a selftest with two cases covering the hstart == hend >> (aligned, was already correct) and hstart > hend (unaligned, was >> broken) scenarios. >> >> Chen Wandun (2): >> mm/khugepaged: fix spurious -EINVAL from sub-PMD MADV_COLLAPSE range >> selftests/mm: add MADV_COLLAPSE sub-PMD range tests >> >> mm/khugepaged.c | 9 +- >> tools/testing/selftests/mm/.gitignore | 1 + >> tools/testing/selftests/mm/Makefile | 2 + >> .../selftests/mm/ksft_madv_collapse.sh | 4 + >> .../selftests/mm/madv_collapse_range.c | 141 ++++++++++++++++++ >> tools/testing/selftests/mm/run_vmtests.sh | 5 + >> 6 files changed, 159 insertions(+), 3 deletions(-) >> create mode 100755 tools/testing/selftests/mm/ksft_madv_collapse.sh >> create mode 100644 tools/testing/selftests/mm/madv_collapse_range.c >> >> -- >> 2.43.0 >> >>