From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 189A4329E6C for ; Mon, 24 Aug 2026 13:32:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.51 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578363; cv=none; b=QUCoY0oa8dS8zZvB/bL6/VMk9nHZuAwdwFY0oAOieBvfc52dB6meaK3lYIPct9L6Qp5keWJHXeZ6Z5p1kOyfHTquVvkFp7/aY4CWHRVeIuOSxNuYS5HF3wcf++ULjZElq3E015sEWguKB3Z4RWZ/3H9+rXBZ4sOJlgWSVtHGgL0= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1787578363; c=relaxed/simple; bh=BMm/D+92KohjIhMn3W0NfZFT9jPV1Xow0HI6rE4BsoA=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=CQVrWuQ7t0p4dqoX6b63+99KrqWfXfzxm4Djs5pq4/xSGbw44pGsaaYHgJg0lg9bqAJIB8GN0vW2wimkXrWeaVp9EilsV6hkxApb8OjKwyEX0zNiCidK1Jtc+G7A5gtYCaV1HZKxPWyBIS3bRMbxUdT3O8Bd1dW6PuIwlnhN4mE= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=X73Hk6kR; arc=none smtp.client-ip=209.85.208.51 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="X73Hk6kR" Received: by mail-ed1-f51.google.com with SMTP id 4fb4d7f45d1cf-6a0de062db5so6163548a12.1 for ; Mon, 24 Aug 2026 06:32:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1787578358; x=1788183158; darn=vger.kernel.org; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=qCd9ogdP+10eYPCwT1duiz6StUC+972KZLg0HwZ14BM=; b=X73Hk6kRlKmSGRvl0UmKPAUFAEPJ/HO5Cmzo0Zzhh+NOAbyrbeSVzekl2MPtSrRRTI oJCtROpFAZy39xa2X6a+XFiIuCo2U4tYjqt7RD9fmnZXyJANk4TeaGcgabSJ0AZW9Ytx N+eq06f2Cs8f3cFmUQ9e82av2evHR2DlB/4+bNZvgp433djnux+pUsbQUAxzA16uFdm0 wCCS/+5NuI470B2tIsNY2tHjLF6230JE/xApj3BH8OLsE/jmKttP8dfRYkSwjOaGAjjW T2q2iyLu9k7WRIrzUaQzwCYvg0CWo9ZTjwgMYlyrcYx4xzDyUDu/wTKXKkX3MoO2+Kle aBKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787578358; x=1788183158; h=cc:to:in-reply-to:references:message-id:content-transfer-encoding :content-type:mime-version:subject:date:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=qCd9ogdP+10eYPCwT1duiz6StUC+972KZLg0HwZ14BM=; b=gfJRxzdWiUZvTV3tnr4S/wdFK/t1gsRBePX/tCuUfVrNAcTf+R5SjeSQSm4KOHeLwX ouxeLtp/vH9jmcp5GddBOc92MlMyaHBATaauqmd8SlGFMP+DbCmH182CtgmN+16Uex1Z JcZiAU0VAmE1YIs5AkgMrLWOogXYgcvFmDG66xCHtp812rZWTPppbA6+RIHFu3M3jFXu iEH3h9DiHjDlgI/VCXlq9MkgKmyQSBgMJiC72Scftk2iOu0nXaMONMSLTGY01I+Ulykq 796ixz6mMWJ/u6OoDMTzXFbcYfgJi3XSqKXzW1h1+fRwsH3OWU7/rUXAC2qia4U9q4Ws a2GA== X-Forwarded-Encrypted: i=1; AHgh+Rq7vla6KNbS4kTsGU1VvqkXj66g9r5APtsoqFSneRai+BPtfO1veMSZn/ujCo7lMr1gHhKbSLgYg5G1voE=@vger.kernel.org X-Gm-Message-State: AFuF++msseBN0NcKxv9dv94utrijzl0ql3RV5XlkTu503nhKYVV1E7iy mlqj7aqx/HtM8mObW8aAZDX5MAOAOmads1YBrYkGmZD2rWUfiTOllEEL X-Gm-Gg: AR+sD10MCs27w9+dafW1aWCXRHK69zhBS9QC7AYEtfqQWHjyikNTyjBDKBv+WW2Ot7Q yuK8pOfluTc1JNV7reUkbuZRvaROb7mj4Qu7xmo5Wq4PeUL81x7NqSBWTIT4Lbo5mJs2P/rP11o g3JhepM1//HPpmmXS3MQL0PJpPG06wzXcLOStxhwMKhDhUpKaNlaNnw2tW1Y/GMHTJJLu6+tBEI pD82w6IxcyjMGateQ85aCKTK1r7/sbyLEGxfP6dCr6Tqw03Q53ydtp8gCPGLFLhBgvtlJ2wo/xy 9k8exy4ivBjHaK9n0mrs70vMpJmTl5J62Wmm8RAjfdx6+GM6YRBSB6nTu4kTCS5l9AY45XU2/Mw Mzs0+V2wuHJOskMUObyW+GCCu6se5ztLlKnPx1BSRUSEjL5lH7QgvWCLOXPesZaKLT6ivNRK8x5 RDs0newSggsMU1PuahlO9nLGj/g/8Sl9WSfT/xNDEBXMRtNtq9dpBpjjt5V6jI4ALJlkCF/CbFA VDlvMr1oiTcvs3WMXo0pUXM X-Received: by 2002:a17:907:1c18:b0:c20:88a6:8210 with SMTP id a640c23a62f3a-c246a4f0b8cmr3078721166b.9.1787578358109; Mon, 24 Aug 2026 06:32:38 -0700 (PDT) Received: from [127.0.0.2] ([195.100.225.50]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-c24966f8f2asm1313492266b.36.2026.08.24.06.32.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 24 Aug 2026 06:32:37 -0700 (PDT) From: Malte Wechter Date: Mon, 24 Aug 2026 15:32:31 +0200 Subject: [PATCH v2 2/2] kunit: add KUnit test to assert kernel state before KUnit suites are run Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Message-Id: <20260824-lockdep-kunit-v2-2-36a6fec9f72e@gmail.com> References: <20260824-lockdep-kunit-v2-0-36a6fec9f72e@gmail.com> In-Reply-To: <20260824-lockdep-kunit-v2-0-36a6fec9f72e@gmail.com> To: Brendan Higgins , David Gow , Rae Moar , Miguel Ojeda , Boqun Feng , Gary Guo , =?utf-8?q?Bj=C3=B6rn_Roy_Baron?= , Benno Lossin , Andreas Hindborg , Alice Ryhl , Trevor Gross , Danilo Krummrich , Daniel Almeida , Tamir Duberstein , Alexandre Courbot , =?utf-8?q?Onur_=C3=96zkan?= Cc: linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com, linux-kernel@vger.kernel.org, rust-for-linux@vger.kernel.org, Malte Wechter X-Mailer: b4 0.16-dev X-Developer-Signature: v=1; a=ed25519-sha256; t=1787578351; l=2612; i=maltewechter@gmail.com; s=20260812; h=from:subject:message-id; bh=BMm/D+92KohjIhMn3W0NfZFT9jPV1Xow0HI6rE4BsoA=; b=wtZ/QA57BgH0s+WicRIuLyTQh70Xs0NsSgzHTe6QfLwpfcGol8xLQbN5UxHK/lxtsGAzBpcTx 0P0ioPFye0bBemufbNawEGPE6BUq/J54ydkAUaFRzwPrhbh2HI8H6Sw X-Developer-Key: i=maltewechter@gmail.com; a=ed25519; pk=Ta/JQQMOW0Cbxp+yEwWqWFEyKFRyuQeSoYicwD7yvWI= add pre-defined KUnit test suite and test case that asserts both `debug_locks` and `TAINT_WARN` prior to running any (user) KUnit tests. This asserts integrity before tests are run. Signed-off-by: Malte Wechter --- lib/kunit/executor.c | 8 +++++++- lib/kunit/test.c | 30 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/kunit/executor.c b/lib/kunit/executor.c index b0f8a41d61d36..0db67fe7f09f9 100644 --- a/lib/kunit/executor.c +++ b/lib/kunit/executor.c @@ -290,9 +290,15 @@ void kunit_exec_run_tests(struct kunit_suite_set *suite_set, bool builtin) size_t num_suites = suite_set->end - suite_set->start; bool autorun = kunit_autorun(); + #ifdef CONFIG_KUNIT_EXTRA_ASSERTS + size_t num_suites_plus_extra = num_suites+1; + #else + size_t num_suites_plus_extra = num_suites; + #endif + if (autorun && (builtin || num_suites)) { pr_info("KTAP version 1\n"); - pr_info("1..%zu\n", num_suites); + pr_info("1..%zu\n", num_suites_plus_extra); } __kunit_test_suites_init(suite_set->start, num_suites, autorun); diff --git a/lib/kunit/test.c b/lib/kunit/test.c index 99773e000e1b7..e64c6d1575280 100644 --- a/lib/kunit/test.c +++ b/lib/kunit/test.c @@ -835,6 +835,30 @@ bool kunit_enabled(void) return enable_param; } +#ifdef CONFIG_KUNIT_EXTRA_ASSERTS +#define DEBUG_LOCKS_OK 1 +#define TAINT_WARN_OK 0 + +static void pre_kunit_assert(struct kunit *test) +{ + KUNIT_EXPECT_EQ_MSG(test, debug_locks, DEBUG_LOCKS_OK, + "debug_locks are off before any test ran"); + KUNIT_EXPECT_EQ_MSG(test, test_taint(TAINT_WARN), TAINT_WARN_OK, + "kernel already TAINT_WARN tainted before any test ran"); +} + +static struct kunit_case pre_kunit_assert_cases[] = { + KUNIT_CASE(pre_kunit_assert), + {} +}; + +static struct kunit_suite pre_kunit_assert_clean_state_suite = { + .name = "pre_kunit_extra_asserts", + .test_cases = pre_kunit_assert_cases, +}; + +#endif /* CONFIG_RUST_KUNIT_EXTRA_ASSERTS */ + int __kunit_test_suites_init(struct kunit_suite * const * const suites, int num_suites, bool run_tests) { @@ -857,6 +881,12 @@ int __kunit_test_suites_init(struct kunit_suite * const * const suites, int num_ } static_branch_inc(&kunit_running); + #ifdef CONFIG_KUNIT_EXTRA_ASSERTS + kunit_init_suite(&pre_kunit_assert_clean_state_suite); + if (run_tests) + kunit_run_tests(&pre_kunit_assert_clean_state_suite); + #endif + for (i = 0; i < num_suites; i++) { kunit_init_suite(suites[i]); if (run_tests) -- 2.51.2