aboutsummaryrefslogtreecommitdiffstats
path: root/lib/fault-inject.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/fault-inject.c')
-rw-r--r--lib/fault-inject.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/lib/fault-inject.c b/lib/fault-inject.c
index 4ff157159a0d..09ac73c177fd 100644
--- a/lib/fault-inject.c
+++ b/lib/fault-inject.c
@@ -107,6 +107,12 @@ static inline bool fail_stacktrace(struct fault_attr *attr)
107 107
108bool should_fail(struct fault_attr *attr, ssize_t size) 108bool should_fail(struct fault_attr *attr, ssize_t size)
109{ 109{
110 if (in_task() && current->fail_nth) {
111 if (--current->fail_nth == 0)
112 goto fail;
113 return false;
114 }
115
110 /* No need to check any other properties if the probability is 0 */ 116 /* No need to check any other properties if the probability is 0 */
111 if (attr->probability == 0) 117 if (attr->probability == 0)
112 return false; 118 return false;
@@ -134,6 +140,7 @@ bool should_fail(struct fault_attr *attr, ssize_t size)
134 if (!fail_stacktrace(attr)) 140 if (!fail_stacktrace(attr))
135 return false; 141 return false;
136 142
143fail:
137 fail_dump(attr); 144 fail_dump(attr);
138 145
139 if (atomic_read(&attr->times) != -1) 146 if (atomic_read(&attr->times) != -1)