diff options
Diffstat (limited to 'lib/fault-inject.c')
-rw-r--r-- | lib/fault-inject.c | 7 |
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 | ||
108 | bool should_fail(struct fault_attr *attr, ssize_t size) | 108 | bool 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 | ||
143 | fail: | ||
137 | fail_dump(attr); | 144 | fail_dump(attr); |
138 | 145 | ||
139 | if (atomic_read(&attr->times) != -1) | 146 | if (atomic_read(&attr->times) != -1) |