From: David Gow <davidgow@google.com>
To: "Mickaël Salaün" <mic@digikod.net>
Cc: Brendan Higgins <brendanhiggins@google.com>,
Kees Cook <keescook@chromium.org>, Rae Moar <rmoar@google.com>,
Shuah Khan <skhan@linuxfoundation.org>,
Alan Maguire <alan.maguire@oracle.com>,
Borislav Petkov <bp@alien8.de>,
Dave Hansen <dave.hansen@linux.intel.com>,
"H . Peter Anvin" <hpa@zytor.com>,
Ingo Molnar <mingo@redhat.com>,
James Morris <jamorris@linux.microsoft.com>,
Luis Chamberlain <mcgrof@kernel.org>,
"Madhavan T . Venkataraman" <madvenka@linux.microsoft.com>,
Marco Pagani <marpagan@redhat.com>,
Paolo Bonzini <pbonzini@redhat.com>,
Sean Christopherson <seanjc@google.com>,
Stephen Boyd <sboyd@kernel.org>,
Thara Gopinath <tgopinath@microsoft.com>,
Thomas Gleixner <tglx@linutronix.de>,
Vitaly Kuznetsov <vkuznets@redhat.com>,
Wanpeng Li <wanpengli@tencent.com>,
Zahra Tarkhani <ztarkhani@microsoft.com>,
kvm@vger.kernel.org, linux-hardening@vger.kernel.org,
linux-hyperv@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-security-module@vger.kernel.org,
linux-um@lists.infradead.org, x86@kernel.org
Subject: Re: [PATCH v2 7/7] kunit: Add tests for fault
Date: Tue, 12 Mar 2024 12:54:57 +0800 [thread overview]
Message-ID: <CABVgOSmq5JhBdis1rDoD3eYQ_dhaWyEjXNfwasL9sWFMwLpjzA@mail.gmail.com> (raw)
In-Reply-To: <20240301194037.532117-8-mic@digikod.net>
[-- Attachment #1: Type: text/plain, Size: 3663 bytes --]
On Sat, 2 Mar 2024 at 03:40, Mickaël Salaün <mic@digikod.net> wrote:
>
> Add a test case to check NULL pointer dereference and make sure it would
> result as a failed test.
>
> The full kunit_fault test suite is marked as skipped when run on UML
> because it would result to a kernel panic.
>
> Tested with:
> ./tools/testing/kunit/kunit.py run --arch x86_64 kunit_fault
> ./tools/testing/kunit/kunit.py run --arch arm64 \
> --cross_compile=aarch64-linux-gnu- kunit_fault
>
> Cc: Brendan Higgins <brendanhiggins@google.com>
> Cc: David Gow <davidgow@google.com>
> Cc: Rae Moar <rmoar@google.com>
> Cc: Shuah Khan <skhan@linuxfoundation.org>
> Signed-off-by: Mickaël Salaün <mic@digikod.net>
> Link: https://lore.kernel.org/r/20240301194037.532117-8-mic@digikod.net
> ---
>
> Changes since v1:
> * Removed the rodata and const test cases for now.
> * Replace CONFIG_X86 check with !CONFIG_UML, and remove the "_x86"
> references.
> ---
I think UML _should_ be able to handle this with signal handlers, but
I tested it and agree that it's broken, so disabling for now makes
sense.
In general, I'd prefer to have an empty test which SKIP()s here, but
since the suite is empty, KUnit does that anyway, so this is fine.
Reviewed-by: David Gow <davidgow@google.com>
Cheers,
-- David
> lib/kunit/kunit-test.c | 45 +++++++++++++++++++++++++++++++++++++++++-
> 1 file changed, 44 insertions(+), 1 deletion(-)
>
> diff --git a/lib/kunit/kunit-test.c b/lib/kunit/kunit-test.c
> index f7980ef236a3..0fdca5fffaec 100644
> --- a/lib/kunit/kunit-test.c
> +++ b/lib/kunit/kunit-test.c
> @@ -109,6 +109,48 @@ static struct kunit_suite kunit_try_catch_test_suite = {
> .test_cases = kunit_try_catch_test_cases,
> };
>
> +#ifndef CONFIG_UML
> +
> +static void kunit_test_null_dereference(void *data)
> +{
> + struct kunit *test = data;
> + int *null = NULL;
> +
> + *null = 0;
> +
> + KUNIT_FAIL(test, "This line should never be reached\n");
> +}
> +
> +static void kunit_test_fault_null_dereference(struct kunit *test)
> +{
> + struct kunit_try_catch_test_context *ctx = test->priv;
> + struct kunit_try_catch *try_catch = ctx->try_catch;
> +
> + kunit_try_catch_init(try_catch,
> + test,
> + kunit_test_null_dereference,
> + kunit_test_catch);
> + kunit_try_catch_run(try_catch, test);
> +
> + KUNIT_EXPECT_EQ(test, try_catch->try_result, -EINTR);
> + KUNIT_EXPECT_TRUE(test, ctx->function_called);
> +}
> +
> +#endif /* !CONFIG_UML */
> +
> +static struct kunit_case kunit_fault_test_cases[] = {
> +#ifndef CONFIG_UML
> + KUNIT_CASE(kunit_test_fault_null_dereference),
> +#endif /* !CONFIG_UML */
> + {}
> +};
> +
> +static struct kunit_suite kunit_fault_test_suite = {
> + .name = "kunit_fault",
> + .init = kunit_try_catch_test_init,
> + .test_cases = kunit_fault_test_cases,
> +};
> +
> /*
> * Context for testing test managed resources
> * is_resource_initialized is used to test arbitrary resources
> @@ -826,6 +868,7 @@ static struct kunit_suite kunit_current_test_suite = {
>
> kunit_test_suites(&kunit_try_catch_test_suite, &kunit_resource_test_suite,
> &kunit_log_test_suite, &kunit_status_test_suite,
> - &kunit_current_test_suite, &kunit_device_test_suite);
> + &kunit_current_test_suite, &kunit_device_test_suite,
> + &kunit_fault_test_suite);
>
> MODULE_LICENSE("GPL v2");
> --
> 2.44.0
>
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 4014 bytes --]
prev parent reply other threads:[~2024-03-12 4:55 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-01 19:40 [PATCH v2 0/7] Handle faults in KUnit tests Mickaël Salaün
2024-03-01 19:40 ` [PATCH v2 1/7] kunit: Handle thread creation error Mickaël Salaün
2024-03-05 20:57 ` Rae Moar
2024-03-12 4:53 ` David Gow
2024-03-01 19:40 ` [PATCH v2 2/7] kunit: Fix kthread reference Mickaël Salaün
2024-03-05 20:57 ` Rae Moar
2024-03-12 4:53 ` David Gow
2024-03-01 19:40 ` [PATCH v2 3/7] kunit: Fix timeout message Mickaël Salaün
2024-03-05 20:58 ` Rae Moar
2024-03-12 4:53 ` David Gow
2024-03-01 19:40 ` [PATCH v2 4/7] kunit: Handle test faults Mickaël Salaün
2024-03-11 21:21 ` Rae Moar
2024-03-12 12:15 ` Mickaël Salaün
2024-03-12 5:05 ` David Gow
2024-03-12 12:15 ` Mickaël Salaün
2024-03-01 19:40 ` [PATCH v2 5/7] kunit: Fix KUNIT_SUCCESS() calls in iov_iter tests Mickaël Salaün
2024-03-12 4:54 ` David Gow
2024-03-01 19:40 ` [PATCH v2 6/7] kunit: Print last test location on fault Mickaël Salaün
2024-03-12 4:54 ` David Gow
2024-03-12 12:15 ` Mickaël Salaün
2024-03-01 19:40 ` [PATCH v2 7/7] kunit: Add tests for fault Mickaël Salaün
2024-03-12 4:54 ` David Gow [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CABVgOSmq5JhBdis1rDoD3eYQ_dhaWyEjXNfwasL9sWFMwLpjzA@mail.gmail.com \
--to=davidgow@google.com \
--cc=alan.maguire@oracle.com \
--cc=bp@alien8.de \
--cc=brendanhiggins@google.com \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=jamorris@linux.microsoft.com \
--cc=keescook@chromium.org \
--cc=kvm@vger.kernel.org \
--cc=linux-hardening@vger.kernel.org \
--cc=linux-hyperv@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-security-module@vger.kernel.org \
--cc=linux-um@lists.infradead.org \
--cc=madvenka@linux.microsoft.com \
--cc=marpagan@redhat.com \
--cc=mcgrof@kernel.org \
--cc=mic@digikod.net \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=rmoar@google.com \
--cc=sboyd@kernel.org \
--cc=seanjc@google.com \
--cc=skhan@linuxfoundation.org \
--cc=tglx@linutronix.de \
--cc=tgopinath@microsoft.com \
--cc=vkuznets@redhat.com \
--cc=wanpengli@tencent.com \
--cc=x86@kernel.org \
--cc=ztarkhani@microsoft.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).