fault-injection: handle EI_ETYPE_TRUE
authorBarnabás Pőcze <pobrn@protonmail.com>
Wed, 16 Dec 2020 04:47:10 +0000 (20:47 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Wed, 16 Dec 2020 06:46:19 +0000 (22:46 -0800)
Commit af3b854492f351d1 ("mm/page_alloc.c: allow error injection")
introduced EI_ETYPE_TRUE, but did not extend

 * lib/error-inject.c:error_type_string(), and
 * kernel/fail_function.c:adjust_error_retval()

to accommodate for this change.

Handle EI_ETYPE_TRUE in both functions appropriately by
 * returning "TRUE" in error_type_string(),
 * adjusting the return value to true (1) in adjust_error_retval().

Furthermore, simplify the logic of handling EI_ETYPE_NULL in
adjust_error_retval().

Link: https://lkml.kernel.org/r/njB1czX0ZgWPR9h61euHIBb5bEyePw9D4D2m3i5lc9Cl96P8Q1308dTcmsEZW7Vtz3Ifz4do-rOtSfuFTyGoEDYokkK2aUqBePVptzZEWfU=@protonmail.com
Signed-off-by: Barnabás Pőcze <pobrn@protonmail.com>
Acked-by: Masami Hiramatsu <mhiramat@kernel.org>
Reviewed-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: "Naveen N. Rao" <naveen.n.rao@linux.ibm.com>
Cc: Anil S Keshavamurthy <anil.s.keshavamurthy@intel.com>
Cc: "David S. Miller" <davem@davemloft.net>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
kernel/fail_function.c
lib/error-inject.c

index b0b1ad9..60dc825 100644 (file)
@@ -37,9 +37,7 @@ static unsigned long adjust_error_retval(unsigned long addr, unsigned long retv)
 {
        switch (get_injectable_error_type(addr)) {
        case EI_ETYPE_NULL:
-               if (retv != 0)
-                       return 0;
-               break;
+               return 0;
        case EI_ETYPE_ERRNO:
                if (retv < (unsigned long)-MAX_ERRNO)
                        return (unsigned long)-EINVAL;
@@ -48,6 +46,8 @@ static unsigned long adjust_error_retval(unsigned long addr, unsigned long retv)
                if (retv != 0 && retv < (unsigned long)-MAX_ERRNO)
                        return (unsigned long)-EINVAL;
                break;
+       case EI_ETYPE_TRUE:
+               return 1;
        }
 
        return retv;
index aa63751..c73651b 100644 (file)
@@ -180,6 +180,8 @@ static const char *error_type_string(int etype)
                return "ERRNO";
        case EI_ETYPE_ERRNO_NULL:
                return "ERRNO_NULL";
+       case EI_ETYPE_TRUE:
+               return "TRUE";
        default:
                return "(unknown)";
        }