[LTP] [PATCH v4] tst_taint: print readable error message instead of numerical codes
Kushal Chand
kushalkataria5@gmail.com
Wed Jan 26 06:05:55 CET 2022
Fixes: #776
I have did the necessary changes as discussed in our communication.
Now we print each taint flag using tst_res(TINFO, ...) and a final
tst_brk(TBROK, ...) which informs the kernel is tainted.
Regards,
Kushal
---
lib/tst_taint.c | 31 +++++++++++++++++++++++++++++--
1 file changed, 29 insertions(+), 2 deletions(-)
diff --git a/lib/tst_taint.c b/lib/tst_taint.c
index 49146aacb..49929b11c 100644
--- a/lib/tst_taint.c
+++ b/lib/tst_taint.c
@@ -8,6 +8,27 @@
static unsigned int taint_mask = -1;
+static const char *const taint_strings[] = {
+ "G (Propriety module loaded)",
+ "F (Module force loaded)",
+ "S (Running on out of spec system)",
+ "R (Module force unloaded)",
+ "M (Machine check exception)",
+ "B (Bad page reference)",
+ "U (User request)",
+ "D (OOPS/BUG)",
+ "A (ACPI table overridden)",
+ "W (Warning)",
+ "C (Staging driver loaded)",
+ "I (Workaround BIOS/FW bug)",
+ "O (Out of tree module loaded)",
+ "E (Unsigned module loaded)",
+ "L (Soft lock up occured)",
+ "K (Live patched)",
+ "X (Auxilary)",
+ "T (Built with struct randomization)",
+};
+
static unsigned int tst_taint_read(void)
{
unsigned int val;
@@ -74,6 +95,7 @@ static int tst_taint_check_kver(unsigned int mask)
void tst_taint_init(unsigned int mask)
{
unsigned int taint = -1;
+ unsigned long i;
if (mask == 0)
tst_brk(TBROK, "mask is not allowed to be 0");
@@ -89,8 +111,13 @@ void tst_taint_init(unsigned int mask)
taint_mask &= ~TST_TAINT_W;
}
- if ((taint & taint_mask) != 0)
- tst_brk(TBROK, "Kernel is already tainted: %u", taint);
+ if ((taint & taint_mask) != 0) {
+ for (i = 0; i < ARRAY_SIZE(taint_strings); i++) {
+ if (taint & (1 << i))
+ tst_res(TINFO, "%s", taint_strings[i]);
+ }
+ tst_brk(TBROK, "Kernel is already tainted");
+ }
}
--
2.25.1
More information about the ltp
mailing list