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 A0FA7E77197 for ; Tue, 7 Jan 2025 14:51:16 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 398D16B00C0; Tue, 7 Jan 2025 09:51:16 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 3229E6B00C2; Tue, 7 Jan 2025 09:51:16 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 1C2596B00C3; Tue, 7 Jan 2025 09:51:16 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id F22156B00C0 for ; Tue, 7 Jan 2025 09:51:15 -0500 (EST) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id 8BE6EAF540 for ; Tue, 7 Jan 2025 14:51:15 +0000 (UTC) X-FDA: 82980943710.05.418266B Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by imf27.hostedemail.com (Postfix) with ESMTP id A680140007 for ; Tue, 7 Jan 2025 14:51:13 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf27.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1736261473; a=rsa-sha256; cv=none; b=VY8mSV2+jrlYfh+Xv8c6/Ba6nYcrko+U05ub4uIEZ9MJHtH8bU1Hvdf3t3Je0npoODIbf2 zjN2miyLO7x11dD+UAd7/2BhWSZ8rW0kUPRFSLV0Xj6UQjCN5U6SSooDbe5CmfQEcfRJnl Ya98q6ovgf4N97xTY/Jdu3MJGURyfSo= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=none; dmarc=pass (policy=none) header.from=arm.com; spf=pass (imf27.hostedemail.com: domain of ryan.roberts@arm.com designates 217.140.110.172 as permitted sender) smtp.mailfrom=ryan.roberts@arm.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1736261473; 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; bh=D0Wqzn8p77o4WrfqAwZmeBQL37pxxtRb1Q58bnMmTCE=; b=62/AssVGic4z6DJZFsb3ckHTI8p0oUj5lpqvPIGB+IE/V6hArT8LrmM0CU2kO+EiNWcSUY ky+TLpjQB9OnAAY2dSYueAgWwQnC87bFu3PA9p8CLqZq8wGnQeFLHynFVpEij8EWkgQk9M PYbQJXk0hWIIG1NDJSjRIrIDVk/k+zI= Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 313821424; Tue, 7 Jan 2025 06:51:41 -0800 (PST) Received: from [10.1.31.134] (XHFQ2J9959.cambridge.arm.com [10.1.31.134]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 964FD3F673; Tue, 7 Jan 2025 06:51:10 -0800 (PST) Message-ID: Date: Tue, 7 Jan 2025 14:51:07 +0000 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1] selftests/mm: static process_madvise() wrapper for guard-pages Content-Language: en-GB To: Lorenzo Stoakes Cc: Andrew Morton , Shuah Khan , Christian Brauner , linux-mm@kvack.org, linux-kselftest@vger.kernel.org References: <20250107142937.1870478-1-ryan.roberts@arm.com> From: Ryan Roberts In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Rspam-User: X-Rspamd-Server: rspam03 X-Rspamd-Queue-Id: A680140007 X-Stat-Signature: 7uzd9m5kj6nhwca44gsin4t6a4cios4c X-HE-Tag: 1736261473-480257 X-HE-Meta: U2FsdGVkX19WghEdRg7UxACVbDt4YSZ+RK8iJ0Tv3trSS3ypzWTk3bIJX8ROvHhecfUu2RBOaMMOZ+HL6fqZgnZr0DDWlclF+Hk7phr9A3G52LjHPco9K7MV1Q/OC9ozVEOSfvt5RcZr4k2jqd96moQdfa6Bddqzeer5Jmo8O7C41o0qgmn3bM2cbnAK++MiBUquxvKPUZuLsOtAaKeKW+910dYtyMno3740cDv0V5kPVKzKRvDD6+34bRH7S8RpWia4uut2yTaK+0noxNevP3gob5pT25CL7YJX4O1lwp3lrUwYPnpvwgMNXcbAafRwyMxNGqfVGO3GN+a+2ARQs2/DRm+mBbIRutlvu2imeYGu1PhPPXFiBN1bPEA8zYY2cAdwmEx1ELhdmP7lDJ6CsAAZ4I4vTnhMpxx/cp+RXoG1XAZEcMvt77UBCwUUsU342DvxNGm94n5LcuaVWteoP3KuycVJZIGwMmfRk7OaWumreyT+ROoWxDTX586wMoVC8CJVxfSIO5oUrpYBaJ9yYUyb8kX1ISo0Dnncpk8NkKpfNWN6xILevZg5wRRCn6lTmsUlE8011iwXzZ5ZnMHd4IhqGcKbVp/Dz5cjTTuKKzlg7ftJt16zAQs3+4+Nkg3CyR4xvA+CgYY8GyreHZNfFI3IYOzpJ4UQVC/3i5TRap3KIIsUIIqErXVbwHZLEzhAhTi7gdmRQ6UPa58qSYkNoGIt4LHhyC0cwo5j8CvyIgPAD/+27YJNoTlocjFfxDGeHoopoBSsaJQ8+0zw4BS9t2fRLTIQCkxRSeilhDwKaypyAV+DG9oL2tD1FJuFjLrDjG6IEXMA/XUJlD22c4zbbH4UycBMkhEmnCYfVCs8lKfKBwIKSaseT5om6qgwYQx0Rtol5nKYKseVTu8ad39poHrqMga+cSPNsdiXYRr2wafank7TIvP9/3ukqBWiV1ByaY8AhKAWUAtCI3mIZp5 sSl6wBFr srSfYFm++7MGwo51Om4wyHxGUjkHlfCEMhojpO7rYGN6DJQ6xWCTgDdtAAYvnnn8XCpFkQ5af6C/z3kjlnLFz6sMMqhFFKyKkZDhG9A4jFMVEcEYaq4aye+yRspi5tJ6mbkZko9afYjI+mNl8Obtuctmo25xbic4smohEiuw4jxCthzeEhzbTFWPdZK/v/8xYQXGzcOFHztrjuNgLL0M7ZB3/bcozNYz23Zutvvx4YeowDV8CElY1CPF5MAHt6UaEvekBnWLTpbuE66U= 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 07/01/2025 14:48, Lorenzo Stoakes wrote: > On Tue, Jan 07, 2025 at 02:29:35PM +0000, Ryan Roberts wrote: >> The recently introduced guard-pages mm selftest uses the >> process_madvise() syscall, a wrapper for which was added to glibc v2.36. >> For those of us stuck with older distributions this causes a compile >> error when compiling the mm selftests. For example Ubuntu 22.04 uses >> glibc 2.35, which does not have the wrapper. > > Ah oops! I didn't check glibc and had erroneously assumed this would be > trivially available, but perhaps using a rolling release distro has warped > my perceptions on this rather... > > At any rate you're entire correct, this is very much needed, cheers! > >> >> To workaround the issue, let's introduce our own static >> process_madvise() wrapper that uses glibc's syscall() helper. >> >> While we are at it, add the guard-page test suite to run_vmtests.sh so >> that it can be automatically run by CI systems. > > Oops part 2... I was sure I had added it there... thanks! > >> >> Signed-off-by: Ryan Roberts > > Reviewed-by: Lorenzo Stoakes No worries, thanks for the quick review! > >> --- >> >> Applies on top of mm-unstable (f349e79bfbf3) >> >> Thanks, >> Ryan >> >> tools/testing/selftests/mm/guard-pages.c | 10 ++++++++-- >> tools/testing/selftests/mm/run_vmtests.sh | 5 +++++ >> 2 files changed, 13 insertions(+), 2 deletions(-) >> >> diff --git a/tools/testing/selftests/mm/guard-pages.c b/tools/testing/selftests/mm/guard-pages.c >> index d8f8dee9ebbd..ece37212a8a2 100644 >> --- a/tools/testing/selftests/mm/guard-pages.c >> +++ b/tools/testing/selftests/mm/guard-pages.c >> @@ -55,6 +55,12 @@ static int pidfd_open(pid_t pid, unsigned int flags) >> return syscall(SYS_pidfd_open, pid, flags); >> } >> >> +static ssize_t sys_process_madvise(int pidfd, const struct iovec *iovec, >> + size_t n, int advice, unsigned int flags) >> +{ >> + return syscall(__NR_process_madvise, pidfd, iovec, n, advice, flags); >> +} >> + >> /* >> * Enable our signal catcher and try to read/write the specified buffer. The >> * return value indicates whether the read/write succeeds without a fatal >> @@ -419,7 +425,7 @@ TEST_F(guard_pages, process_madvise) >> ASSERT_EQ(munmap(&ptr_region[99 * page_size], page_size), 0); >> >> /* Now guard in one step. */ >> - count = process_madvise(pidfd, vec, 6, MADV_GUARD_INSTALL, 0); >> + count = sys_process_madvise(pidfd, vec, 6, MADV_GUARD_INSTALL, 0); >> >> /* OK we don't have permission to do this, skip. */ >> if (count == -1 && errno == EPERM) >> @@ -440,7 +446,7 @@ TEST_F(guard_pages, process_madvise) >> ASSERT_FALSE(try_read_write_buf(&ptr3[19 * page_size])); >> >> /* Now do the same with unguard... */ >> - count = process_madvise(pidfd, vec, 6, MADV_GUARD_REMOVE, 0); >> + count = sys_process_madvise(pidfd, vec, 6, MADV_GUARD_REMOVE, 0); >> >> /* ...and everything should now succeed. */ >> >> diff --git a/tools/testing/selftests/mm/run_vmtests.sh b/tools/testing/selftests/mm/run_vmtests.sh >> index 2fc290d9430c..00c3f07ea100 100755 >> --- a/tools/testing/selftests/mm/run_vmtests.sh >> +++ b/tools/testing/selftests/mm/run_vmtests.sh >> @@ -45,6 +45,8 @@ separated by spaces: >> vmalloc smoke tests >> - hmm >> hmm smoke tests >> +- madv_guard >> + test madvise(2) MADV_GUARD_INSTALL and MADV_GUARD_REMOVE options >> - madv_populate >> test memadvise(2) MADV_POPULATE_{READ,WRITE} options >> - memfd_secret >> @@ -375,6 +377,9 @@ CATEGORY="mremap" run_test ./mremap_dontunmap >> >> CATEGORY="hmm" run_test bash ./test_hmm.sh smoke >> >> +# MADV_GUARD_INSTALL and MADV_GUARD_REMOVE tests >> +CATEGORY="madv_guard" run_test ./guard-pages >> + >> # MADV_POPULATE_READ and MADV_POPULATE_WRITE tests >> CATEGORY="madv_populate" run_test ./madv_populate >> >> -- >> 2.43.0 >>