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 5A4D9CA0FED for ; Fri, 30 Aug 2024 12:57:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id E8CD46B013C; Fri, 30 Aug 2024 08:57:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id E3D1D6B013D; Fri, 30 Aug 2024 08:57:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id D049B6B013E; Fri, 30 Aug 2024 08:57:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id B3D566B013C for ; Fri, 30 Aug 2024 08:57:14 -0400 (EDT) Received: from smtpin20.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 5744A1C685B for ; Fri, 30 Aug 2024 12:57:14 +0000 (UTC) X-FDA: 82508912388.20.926AC37 Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) by imf10.hostedemail.com (Postfix) with ESMTP id 67482C0003 for ; Fri, 30 Aug 2024 12:57:12 +0000 (UTC) Authentication-Results: imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=bjh3M1Za; spf=pass (imf10.hostedemail.com: domain of pedro.falcato@gmail.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=pedro.falcato@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=1725022542; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=vCgr74y9AiLo/scYXhaI4I/tHTGFD5TGQGVR/RJySd0=; b=HL+YhNgr+Qt/tmQ/pvR1eyIsCvYmTW4qByfTTY1NM6mKSepf4MCSoJFZQC1lH6dJQYLPA5 dx9U/L5hGQl20sERNaVp253UFwkDbHuCvmSWqGA8IOUjjhArLMw7EUnIeu8hSjyljIEcNi 2dXY6FM3U5id+Hs5KOZWz6gazbaQveg= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1725022542; a=rsa-sha256; cv=none; b=3XFqGHj4x+u3QrqQ6i1uFoUzeUTdvuWcn+9ocWSmL59SA716FqdN0IsCty2Tq4sj5We1io 4MsotYL2GsTgU1xjBKWYeH5sKpikw5LQP5YIXtl6F/EYcZ/6otIIk7q28Ja4ZlaC37VPIi Z03oHXJfd+SWv9UVstE5Y8nJyouWeF4= ARC-Authentication-Results: i=1; imf10.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=bjh3M1Za; spf=pass (imf10.hostedemail.com: domain of pedro.falcato@gmail.com designates 209.85.221.42 as permitted sender) smtp.mailfrom=pedro.falcato@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-wr1-f42.google.com with SMTP id ffacd0b85a97d-371936541caso1136452f8f.0 for ; Fri, 30 Aug 2024 05:57:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1725022631; x=1725627431; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=vCgr74y9AiLo/scYXhaI4I/tHTGFD5TGQGVR/RJySd0=; b=bjh3M1ZaMSf4c3phtjjm+2eWvBzb+k7nhBlbSu0dRgChQMWtP6j4WwnWol5EjZI3kW fEL/YQ89DK5R8YFjorrh/jvx3V2WhWhR/JsR41uu7KjjOQ5YwPp4zD0mwFYQEQrOM0eK Qj6bDQeeLkKAkQE7cwSFoyUWRvyTIyM7aJ74wkzAp5uI+BSaxg4xRr3c+n4TckHCwx5f MnGa0tct5tIYk88l/dWM27u4kBMZK4ueZKk5H6Ga/UFzBZ2eUXzJ06QeqNmy1AIwAmV/ Qsh1uqHMXbzUv5VEjZDFwCcx40oXFIRXrK9XvAWpZrA4tyWQhsZYu3kZbZHM3Bmnxq5S tBXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1725022631; x=1725627431; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=vCgr74y9AiLo/scYXhaI4I/tHTGFD5TGQGVR/RJySd0=; b=hnoykTHCA9LTDSamKz8fYkyJJSYs8Z1H/RBBEZu+S4jTu/VntBtfBQeFm/rSzGQBKy 0rmW7LAXTT09jGMFtEOJq4D9UVOHJ/yPqNcBbF1NnPtqU5fQsqU0VpM5cMZTULJ0I8rT 9xw9bWQS922RSvTGpZSOMQlqQi0KgVxtfHaEGfwK5oE3LsVKOlmJn4e+zya+p7DxelcU uGB2VuJfmQOqPLlMZprQO1ApxautO0dW1TQbHWUQzaNBsihuelAQguSAaFp5rEGGkyNN zXDpgkrJJT3Zk6t2iN0BXwHUoVIE1Uhn4cby0apQjV1+LIgUcvfCksczzsUpLzz2Lw6u Pgcw== X-Forwarded-Encrypted: i=1; AJvYcCX8CSWp1/CVgy+z6p82lwmRWVvVF+U0cQ2JBVjdCQ+TlsRz4/6MUhZu+OAzgeZ4KLfHCQsOkVIFqA==@kvack.org X-Gm-Message-State: AOJu0YyM1FL8yuW0g6+WbpJ1pS1RgtneoG67ynMNvl6tFUub9VM0+BAI aTjB/h8hyPEnwhX2Lw3pmfov/aH/b8OwgHKL7z2C4a5cfm310Ii3 X-Google-Smtp-Source: AGHT+IELuymsP2ONyWahLAwU24MxpYIrM9umnYMsspvUe2V+UJHjPjR3wpX8ecF314kw6+RiM8FfYw== X-Received: by 2002:a5d:59a2:0:b0:369:b7e3:497c with SMTP id ffacd0b85a97d-3749b5320fbmr5447995f8f.1.1725022630153; Fri, 30 Aug 2024 05:57:10 -0700 (PDT) Received: from PC-PEDRO-ARCH ([2001:8a0:7862:ea00:1d36:5f53:3f57:14ad]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-3749ee4c83fsm3977953f8f.22.2024.08.30.05.57.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 30 Aug 2024 05:57:09 -0700 (PDT) Date: Fri, 30 Aug 2024 13:57:06 +0100 From: Pedro Falcato To: jeffxu@chromium.org Cc: akpm@linux-foundation.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org, linux-hardening@vger.kernel.org, linux-kernel@vger.kernel.org, willy@infradead.org, lorenzo.stoakes@oracle.com, broonie@kernel.org, vbabka@suse.cz, Liam.Howlett@oracle.com, rientjes@google.com, keescook@chromium.org Subject: Re: [PATCH v2 3/4] selftests/mm: mseal_test add more tests for mmap Message-ID: References: <20240829214352.963001-1-jeffxu@chromium.org> <20240829214352.963001-4-jeffxu@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20240829214352.963001-4-jeffxu@chromium.org> X-Rspam-User: X-Rspamd-Server: rspam04 X-Rspamd-Queue-Id: 67482C0003 X-Stat-Signature: qbtn46u3xtk8mc9c1t4zua68jrsnihie X-HE-Tag: 1725022632-382460 X-HE-Meta: U2FsdGVkX1+Dk+OS4ao3zBHDjwQgyTavAkGFFmeqrxjTACSGUsdMdOcWEvMCYKjGUlWkCyr5reSmOB6GZrZT1l+lrh07ZzRZJyV3DocwRyyOnRbVpuF26PsD3w2griF9aWtl/jYNmR5Wzzs6TTsA9Vv0HwXbS4GqyFKm3+UyF3oWk0fPJUogxtxBcNtXFE/AHS/bGE/zfine89cqFJAuYhVHR0naHHcVWHk53ua92u+S/PH45kkPSK065OZbpAFSG9REfWcWE4a6nzSLgRqMj1nz8N+EivswgVAZ3RwpIgAe8h+4juVobtb2Dsy8s+9cLfW1mwVRLjP5HeVLT/RuzMRVRr0EWM4jj9DklOJu3V7yRs+Nr9oe/vkudzjzo1MysqaFN55Re5A5b++HtkCrxXnQlm2II0PivdGjPWAvfGZ2LRlO111fV5iDcxo7lxOT0NxmpCMG1BrQhr+Za2SwHb1ebq4ydoPejgnyT3dKHG1jWnabj1Bgm0SnfTHDJdpR/fXCguTVSm9WlybsvRhNqvFnRM6mHxSwII2wp37fgO0ejtpPBee9fp3GJ4ekLJ5uf7SwhLr1ww1lS22i+loDWY7BzzfiJm//xqi+rD8flfErZ4EcNmYselcHJpw1jVAhNueR4U+cepzh3jPIifO0USCpqcGyn4RiN2pwMmL8zaCGZARVCXJZC6wueJqaqdyhoya6CXFg9MD4lllISfSSn71h2B5Di8DO4dEnKVrMJlfgLOo5MUv2aZX7HjI1CNi2J4x6IDnRKcjyS9iXEvbpD25q3HBKEa43a91aivDr8+E7ED3xTZ5kGZOAwPIh7STxam+CreO2gDlLmP5mCFNmj1FILcoJp+M90Il48sUlr9n87GhM6Q1Rk6AFOU/XMCvkZbpxcUAsZVFmLQTFM7Wp2CbswJ2WsBalXT1dD/914zbG98w2Ly+z4a76ebSd3rbahITskZ6LReRYq6hU75v uq7B9wlQ CibmETxIyqDNSw2+ueKuFGkOFaf0eBo+lmLwCQXDRvxm/4bmLtUDxX84dAAo6bAX30NJe+j8usBr8wOYOqyoSxzB5RpZiu8kyEU2+NbevIQsKI8ouQP9eATKwdHx4mMHZUY20TbNZR9zbUjvCIgFaOt4rz0u3jnT2ZPeF0OpMnFT+jU4j+nK+8v+P/oy/7M7sSXs17eOhKtjKY6QqK9QB7rmJaAYztWUFkXwm2v3jLL4zlyVEwHXabKuGtcsM1lUlv39qjk9umvMi139kAPN2/4cqgL95iYENj7n8dq09UB3JQS2vGFrXqRr78IfjJ3a/0Max3kQEzjiP5yR9pRpkPIJcd0ndcpGZDIE+qp4pNyFjCFyZL66/I0SMkvxkzmUM+zbzcB5hG0eMCabdNRKL/xrfcxoIIr/jFKNLH/lcp7Y4XeP45MJZSPhUUOdn8VjrgW7AERmpGFw0FLo2Xy8AUEqR5+Xs5XQ+jFgIDSXvkc6528k85TwvOAGfNVK0KL56FB1YX/X0WbR/5PrgbsiTrlpFml48OjZ9iHxpMqqvIjPwhkQ= 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 Thu, Aug 29, 2024 at 09:43:51PM GMT, jeffxu@chromium.org wrote: > From: Jeff Xu > > Add sealing test to cover mmap for > Expand/shrink across vmas. > Reuse the same address in !MAP_FIXED case. > > Signed-off-by: Jeff Xu > --- > tools/testing/selftests/mm/mseal_test.c | 125 +++++++++++++++++++++++- > 1 file changed, 124 insertions(+), 1 deletion(-) > > diff --git a/tools/testing/selftests/mm/mseal_test.c b/tools/testing/selftests/mm/mseal_test.c > index ae06c354220d..d83538039e76 100644 > --- a/tools/testing/selftests/mm/mseal_test.c > +++ b/tools/testing/selftests/mm/mseal_test.c > @@ -2222,6 +2222,122 @@ static void test_munmap_free_multiple_ranges(bool seal) > REPORT_TEST_PASS(); > } > > +static void test_seal_mmap_expand_seal_middle(bool seal) > +{ > + void *ptr; > + unsigned long page_size = getpagesize(); > + unsigned long size = 12 * page_size; > + int ret; > + void *ret2; > + int prot; > + > + setup_single_address(size, &ptr); > + FAIL_TEST_IF_FALSE(ptr != (void *)-1); > + /* ummap last 4 pages. */ > + ret = sys_munmap(ptr + 8 * page_size, 4 * page_size); > + FAIL_TEST_IF_FALSE(!ret); > + > + size = get_vma_size(ptr, &prot); > + FAIL_TEST_IF_FALSE(size == 8 * page_size); > + FAIL_TEST_IF_FALSE(prot == 0x4); > + > + if (seal) { > + ret = sys_mseal(ptr + 4 * page_size, 4 * page_size); > + FAIL_TEST_IF_FALSE(!ret); > + } > + > + /* use mmap to expand. */ > + ret2 = mmap(ptr, 12 * page_size, PROT_READ, > + MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0); This is not expansion, but overwriting. Expansion is allowed through an adjacent mmap + mseal (which will merge the two VMAs). > + if (seal) { > + FAIL_TEST_IF_FALSE(ret2 == MAP_FAILED); > + FAIL_TEST_IF_FALSE(errno == EPERM); > + > + size = get_vma_size(ptr, &prot); > + FAIL_TEST_IF_FALSE(size == 4 * page_size); > + FAIL_TEST_IF_FALSE(prot == 0x4); > + > + size = get_vma_size(ptr + 4 * page_size, &prot); > + FAIL_TEST_IF_FALSE(size == 4 * page_size); > + FAIL_TEST_IF_FALSE(prot == 0x4); > + } else > + FAIL_TEST_IF_FALSE(ret2 == ptr); > + > + REPORT_TEST_PASS(); > +} > + > +static void test_seal_mmap_shrink_seal_middle(bool seal) > +{ > + void *ptr; > + unsigned long page_size = getpagesize(); > + unsigned long size = 12 * page_size; > + int ret; > + void *ret2; > + int prot; > + > + setup_single_address(size, &ptr); > + FAIL_TEST_IF_FALSE(ptr != (void *)-1); > + > + if (seal) { > + ret = sys_mseal(ptr + 4 * page_size, 4 * page_size); > + FAIL_TEST_IF_FALSE(!ret); > + } > + > + /* use mmap to shrink. */ > + ret2 = mmap(ptr, 7 * page_size, PROT_READ, > + MAP_ANONYMOUS | MAP_PRIVATE | MAP_FIXED, -1, 0); This is also a partial overwrite. > + if (seal) { > + FAIL_TEST_IF_FALSE(ret2 == MAP_FAILED); > + FAIL_TEST_IF_FALSE(errno == EPERM); > + > + size = get_vma_size(ptr, &prot); > + FAIL_TEST_IF_FALSE(size == 4 * page_size); > + FAIL_TEST_IF_FALSE(prot == 0x4); > + > + size = get_vma_size(ptr + 4 * page_size, &prot); > + FAIL_TEST_IF_FALSE(size == 4 * page_size); > + FAIL_TEST_IF_FALSE(prot == 0x4); > + > + size = get_vma_size(ptr + 4 * page_size, &prot); > + FAIL_TEST_IF_FALSE(size == 4 * page_size); > + FAIL_TEST_IF_FALSE(prot == 0x4); > + } else > + FAIL_TEST_IF_FALSE(ret2 == ptr); > + > + REPORT_TEST_PASS(); > +} > + > +static void test_seal_mmap_reuse_addr(bool seal) > +{ > + void *ptr; > + unsigned long page_size = getpagesize(); > + unsigned long size = page_size; > + int ret; > + void *ret2; > + int prot; > + > + setup_single_address(size, &ptr); > + FAIL_TEST_IF_FALSE(ptr != (void *)-1); > + > + if (seal) { > + ret = sys_mseal(ptr, size); > + FAIL_TEST_IF_FALSE(!ret); > + } > + > + /* use mmap to change protection. */ > + ret2 = mmap(ptr, size, PROT_NONE, > + MAP_ANONYMOUS | MAP_PRIVATE, -1, 0); > + This is also an overwrite. You're semantically testing the same thing, and testing the same regions of code. These 3 tests are all kind of the same thing. -- Pedro