[LTP] [PATCH] lib: Check minimal supported kernel version

Andrea Cervesato andrea.cervesato@suse.de
Fri Sep 4 10:07:34 CEST 2026


From: Andrea Cervesato <andrea.cervesato@suse.com>

LTP does not support kernels older than 4.4, but this requirement was
only documented in static text without automated runtime validation.

Define the minimal supported kernel version in tst_kvercmp.h so that
the documentation fetches it dynamically and the core library aborts
unsupported kernels with TCONF during test setup.

Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com>
---
Add a variable to check minimum kernel version before running tests.
Until now, the only place we have to verify the minimum kernel is to
read the documentation.
---
 doc/conf.py                     | 15 +++++++++++++++
 doc/users/supported_systems.rst |  2 +-
 include/tst_kvercmp.h           |  7 ++++++-
 lib/tst_test.c                  | 17 +++++++++++++++++
 4 files changed, 39 insertions(+), 2 deletions(-)

diff --git a/doc/conf.py b/doc/conf.py
index c28db7af1..69ea31b0c 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -21,6 +21,21 @@ ltp_repo = 'https://github.com/linux-test-project/ltp'
 ltp_repo_base_url = f"{ltp_repo}/tree/master"
 cve_url = "https://www.cve.org/CVERecord?id="
 
+def _get_min_kernel_version():
+    header_path = os.path.join(os.path.dirname(__file__), '../include/tst_kvercmp.h')
+    with open(header_path, 'r', encoding='utf-8') as f:
+        match = re.search(r'#define\s+TST_MIN_KVER\s+"([^"]+)"', f.read())
+        if match:
+            return match.group(1)
+    raise RuntimeError(f"Could not find TST_MIN_KVER in {header_path}")
+
+min_kernel_version = _get_min_kernel_version()
+
+rst_prolog = f"""
+.. |min_kernel_version| replace:: **{min_kernel_version}**
+.. |min_kernel_version_plain| replace:: {min_kernel_version}
+"""
+
 # -- General configuration ---------------------------------------------------
 # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
 
diff --git a/doc/users/supported_systems.rst b/doc/users/supported_systems.rst
index b5d792eeb..5765214b0 100644
--- a/doc/users/supported_systems.rst
+++ b/doc/users/supported_systems.rst
@@ -14,7 +14,7 @@ branch is build tested in
 Kernel version
 --------------
 
-Minimal supported kernel version is **4.4**.
+Minimal supported kernel version is |min_kernel_version|.
 
 Oldest build tested distributions
 ---------------------------------
diff --git a/include/tst_kvercmp.h b/include/tst_kvercmp.h
index 26e8f8e3c..52267fd2b 100644
--- a/include/tst_kvercmp.h
+++ b/include/tst_kvercmp.h
@@ -1,12 +1,17 @@
 /* SPDX-License-Identifier: GPL-2.0-or-later
  * Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
  * Copyright (c) 2009-2016 Cyril Hrubis chrubis@suse.cz
- * Copyright (c) Linux Test Project, 2020-2025
+ * Copyright (c) Linux Test Project, 2020-2026
  */
 
 #ifndef TST_KVERCMP_H__
 #define TST_KVERCMP_H__
 
+/**
+ * TST_MIN_KVER - Minimal kernel version supported by LTP.
+ */
+#define TST_MIN_KVER "4.4"
+
 /**
  * tst_kvcmp() - Compare given kernel version with kernel in string.
  *
diff --git a/lib/tst_test.c b/lib/tst_test.c
index 166e0f672..1bd62e24a 100644
--- a/lib/tst_test.c
+++ b/lib/tst_test.c
@@ -1087,6 +1087,21 @@ static bool check_kver(const char *min_kver, const int brk_nosupp)
 	return true;
 }
 
+static void check_supported_kver(void)
+{
+	int v1, v2, v3;
+
+	if (tst_parse_kver(TST_MIN_KVER, &v1, &v2, &v3)) {
+		tst_res(TWARN,
+			"Invalid minimal kernel version %s, expected %%d.%%d.%%d",
+			TST_MIN_KVER);
+		return;
+	}
+
+	if (tst_kvercmp(v1, v2, v3) < 0)
+		tst_brk(TCONF, "Kernel is older than minimal supported %s", TST_MIN_KVER);
+}
+
 /*
  * Checks if the struct results values are equal.
  *
@@ -1455,6 +1470,8 @@ static void do_setup(int argc, char *argv[])
 	if (context->tdebug)
 		tst_res(TINFO, "Enabling debug info (level %d)", context->tdebug);
 
+	check_supported_kver();
+
 	if (tst_test->needs_kconfigs && tst_kconfig_check(tst_test->needs_kconfigs))
 		tst_brk(TCONF, "Aborting due to unsuitable kernel config, see above!");
 

---
base-commit: d377d1cff1ec393459a136eec85088ffd5729430
change-id: 20260904-min_kernel-22066a2e046c

Best regards,
--  
Andrea Cervesato <andrea.cervesato@suse.com>



More information about the ltp mailing list