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 83859C77B7C for ; Thu, 3 Jul 2025 06:07:37 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 1D7E06B0116; Thu, 3 Jul 2025 02:07:37 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 187506B0117; Thu, 3 Jul 2025 02:07:37 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 0507A6B0118; Thu, 3 Jul 2025 02:07:36 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id E7E516B0116 for ; Thu, 3 Jul 2025 02:07:36 -0400 (EDT) Received: from smtpin30.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 98C29140581 for ; Thu, 3 Jul 2025 06:07:36 +0000 (UTC) X-FDA: 83621921712.30.A888A7D Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) by imf17.hostedemail.com (Postfix) with ESMTP id 1A2494000F for ; Thu, 3 Jul 2025 06:07:33 +0000 (UTC) Authentication-Results: imf17.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=qUoZ6nbT; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf17.hostedemail.com: domain of aboorvad@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aboorvad@linux.ibm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1751522854; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=8SoKOth7WukoanuC5O8znHCvWYLEtx3ySqY/SXhmPsc=; b=0Lt3KXuC97MzicynWSGRoG9CWZRgZxB2M88BzRIRhOuxVlRcuNxLhMqSUstrXbyJ9grGMb A8MC+VzKVeWVza5TmmIjdmT2E1UcMmKGCw60nqvQrFUU9DLx9iWII9Mx1iAs+N+XGemANE 2WanKMv6fJsE+7b0sKFYedOhWtyLS5w= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1751522854; a=rsa-sha256; cv=none; b=cmZMlnppFL+yJHJbmYaggdhHkNlazO1l7sDS7+jQz3fs8IVnkeXYN5XfiZqCNILSp59mRW p2okB161rZZi9UV0eH2Avhati9zmC4jcShI+gPuoDJ04BRChF6Gr29LZsB1ByxSiGlYcmI aDRSxpHZYLOGKeOqNDA7deA2ucxAwNM= ARC-Authentication-Results: i=1; imf17.hostedemail.com; dkim=pass header.d=ibm.com header.s=pp1 header.b=qUoZ6nbT; dmarc=pass (policy=none) header.from=ibm.com; spf=pass (imf17.hostedemail.com: domain of aboorvad@linux.ibm.com designates 148.163.158.5 as permitted sender) smtp.mailfrom=aboorvad@linux.ibm.com Received: from pps.filterd (m0353725.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 562Mwk9t019240; Thu, 3 Jul 2025 06:07:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=cc :content-transfer-encoding:date:from:in-reply-to:message-id :mime-version:references:subject:to; s=pp1; bh=8SoKOth7WukoanuC5 O8znHCvWYLEtx3ySqY/SXhmPsc=; b=qUoZ6nbTkVEHuNHsJ4uNSxVHKTpOBe+w3 0viuNxBR1aS2lpyqgvBM8FO7i02DRr+FkLR+eutqc8kIpsQbwzYAhMQhyhMaSIYx TYM6Sk2eZplVo0BsaqQASbV8eYUlrk2l3DvnXIMrRngA2KxvjQgGc6iBt6skkpw/ refxTesizxL5iYAK3ESnTBSKamywRvHU7d9UwCOLWBYkA80gZrEVCBxNSKa3kT/S bD63U0QgBG/G/cXEB42xVuUeU6hgx1giB/U7Mi4WC++xFVbzrw2UZJzO3DhMhWAA fMi3pLqmXQsyKx9yHyU92t2Ymr/zvXYCSJ+wWtrFD3aJpXuvePE2w== Received: from pps.reinject (localhost [127.0.0.1]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47j6u21f0c-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 03 Jul 2025 06:07:28 +0000 (GMT) Received: from m0353725.ppops.net (m0353725.ppops.net [127.0.0.1]) by pps.reinject (8.18.0.8/8.18.0.8) with ESMTP id 56367Sr2006803; Thu, 3 Jul 2025 06:07:28 GMT Received: from ppma21.wdc07v.mail.ibm.com (5b.69.3da9.ip4.static.sl-reverse.com [169.61.105.91]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 47j6u21f0a-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 03 Jul 2025 06:07:28 +0000 (GMT) Received: from pps.filterd (ppma21.wdc07v.mail.ibm.com [127.0.0.1]) by ppma21.wdc07v.mail.ibm.com (8.18.1.2/8.18.1.2) with ESMTP id 56326sO0021914; Thu, 3 Jul 2025 06:07:27 GMT Received: from smtprelay03.fra02v.mail.ibm.com ([9.218.2.224]) by ppma21.wdc07v.mail.ibm.com (PPS) with ESMTPS id 47juqpuan5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Thu, 03 Jul 2025 06:07:27 +0000 Received: from smtpav02.fra02v.mail.ibm.com (smtpav02.fra02v.mail.ibm.com [10.20.54.101]) by smtprelay03.fra02v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 56367Nvt29425938 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Thu, 3 Jul 2025 06:07:23 GMT Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 6F3D12004B; Thu, 3 Jul 2025 06:07:23 +0000 (GMT) Received: from smtpav02.fra02v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 2E20220043; Thu, 3 Jul 2025 06:07:18 +0000 (GMT) Received: from aboo.ibm.com.com (unknown [9.39.26.205]) by smtpav02.fra02v.mail.ibm.com (Postfix) with ESMTP; Thu, 3 Jul 2025 06:07:17 +0000 (GMT) From: Aboorva Devarajan To: akpm@linux-foundation.org, Liam.Howlett@oracle.com, lorenzo.stoakes@oracle.com, shuah@kernel.org, pfalcato@suse.de, david@redhat.com, ziy@nvidia.com, baolin.wang@linux.alibaba.com, npache@redhat.com, ryan.roberts@arm.com, dev.jain@arm.com, baohua@kernel.org Cc: linux-mm@kvack.org, linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org, donettom@linux.ibm.com, ritesh.list@gmail.com, aboorvad@linux.ibm.com Subject: [PATCH v2 3/7] selftest/mm: Fix ksm_funtional_test failures Date: Thu, 3 Jul 2025 11:36:52 +0530 Message-ID: <20250703060656.54345-4-aboorvad@linux.ibm.com> X-Mailer: git-send-email 2.50.0 In-Reply-To: <20250703060656.54345-1-aboorvad@linux.ibm.com> References: <20250703060656.54345-1-aboorvad@linux.ibm.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-ORIG-GUID: iTBI4fHhg2lWJeei_9P1gtvuTVqJHSRz X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzAzMDA0MCBTYWx0ZWRfXwcuLCf7j22UF 1REt/gZaGtXFFER7Wobn/ZSktMfbDYvvaXy6UDEGk28U/l9HqEZhfrbSwfbtQIRrsqr/D6s9fPw UUl7YJjwRcRdm83SZ/gEielaGEDdlHQMCzQdIIcwhhUr1MJt326i4ygak9Yx0xIJg2VFpDoUTew slftQ1CfIEcfcJDdH5xBBjVaOpZFHYnG3Xz+NE9019iThJPnl/NHozl7/kOv1TRPQgyMHRXAJr5 bOYD5DAJhjg1Unc+Yyy+aKr0nsolwKRNdnxgiQsk/AzlMd3cWu1Rg+48unvUMJgbagv7lNG+Hpy gtUtMMKHoq2a3/R2TYdyRj3iqwYtooXMXviXuaJt462clxQBC00T+GOBu+ukjt5wspM8iSBlsxE TrIevu5+p3DzOJClOMvnFW+HBG6Gu/8oLWAAhqltkzfXQzvjEJ1O/dTJmmL5PZYMQQSunhQi X-Proofpoint-GUID: n5Fw5RbeIM-J-jusQvgRtsy7Mlpx99nO X-Authority-Analysis: v=2.4 cv=GrRC+l1C c=1 sm=1 tr=0 ts=68661e21 cx=c_pps a=GFwsV6G8L6GxiO2Y/PsHdQ==:117 a=GFwsV6G8L6GxiO2Y/PsHdQ==:17 a=Wb1JkmetP80A:10 a=VnNF1IyMAAAA:8 a=yVrA2fujCtLeWmk1P3cA:9 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-03_01,2025-07-02_04,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 clxscore=1015 priorityscore=1501 adultscore=0 mlxlogscore=999 mlxscore=0 impostorscore=0 phishscore=0 spamscore=0 suspectscore=0 bulkscore=0 malwarescore=0 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.19.0-2505280000 definitions=main-2507030040 X-Stat-Signature: aifj16hwwokwjcntahhr6k6h1xfepbsh X-Rspamd-Queue-Id: 1A2494000F X-Rspam-User: X-Rspamd-Server: rspam07 X-HE-Tag: 1751522853-265353 X-HE-Meta: U2FsdGVkX1+qtSWg0Ye4MhpSHro4lzq2y8ufRmc3TH5VBdU+MvySh3u+1QBBl6rBrBzIw3w4F5fq38dslt/SVWZKywyzU641qNwkpUqJAwJ3Mj7gdQ3nxVN13LiOjMwsgkbM/Jk7jwxabrKmmWSisIrVdkQBJcRuKSzWLcOAwuiAniEOczQquoNlA5MLqgpTe6SL0d4SkTNEQpR5Vean6+hD+8DgPvSNoOgAdYUPFJNOsq9zIEq1xQ0a2g7rsTwx+kzAH62tCr9fGQ8Fqi6rs/dNQ9/8piShmnCLEaJU4eMzhIupaX6oGjhf4K5ZByR9A33IpednuhLa0QJHRGm6pGJbHzqdmq/z/D76I8XUIfV6r1/KIApQq1lIRlGmBR2gqbLCnj+e/9yyk6obcLNvVyjTniBmbunH40qITs4etfvGWLLsEjxMtPbPVFjC1p2Ny1HBZwt1RXRcOBbhq/1P+VVIu3lTMznsDvkV8q4bY/PmC5BqpHNhDJy7RM78yKK6V9ph9HbRkIbuvGgTRPNywqjzroZl2HeS5mg7YSYKsDfeiRauEC6cIL4dtyv1Q4BhDYjX8KOt0GrqSMIcFUybpQgYkG8EW9f1URbDXO7XHqAnuyMVbVtlodVVBf50SvPwwX+AfXYiaAiB7K5tc01LMeewApRED8K0JSa8xnsSlLWnR5w+Im1/pNIeJPoYEM0roISs9TIAkfdO87iLg7It2LRZxfk89xwcig/zf97O2HqFRTj3/DPW5bBpPQUyEHs1v0TTL9UodDE0KW70w3ZOUzHGTy1llJfm8AvSztjPDiD5/49wlTAo/Dr+JT6tQOCJIxuaAdxYPtQd1OmQe8442PNt4nhgg8/wpC4ad/HRsr/Ezv1E4Tr/KKXMBpVdFntHSux6Qrm7AJNGGTAoejhnYF2CzRpwNHM/4O2y7pAJiulohXWrXZU5BP+piX9cow7+6umj3rVyA+m6IOMzMuN 2lSE7fBF 3Fg9tvNSpinUg5hyNI8kk6a2CEKKz/ErMy12dxTLwe+EJQZhQtqpvyOHXBIV7W+I8OEPthE63aBRrs9guDq8ZvxBNsFkfqRmnawICp8MZyZt5spbw0I12afJxA7zClXYpW2kRp/Et5SEB/cL1FYEIXGX0BtLR6QGinMrFUYtSAb1NUPAEcnx88YwyvN46bApfWvYFKQ6GIlnYcIgLP5AnY9/3SfGfAxwRauG0svuGj3+4QDae5kvg5tnbYu3wn9t8YbroYL6BjIJ+c0ai7RFv5K7HA5MqZvuVq/5yGo0w+NScuF3HRU4A2LkKf8WXFeWVfYOj 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: From: Donet Tom This patch fixed 2 issues. 1)After fork() in test_prctl_fork, the child process uses the file descriptors from the parent process to read ksm_stat and ksm_merging_pages. This results in incorrect values being read (parent process ksm_stat and ksm_merge_pages will be read in child), causing the test to fail. This patch calls init_global_file_handles() in the child process to ensure that the current process's file descriptors are used to read ksm_stat and ksm_merging_pages. 2) All tests currently call ksm_merge to trigger page merging. To ensure the system remains in a consistent state for subsequent tests, it is better to call ksm_unmerge during the test cleanup phase In the test_prctl_fork test, after a fork(), reading ksm_merging_pages in the child process returns a non-zero value because a previous test performed a merge, and the child's memory state is inherited from the parent. Although the child process calls ksm_unmerge, the ksm_merging_pages counter in the parent is reset to zero, while the child's counter remains unchanged. This discrepancy causes the test to fail. To avoid this issue, each test should call ksm_unmerge during cleanup to ensure the counter is reset and the system is in a clean state for subsequent tests. execv argument is an array of pointers to null-terminated strings. In this patch we also added NULL in the execv argument. Fixes: 6c47de3be3a0 ("selftest/mm: ksm_functional_tests: extend test case for ksm fork/exec") Signed-off-by: Donet Tom Signed-off-by: Aboorva Devarajan --- tools/testing/selftests/mm/ksm_functional_tests.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/mm/ksm_functional_tests.c b/tools/testing/selftests/mm/ksm_functional_tests.c index d8bd1911dfc0..996dc6645570 100644 --- a/tools/testing/selftests/mm/ksm_functional_tests.c +++ b/tools/testing/selftests/mm/ksm_functional_tests.c @@ -46,6 +46,8 @@ static int ksm_use_zero_pages_fd; static int pagemap_fd; static size_t pagesize; +static void init_global_file_handles(void); + static bool range_maps_duplicates(char *addr, unsigned long size) { unsigned long offs_a, offs_b, pfn_a, pfn_b; @@ -274,6 +276,7 @@ static void test_unmerge(void) ksft_test_result(!range_maps_duplicates(map, size), "Pages were unmerged\n"); unmap: + ksm_unmerge(); munmap(map, size); } @@ -338,6 +341,7 @@ static void test_unmerge_zero_pages(void) ksft_test_result(!range_maps_duplicates(map, size), "KSM zero pages were unmerged\n"); unmap: + ksm_unmerge(); munmap(map, size); } @@ -366,6 +370,7 @@ static void test_unmerge_discarded(void) ksft_test_result(!range_maps_duplicates(map, size), "Pages were unmerged\n"); unmap: + ksm_unmerge(); munmap(map, size); } @@ -452,6 +457,7 @@ static void test_unmerge_uffd_wp(void) close_uffd: close(uffd); unmap: + ksm_unmerge(); munmap(map, size); } #endif @@ -515,6 +521,7 @@ static int test_child_ksm(void) else if (map == MAP_MERGE_SKIP) return -3; + ksm_unmerge(); munmap(map, size); return 0; } @@ -548,6 +555,7 @@ static void test_prctl_fork(void) child_pid = fork(); if (!child_pid) { + init_global_file_handles(); exit(test_child_ksm()); } else if (child_pid < 0) { ksft_test_result_fail("fork() failed\n"); @@ -595,7 +603,7 @@ static void test_prctl_fork_exec(void) return; } else if (child_pid == 0) { char *prg_name = "./ksm_functional_tests"; - char *argv_for_program[] = { prg_name, FORK_EXEC_CHILD_PRG_NAME }; + char *argv_for_program[] = { prg_name, FORK_EXEC_CHILD_PRG_NAME, NULL }; execv(prg_name, argv_for_program); return; @@ -644,6 +652,7 @@ static void test_prctl_unmerge(void) ksft_test_result(!range_maps_duplicates(map, size), "Pages were unmerged\n"); unmap: + ksm_unmerge(); munmap(map, size); } @@ -677,6 +686,7 @@ static void test_prot_none(void) ksft_test_result(!range_maps_duplicates(map, size), "Pages were unmerged\n"); unmap: + ksm_unmerge(); munmap(map, size); } -- 2.43.5