diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/fault-inject.c | 40 |
1 files changed, 19 insertions, 21 deletions
diff --git a/lib/fault-inject.c b/lib/fault-inject.c index 361c6e9cd77f..244782940349 100644 --- a/lib/fault-inject.c +++ b/lib/fault-inject.c | |||
@@ -48,7 +48,7 @@ static void fail_dump(struct fault_attr *attr) | |||
48 | 48 | ||
49 | #define atomic_dec_not_zero(v) atomic_add_unless((v), -1, 0) | 49 | #define atomic_dec_not_zero(v) atomic_add_unless((v), -1, 0) |
50 | 50 | ||
51 | static int fail_task(struct fault_attr *attr, struct task_struct *task) | 51 | static bool fail_task(struct fault_attr *attr, struct task_struct *task) |
52 | { | 52 | { |
53 | return !in_interrupt() && task->make_it_fail; | 53 | return !in_interrupt() && task->make_it_fail; |
54 | } | 54 | } |
@@ -68,15 +68,15 @@ static asmlinkage int fail_stacktrace_callback(struct unwind_frame_info *info, | |||
68 | break; | 68 | break; |
69 | if (attr->reject_start <= UNW_PC(info) && | 69 | if (attr->reject_start <= UNW_PC(info) && |
70 | UNW_PC(info) < attr->reject_end) | 70 | UNW_PC(info) < attr->reject_end) |
71 | return 0; | 71 | return false; |
72 | if (attr->require_start <= UNW_PC(info) && | 72 | if (attr->require_start <= UNW_PC(info) && |
73 | UNW_PC(info) < attr->require_end) | 73 | UNW_PC(info) < attr->require_end) |
74 | found = 1; | 74 | found = true; |
75 | } | 75 | } |
76 | return found; | 76 | return found; |
77 | } | 77 | } |
78 | 78 | ||
79 | static int fail_stacktrace(struct fault_attr *attr) | 79 | static bool fail_stacktrace(struct fault_attr *attr) |
80 | { | 80 | { |
81 | struct unwind_frame_info info; | 81 | struct unwind_frame_info info; |
82 | 82 | ||
@@ -85,9 +85,7 @@ static int fail_stacktrace(struct fault_attr *attr) | |||
85 | 85 | ||
86 | #elif defined(CONFIG_STACKTRACE) | 86 | #elif defined(CONFIG_STACKTRACE) |
87 | 87 | ||
88 | #define MAX_STACK_TRACE_DEPTH 32 | 88 | static bool fail_stacktrace(struct fault_attr *attr) |
89 | |||
90 | static int fail_stacktrace(struct fault_attr *attr) | ||
91 | { | 89 | { |
92 | struct stack_trace trace; | 90 | struct stack_trace trace; |
93 | int depth = attr->stacktrace_depth; | 91 | int depth = attr->stacktrace_depth; |
@@ -109,26 +107,26 @@ static int fail_stacktrace(struct fault_attr *attr) | |||
109 | for (n = 0; n < trace.nr_entries; n++) { | 107 | for (n = 0; n < trace.nr_entries; n++) { |
110 | if (attr->reject_start <= entries[n] && | 108 | if (attr->reject_start <= entries[n] && |
111 | entries[n] < attr->reject_end) | 109 | entries[n] < attr->reject_end) |
112 | return 0; | 110 | return false; |
113 | if (attr->require_start <= entries[n] && | 111 | if (attr->require_start <= entries[n] && |
114 | entries[n] < attr->require_end) | 112 | entries[n] < attr->require_end) |
115 | found = 1; | 113 | found = true; |
116 | } | 114 | } |
117 | return found; | 115 | return found; |
118 | } | 116 | } |
119 | 117 | ||
120 | #else | 118 | #else |
121 | 119 | ||
122 | static inline int fail_stacktrace(struct fault_attr *attr) | 120 | static inline bool fail_stacktrace(struct fault_attr *attr) |
123 | { | 121 | { |
124 | static int firsttime = 1; | 122 | static bool firsttime = true; |
125 | 123 | ||
126 | if (firsttime) { | 124 | if (firsttime) { |
127 | printk(KERN_WARNING | 125 | printk(KERN_WARNING |
128 | "This architecture does not implement save_stack_trace()\n"); | 126 | "This architecture does not implement save_stack_trace()\n"); |
129 | firsttime = 0; | 127 | firsttime = false; |
130 | } | 128 | } |
131 | return 0; | 129 | return false; |
132 | } | 130 | } |
133 | 131 | ||
134 | #endif | 132 | #endif |
@@ -138,32 +136,32 @@ static inline int fail_stacktrace(struct fault_attr *attr) | |||
138 | * http://www.nongnu.org/failmalloc/ | 136 | * http://www.nongnu.org/failmalloc/ |
139 | */ | 137 | */ |
140 | 138 | ||
141 | int should_fail(struct fault_attr *attr, ssize_t size) | 139 | bool should_fail(struct fault_attr *attr, ssize_t size) |
142 | { | 140 | { |
143 | if (attr->task_filter && !fail_task(attr, current)) | 141 | if (attr->task_filter && !fail_task(attr, current)) |
144 | return 0; | 142 | return false; |
145 | 143 | ||
146 | if (!fail_stacktrace(attr)) | 144 | if (!fail_stacktrace(attr)) |
147 | return 0; | 145 | return false; |
148 | 146 | ||
149 | if (atomic_read(&attr->times) == 0) | 147 | if (atomic_read(&attr->times) == 0) |
150 | return 0; | 148 | return false; |
151 | 149 | ||
152 | if (atomic_read(&attr->space) > size) { | 150 | if (atomic_read(&attr->space) > size) { |
153 | atomic_sub(size, &attr->space); | 151 | atomic_sub(size, &attr->space); |
154 | return 0; | 152 | return false; |
155 | } | 153 | } |
156 | 154 | ||
157 | if (attr->interval > 1) { | 155 | if (attr->interval > 1) { |
158 | attr->count++; | 156 | attr->count++; |
159 | if (attr->count % attr->interval) | 157 | if (attr->count % attr->interval) |
160 | return 0; | 158 | return false; |
161 | } | 159 | } |
162 | 160 | ||
163 | if (attr->probability > random32() % 100) | 161 | if (attr->probability > random32() % 100) |
164 | goto fail; | 162 | goto fail; |
165 | 163 | ||
166 | return 0; | 164 | return false; |
167 | 165 | ||
168 | fail: | 166 | fail: |
169 | fail_dump(attr); | 167 | fail_dump(attr); |
@@ -171,7 +169,7 @@ fail: | |||
171 | if (atomic_read(&attr->times) != -1) | 169 | if (atomic_read(&attr->times) != -1) |
172 | atomic_dec_not_zero(&attr->times); | 170 | atomic_dec_not_zero(&attr->times); |
173 | 171 | ||
174 | return 1; | 172 | return true; |
175 | } | 173 | } |
176 | 174 | ||
177 | #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS | 175 | #ifdef CONFIG_FAULT_INJECTION_DEBUG_FS |