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 C2693C4345F for ; Mon, 15 Apr 2024 20:27:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 4C41F6B0088; Mon, 15 Apr 2024 16:27:48 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 473C16B0089; Mon, 15 Apr 2024 16:27:48 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 314026B008A; Mon, 15 Apr 2024 16:27:48 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id 1400F6B0088 for ; Mon, 15 Apr 2024 16:27:48 -0400 (EDT) Received: from smtpin04.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay09.hostedemail.com (Postfix) with ESMTP id 6ED4080747 for ; Mon, 15 Apr 2024 20:27:47 +0000 (UTC) X-FDA: 82012902174.04.8EC5681 Received: from mail-oa1-f46.google.com (mail-oa1-f46.google.com [209.85.160.46]) by imf03.hostedemail.com (Postfix) with ESMTP id 9A86620012 for ; Mon, 15 Apr 2024 20:27:45 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=kEw2glU0; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf03.hostedemail.com: domain of jeffxu@chromium.org designates 209.85.160.46 as permitted sender) smtp.mailfrom=jeffxu@chromium.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1713212865; 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:dkim-signature; bh=4RJIY+n1THl4Og3bwdrrfCfeqvoZNA/rwl+yUf6pHzc=; b=2h94mIajF/9sGjVQ9ta+Stv8muYxgf2WO28qKg0SVo3S8JFkPy2AdaprmLU9FIGTy66tpz Ds2jeR4ritHqv/V9aUUlFPcVNBB5srsUB+a6uqt5tehkuuuGM+ATKgyd7M1Oj6A0yVOzBX 15n7qr0F90zGULTmVNsXFYI4O4J1GKA= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=chromium.org header.s=google header.b=kEw2glU0; dmarc=pass (policy=none) header.from=chromium.org; spf=pass (imf03.hostedemail.com: domain of jeffxu@chromium.org designates 209.85.160.46 as permitted sender) smtp.mailfrom=jeffxu@chromium.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1713212865; a=rsa-sha256; cv=none; b=In6mAG7rXY2/+mfdy/dEcls+j7L2/+wJ/KLyEbMMpseeeIRcq4ybyKezt+szP8V5LcpT8w IR11GYAbUC8Huv+GzPqclYEG+ZgdWjoGyjyguVHAzSO5s+EN8XqjihTzLfDrZ2iNYrVaLn xKgCNB7L7bXPPdLi/lWdJTdA/ODaY3U= Received: by mail-oa1-f46.google.com with SMTP id 586e51a60fabf-234cbd333f5so537774fac.0 for ; Mon, 15 Apr 2024 13:27:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1713212864; x=1713817664; darn=kvack.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=4RJIY+n1THl4Og3bwdrrfCfeqvoZNA/rwl+yUf6pHzc=; b=kEw2glU0gCsi939GdY4cpZm5DBjxWh2HykIPKPmv3H5QB9hzPCaYsSCSir2Cp5btMb /F0Kmc2T1Idw+fx6Btzg73iyURstZ4ooPk3saOf1gp+HXiN8SjzKPh5isWqveTH7oHpF l4d27faoJC5vlyJOzsuFkfxi+jK9F30bMN3IM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1713212864; x=1713817664; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=4RJIY+n1THl4Og3bwdrrfCfeqvoZNA/rwl+yUf6pHzc=; b=LzgxnfAcvPUVKsRxUX7BJRU5Y6xgcSYkoROt8BGEf/epTv6acl2LyuA9O9nMH5zHLB xa8XwvP+92YbhlqkwDSp7GB4H9ZxDAz9T1CcZjZHj7lOFmJHolEyBS5iK0o5+C30d6xm bQ1rHyDenUzg3SwKyRHMuZaHyhDzuslU0QwBd27+E5pWH5y8FUib+QihyRrOje0RFWZf imPwhZIf44ZLD5N9s8vRxKrKrHJtt9+JidZ8D3hjrTEIEPB5Tb71eGB71qkFaObn+2oF D4iGuKnRNAaPUmBDNway8kALVqF6m9sd59BrVsosubCz7HzrATiuv2oxu0900VWqNrI8 Ym9Q== X-Forwarded-Encrypted: i=1; AJvYcCXUOwCW2t0yEJrMUwMr5dPGSKm+JIUmcw6WcAzpGWPsDqeZpiNOiGXk3swh/0QOUmqKrEwNZKdQxiMDghSvbEgId0Q= X-Gm-Message-State: AOJu0YwPufORCl60IlFvpaCcmObjvJ7loRMw3RDgFVWP+uuGwKCGa+4W 63lOHeJqzYu9rWcBjQYiN/l1elYhrpGGAH/ZAG0LyfA6sc5Y+1P6+U9pceGAxzIV2nlhEo6OdQB 4nRgWsKazAJ0l5gjA8lzXWP/yqtUJO69j3cDe X-Google-Smtp-Source: AGHT+IGpgVPCV92d+R3UlsqTSLZBjek2VtqCidg00gg6yncTI8Fxx9kop3PSbTvCmdLmkjI54JVDIbqEx9QANbp9+sQ= X-Received: by 2002:a05:6870:249c:b0:235:b0b:87a6 with SMTP id s28-20020a056870249c00b002350b0b87a6mr134718oaq.13.1713212863040; Mon, 15 Apr 2024 13:27:43 -0700 (PDT) MIME-Version: 1.0 References: <20240415163527.626541-1-jeffxu@chromium.org> <20240415163527.626541-4-jeffxu@chromium.org> In-Reply-To: From: Jeff Xu Date: Mon, 15 Apr 2024 13:27:32 -0700 Message-ID: Subject: Re: [PATCH v10 3/5] selftest mm/mseal memory sealing To: Muhammad Usama Anjum Cc: akpm@linux-foundation.org, keescook@chromium.org, jannh@google.com, sroettger@google.com, willy@infradead.org, gregkh@linuxfoundation.org, torvalds@linux-foundation.org, corbet@lwn.net, Liam.Howlett@oracle.com, surenb@google.com, merimus@google.com, rdunlap@infradead.org, jeffxu@google.com, jorgelo@chromium.org, groeck@chromium.org, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-mm@kvack.org, pedro.falcato@gmail.com, dave.hansen@intel.com, linux-hardening@vger.kernel.org, deraadt@openbsd.org Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Rspam-User: X-Stat-Signature: 9g547bshcb4xf6616m9nm6ye6okmdt4a X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 9A86620012 X-HE-Tag: 1713212865-30846 X-HE-Meta: U2FsdGVkX1+vHZQR30GCNNIC8kV/GaapKq9Zqgdk01haFh+mEYXrpRLIUxBS/yGjgOQYXAQeIxtv8+zuvjOxTZRga1FbBYqqK33n7s3SsZM9eaQv3uLZdsK4St6TvKUmJGYw27YkPsVpSPPaguN7M4gUV2CQfw4W3WnteM/aV/p92gYuPlkRBqUH01a6JeUhIN/biJEJQq94hYEmfBMjJvnpazvixSkTyCol7VzLJngxL+Vcf8ezRp7ggTcguGOf81RwE0VhHR+++wxvvKKeW5PDeGudcjjt0RSp2vI4VszTuQrxgrdONuCq/ZARj5pj/75lL7tC1v9/gSr2DdaLamGzvPL89ZMatF50zpvvt8StVwRUBhXZZxF+rXTinGLvJqM83TWyETtfXd+RhqAb9YsGoo0Wv+FNrbgDQ8DVzeXpERdtlY1HGRbt8tm+IWtRA9URWVvebf0ws7S7BXkpgyLML8kzSmG8dMvD3W+RUU7tcur/a6/4LSTaONMnJQaftJF+E3yJ2Q9HhPpT21aEsn1eRi94aWfxgnotocSo4k5xWpL+Vp8uMKodzbucJjUyI6paYnG5TRhoOFoEx7Un/Z4GPWxXJqDXs4Hnw4ce2Fh9zCEF4HDaGkpLY2d6ydv7N8d6v3iuyNcpaGi3iqe556v7eigJuXT7lA1R/URWXoFHco2/YfVv2iYw34B5N87l6+hEwRRg+autSrXeFK+qEbWi29+Yb8Zi6pau39pIsqL4V9OIBXp6HV1Eo/THU2yvF0Q/7rZsaGxKjffxb9En8Gb0t3FuxeuEXecgit/6kjpIjIJd+k/6Q6GVUP5LB7n8e8o4UoTDCVZEEfzfz4T9lfFgWfBhfM+qPoQnLUr6uzA4QTS4jMW0zcRl5jqGPIbpqpODJ/LFqnPu+Y9JgUI4/LB/O28B4KaPluVgK8AmdnHiBy82zmSLKIUsHVUE25Rq0uVoggBB2D3Vk5UwQiU fUQz30OK LViexdDhF61Fu02WT4puKbH5Syeen1cd/h/XxRA4aTVh6W1xbrdYXFH1BaHNVUeHkc4AocezFIwpfEBdApddY3ZNRcRxOz4xtMxQJ3E2D+2pdRWlJmKGfY/uyeMMTpwWMQB444BLKdlkvDOLZ0u0PwIVdOcXe0MUHcacQ+hdU91t6cEvb6fwXMTRN78+0EuAl/zMbmIr7c3tbQJtafOg0aU683AFBsOyslpZUyTM8qB65gwExqrKrp18a4kHQUsSgVC0NyiSx5hzFBP/M/kAL9ALGmU7IVQGoDlXsJtcfZ01F7En0P4AzD2RJ5cYKE1knPnLB3oTL0T0vH0YbhOEJ2Luhv70WYnuivitG4BwdfFGY/Kqrp1HfR83+rg78NXGXfh66KqAPN8/VeblxJY8vznEYSs9+AZiGuydG 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 Mon, Apr 15, 2024 at 11:32=E2=80=AFAM Muhammad Usama Anjum wrote: > > Please fix following for this and fifth patch as well: > > --> checkpatch.pl --codespell tools/testing/selftests/mm/mseal_test.c > > WARNING: Macros with flow control statements should be avoided > #42: FILE: tools/testing/selftests/mm/mseal_test.c:42: > +#define FAIL_TEST_IF_FALSE(c) do {\ > + if (!(c)) {\ > + ksft_test_result_fail("%s, line:%d\n", __func__, > __LINE__);\ > + goto test_end;\ > + } \ > + } \ > + while (0) > > WARNING: Macros with flow control statements should be avoided > #50: FILE: tools/testing/selftests/mm/mseal_test.c:50: > +#define SKIP_TEST_IF_FALSE(c) do {\ > + if (!(c)) {\ > + ksft_test_result_skip("%s, line:%d\n", __func__, > __LINE__);\ > + goto test_end;\ > + } \ > + } \ > + while (0) > > WARNING: Macros with flow control statements should be avoided > #59: FILE: tools/testing/selftests/mm/mseal_test.c:59: > +#define TEST_END_CHECK() {\ > + ksft_test_result_pass("%s\n", __func__);\ > + return;\ > +test_end:\ > + return;\ > +} > I tried to fix those warnings of checkpatch in the past, but no good solution. If I put the condition check in the test, the code will have too many "if" and decrease readability. If there is a better solution, I'm happy to do that, suggestions are welcome. > > On 4/15/24 9:35 PM, jeffxu@chromium.org wrote: > > From: Jeff Xu > > > > selftest for memory sealing change in mmap() and mseal(). > > > > Signed-off-by: Jeff Xu > > --- > > tools/testing/selftests/mm/.gitignore | 1 + > > tools/testing/selftests/mm/Makefile | 1 + > > tools/testing/selftests/mm/mseal_test.c | 1836 +++++++++++++++++++++++ > > 3 files changed, 1838 insertions(+) > > create mode 100644 tools/testing/selftests/mm/mseal_test.c > > > > diff --git a/tools/testing/selftests/mm/.gitignore b/tools/testing/self= tests/mm/.gitignore > > index d26e962f2ac4..98eaa4590f11 100644 > > --- a/tools/testing/selftests/mm/.gitignore > > +++ b/tools/testing/selftests/mm/.gitignore > > @@ -47,3 +47,4 @@ mkdirty > > va_high_addr_switch > > hugetlb_fault_after_madv > > hugetlb_madv_vs_map > > +mseal_test > > diff --git a/tools/testing/selftests/mm/Makefile b/tools/testing/selfte= sts/mm/Makefile > > index eb5f39a2668b..95d10fe1b3c1 100644 > > --- a/tools/testing/selftests/mm/Makefile > > +++ b/tools/testing/selftests/mm/Makefile > > @@ -59,6 +59,7 @@ TEST_GEN_FILES +=3D mlock2-tests > > TEST_GEN_FILES +=3D mrelease_test > > TEST_GEN_FILES +=3D mremap_dontunmap > > TEST_GEN_FILES +=3D mremap_test > > +TEST_GEN_FILES +=3D mseal_test > > TEST_GEN_FILES +=3D on-fault-limit > > TEST_GEN_FILES +=3D pagemap_ioctl > > TEST_GEN_FILES +=3D thuge-gen > > diff --git a/tools/testing/selftests/mm/mseal_test.c b/tools/testing/se= lftests/mm/mseal_test.c > > new file mode 100644 > > index 000000000000..06c780d1d8e5 > > --- /dev/null > > +++ b/tools/testing/selftests/mm/mseal_test. > > +static void __write_pkey_reg(u64 pkey_reg) > > +{ > > +#if defined(__i386__) || defined(__x86_64__) /* arch */ > > + unsigned int eax =3D pkey_reg; > > + unsigned int ecx =3D 0; > > + unsigned int edx =3D 0; > > + > > + asm volatile(".byte 0x0f,0x01,0xef\n\t" > > + : : "a" (eax), "c" (ecx), "d" (edx)); > > + assert(pkey_reg =3D=3D __read_pkey_reg()); > Use ksft_exit_fail_msg instead of assert to stay inside TAP format if > condition is false and error is generated. > I can remove the usage of assert() from the test. > > +int main(int argc, char **argv) > > +{ > > + bool test_seal =3D seal_support(); > > + > > + ksft_print_header(); > > + > > + if (!test_seal) > > + ksft_exit_skip("sealing not supported, check CONFIG_64BIT= \n"); > > + > > + if (!pkey_supported()) > > + ksft_print_msg("PKEY not supported\n"); > > + > > + ksft_set_plan(80); > > + > > + test_seal_addseal(); > > + test_seal_unmapped_start(); > > + test_seal_unmapped_middle(); > > + test_seal_unmapped_end(); > > + test_seal_multiple_vmas(); > > + test_seal_split_start(); > > + test_seal_split_end(); > > + test_seal_invalid_input(); > > + test_seal_zero_length(); > > + test_seal_twice(); > > + > > + test_seal_mprotect(false); > > + test_seal_mprotect(true); > > + > > + test_seal_start_mprotect(false); > > + test_seal_start_mprotect(true); > > + > > + test_seal_end_mprotect(false); > > + test_seal_end_mprotect(true); > > + > > + test_seal_mprotect_unalign_len(false); > > + test_seal_mprotect_unalign_len(true); > > + > > + test_seal_mprotect_unalign_len_variant_2(false); > > + test_seal_mprotect_unalign_len_variant_2(true); > > + > > + test_seal_mprotect_two_vma(false); > > + test_seal_mprotect_two_vma(true); > > + > > + test_seal_mprotect_two_vma_with_split(false); > > + test_seal_mprotect_two_vma_with_split(true); > > + > > + test_seal_mprotect_partial_mprotect(false); > > + test_seal_mprotect_partial_mprotect(true); > > + > > + test_seal_mprotect_two_vma_with_gap(false); > > + test_seal_mprotect_two_vma_with_gap(true); > > + > > + test_seal_mprotect_merge(false); > > + test_seal_mprotect_merge(true); > > + > > + test_seal_mprotect_split(false); > > + test_seal_mprotect_split(true); > > + > > + test_seal_munmap(false); > > + test_seal_munmap(true); > > + test_seal_munmap_two_vma(false); > > + test_seal_munmap_two_vma(true); > > + test_seal_munmap_vma_with_gap(false); > > + test_seal_munmap_vma_with_gap(true); > > + > > + test_munmap_start_freed(false); > > + test_munmap_start_freed(true); > > + test_munmap_middle_freed(false); > > + test_munmap_middle_freed(true); > > + test_munmap_end_freed(false); > > + test_munmap_end_freed(true); > > + > > + test_seal_mremap_shrink(false); > > + test_seal_mremap_shrink(true); > > + test_seal_mremap_expand(false); > > + test_seal_mremap_expand(true); > > + test_seal_mremap_move(false); > > + test_seal_mremap_move(true); > > + > > + test_seal_mremap_shrink_fixed(false); > > + test_seal_mremap_shrink_fixed(true); > > + test_seal_mremap_expand_fixed(false); > > + test_seal_mremap_expand_fixed(true); > > + test_seal_mremap_move_fixed(false); > > + test_seal_mremap_move_fixed(true); > > + test_seal_mremap_move_dontunmap(false); > > + test_seal_mremap_move_dontunmap(true); > > + test_seal_mremap_move_fixed_zero(false); > > + test_seal_mremap_move_fixed_zero(true); > > + test_seal_mremap_move_dontunmap_anyaddr(false); > > + test_seal_mremap_move_dontunmap_anyaddr(true); > > + test_seal_discard_ro_anon(false); > > + test_seal_discard_ro_anon(true); > > + test_seal_discard_ro_anon_on_rw(false); > > + test_seal_discard_ro_anon_on_rw(true); > > + test_seal_discard_ro_anon_on_shared(false); > > + test_seal_discard_ro_anon_on_shared(true); > > + test_seal_discard_ro_anon_on_filebacked(false); > > + test_seal_discard_ro_anon_on_filebacked(true); > > + test_seal_mmap_overwrite_prot(false); > > + test_seal_mmap_overwrite_prot(true); > > + test_seal_mmap_expand(false); > > + test_seal_mmap_expand(true); > > + test_seal_mmap_shrink(false); > > + test_seal_mmap_shrink(true); > > + > > + test_seal_merge_and_split(); > > + test_seal_zero_address(); > > + > > + test_seal_discard_ro_anon_on_pkey(false); > > + test_seal_discard_ro_anon_on_pkey(true); > > + > > + ksft_finished(); > > + return 0; > The return isn't needed as ksft_finished() calls exit() with right exit c= ode. > Sure. I can remove "return 0" Thanks -Jeff - Jeff > > +} > > -- > BR, > Muhammad Usama Anjum