[PATCH v3 1/2] error-injection: Introduce EI_ETYPE_FALSE for fail_function

From: Song Chen

Date: Mon Oct 12 2026 - 10:03:37 EST


Introduce EI_ETYPE_FALSE for functions which need false as return
value in their error-injections, like btrfs_data_csum_ok.

EI_ETYPE_NULL can return 0 too but its readability is not good
enough.

Acked-by: David Sterba <dsterba@xxxxxxxx>
Signed-off-by: Song Chen <chensong_2000@xxxxxxx>
---
Documentation/fault-injection/fault-injection.rst | 3 +++
include/asm-generic/error-injection.h | 1 +
kernel/fail_function.c | 2 ++
lib/error-inject.c | 2 ++
4 files changed, 8 insertions(+)

diff --git a/Documentation/fault-injection/fault-injection.rst b/Documentation/fault-injection/fault-injection.rst
index c2d3996b5b40..86431ad2b565 100644
--- a/Documentation/fault-injection/fault-injection.rst
+++ b/Documentation/fault-injection/fault-injection.rst
@@ -347,6 +347,9 @@ EI_ETYPE_ERRNO_NULL
EI_ETYPE_TRUE
This function will return `true` (non-zero positive value) if it fails.

+EI_ETYPE_FALSE
+ This function will return `false` if it fails.
+
If you specifies a wrong type, for example, EI_TYPE_ERRNO for the function
which returns an allocated object, it may cause a problem because the returned
value is not an object address and the caller can not access to the address.
diff --git a/include/asm-generic/error-injection.h b/include/asm-generic/error-injection.h
index b05253f68eaa..6c399121ab7a 100644
--- a/include/asm-generic/error-injection.h
+++ b/include/asm-generic/error-injection.h
@@ -8,6 +8,7 @@ enum {
EI_ETYPE_ERRNO, /* Return -ERRNO if failure */
EI_ETYPE_ERRNO_NULL, /* Return -ERRNO or NULL if failure */
EI_ETYPE_TRUE, /* Return true if failure */
+ EI_ETYPE_FALSE, /* Return false if failure */
};

struct error_injection_entry {
diff --git a/kernel/fail_function.c b/kernel/fail_function.c
index 2eaf55005f49..90cdad0412cd 100644
--- a/kernel/fail_function.c
+++ b/kernel/fail_function.c
@@ -48,6 +48,8 @@ static unsigned long adjust_error_retval(unsigned long addr, unsigned long retv)
break;
case EI_ETYPE_TRUE:
return 1;
+ case EI_ETYPE_FALSE:
+ return 0;
}

return retv;
diff --git a/lib/error-inject.c b/lib/error-inject.c
index 32f3d1ca9ea2..115b10dbf9aa 100644
--- a/lib/error-inject.c
+++ b/lib/error-inject.c
@@ -189,6 +189,8 @@ static const char *error_type_string(int etype)
return "ERRNO_NULL";
case EI_ETYPE_TRUE:
return "TRUE";
+ case EI_ETYPE_FALSE:
+ return "FALSE";
default:
return "(unknown)";
}
--
2.43.0