aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/Kconfig.debug20
-rw-r--r--lib/btree.c5
-rw-r--r--lib/fault-inject.c4
-rw-r--r--lib/radix-tree.c3
-rw-r--r--lib/raid6/recov.c7
-rw-r--r--lib/raid6/recov_ssse3.c7
-rw-r--r--lib/spinlock_debug.c2
7 files changed, 39 insertions, 9 deletions
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index a42d3ae39648..ff5bdee4716d 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -241,6 +241,26 @@ config BOOTPARAM_SOFTLOCKUP_PANIC_VALUE
241 default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC 241 default 0 if !BOOTPARAM_SOFTLOCKUP_PANIC
242 default 1 if BOOTPARAM_SOFTLOCKUP_PANIC 242 default 1 if BOOTPARAM_SOFTLOCKUP_PANIC
243 243
244config PANIC_ON_OOPS
245 bool "Panic on Oops" if EXPERT
246 default n
247 help
248 Say Y here to enable the kernel to panic when it oopses. This
249 has the same effect as setting oops=panic on the kernel command
250 line.
251
252 This feature is useful to ensure that the kernel does not do
253 anything erroneous after an oops which could result in data
254 corruption or other issues.
255
256 Say N if unsure.
257
258config PANIC_ON_OOPS_VALUE
259 int
260 range 0 1
261 default 0 if !PANIC_ON_OOPS
262 default 1 if PANIC_ON_OOPS
263
244config DETECT_HUNG_TASK 264config DETECT_HUNG_TASK
245 bool "Detect Hung Tasks" 265 bool "Detect Hung Tasks"
246 depends on DEBUG_KERNEL 266 depends on DEBUG_KERNEL
diff --git a/lib/btree.c b/lib/btree.c
index e5ec1e9c1aa5..f9a484676cb6 100644
--- a/lib/btree.c
+++ b/lib/btree.c
@@ -319,8 +319,8 @@ void *btree_get_prev(struct btree_head *head, struct btree_geo *geo,
319 319
320 if (head->height == 0) 320 if (head->height == 0)
321 return NULL; 321 return NULL;
322retry:
323 longcpy(key, __key, geo->keylen); 322 longcpy(key, __key, geo->keylen);
323retry:
324 dec_key(geo, key); 324 dec_key(geo, key);
325 325
326 node = head->node; 326 node = head->node;
@@ -351,7 +351,7 @@ retry:
351 } 351 }
352miss: 352miss:
353 if (retry_key) { 353 if (retry_key) {
354 __key = retry_key; 354 longcpy(key, retry_key, geo->keylen);
355 retry_key = NULL; 355 retry_key = NULL;
356 goto retry; 356 goto retry;
357 } 357 }
@@ -509,6 +509,7 @@ retry:
509int btree_insert(struct btree_head *head, struct btree_geo *geo, 509int btree_insert(struct btree_head *head, struct btree_geo *geo,
510 unsigned long *key, void *val, gfp_t gfp) 510 unsigned long *key, void *val, gfp_t gfp)
511{ 511{
512 BUG_ON(!val);
512 return btree_insert_level(head, geo, key, val, 1, gfp); 513 return btree_insert_level(head, geo, key, val, 1, gfp);
513} 514}
514EXPORT_SYMBOL_GPL(btree_insert); 515EXPORT_SYMBOL_GPL(btree_insert);
diff --git a/lib/fault-inject.c b/lib/fault-inject.c
index 6805453c18e7..f7210ad6cffd 100644
--- a/lib/fault-inject.c
+++ b/lib/fault-inject.c
@@ -101,6 +101,10 @@ static inline bool fail_stacktrace(struct fault_attr *attr)
101 101
102bool should_fail(struct fault_attr *attr, ssize_t size) 102bool should_fail(struct fault_attr *attr, ssize_t size)
103{ 103{
104 /* No need to check any other properties if the probability is 0 */
105 if (attr->probability == 0)
106 return false;
107
104 if (attr->task_filter && !fail_task(attr, current)) 108 if (attr->task_filter && !fail_task(attr, current))
105 return false; 109 return false;
106 110
diff --git a/lib/radix-tree.c b/lib/radix-tree.c
index d7c878cc006c..e7964296fd50 100644
--- a/lib/radix-tree.c
+++ b/lib/radix-tree.c
@@ -686,6 +686,9 @@ void **radix_tree_next_chunk(struct radix_tree_root *root,
686 * during iterating; it can be zero only at the beginning. 686 * during iterating; it can be zero only at the beginning.
687 * And we cannot overflow iter->next_index in a single step, 687 * And we cannot overflow iter->next_index in a single step,
688 * because RADIX_TREE_MAP_SHIFT < BITS_PER_LONG. 688 * because RADIX_TREE_MAP_SHIFT < BITS_PER_LONG.
689 *
690 * This condition also used by radix_tree_next_slot() to stop
691 * contiguous iterating, and forbid swithing to the next chunk.
689 */ 692 */
690 index = iter->next_index; 693 index = iter->next_index;
691 if (!index && iter->index) 694 if (!index && iter->index)
diff --git a/lib/raid6/recov.c b/lib/raid6/recov.c
index 1805a5cc5daa..a95bccb8497d 100644
--- a/lib/raid6/recov.c
+++ b/lib/raid6/recov.c
@@ -22,8 +22,8 @@
22#include <linux/raid/pq.h> 22#include <linux/raid/pq.h>
23 23
24/* Recover two failed data blocks. */ 24/* Recover two failed data blocks. */
25void raid6_2data_recov_intx1(int disks, size_t bytes, int faila, int failb, 25static void raid6_2data_recov_intx1(int disks, size_t bytes, int faila,
26 void **ptrs) 26 int failb, void **ptrs)
27{ 27{
28 u8 *p, *q, *dp, *dq; 28 u8 *p, *q, *dp, *dq;
29 u8 px, qx, db; 29 u8 px, qx, db;
@@ -66,7 +66,8 @@ void raid6_2data_recov_intx1(int disks, size_t bytes, int faila, int failb,
66} 66}
67 67
68/* Recover failure of one data block plus the P block */ 68/* Recover failure of one data block plus the P block */
69void raid6_datap_recov_intx1(int disks, size_t bytes, int faila, void **ptrs) 69static void raid6_datap_recov_intx1(int disks, size_t bytes, int faila,
70 void **ptrs)
70{ 71{
71 u8 *p, *q, *dq; 72 u8 *p, *q, *dq;
72 const u8 *qmul; /* Q multiplier table */ 73 const u8 *qmul; /* Q multiplier table */
diff --git a/lib/raid6/recov_ssse3.c b/lib/raid6/recov_ssse3.c
index 37ae61930559..ecb710c0b4d9 100644
--- a/lib/raid6/recov_ssse3.c
+++ b/lib/raid6/recov_ssse3.c
@@ -19,8 +19,8 @@ static int raid6_has_ssse3(void)
19 boot_cpu_has(X86_FEATURE_SSSE3); 19 boot_cpu_has(X86_FEATURE_SSSE3);
20} 20}
21 21
22void raid6_2data_recov_ssse3(int disks, size_t bytes, int faila, int failb, 22static void raid6_2data_recov_ssse3(int disks, size_t bytes, int faila,
23 void **ptrs) 23 int failb, void **ptrs)
24{ 24{
25 u8 *p, *q, *dp, *dq; 25 u8 *p, *q, *dp, *dq;
26 const u8 *pbmul; /* P multiplier table for B data */ 26 const u8 *pbmul; /* P multiplier table for B data */
@@ -194,7 +194,8 @@ void raid6_2data_recov_ssse3(int disks, size_t bytes, int faila, int failb,
194} 194}
195 195
196 196
197void raid6_datap_recov_ssse3(int disks, size_t bytes, int faila, void **ptrs) 197static void raid6_datap_recov_ssse3(int disks, size_t bytes, int faila,
198 void **ptrs)
198{ 199{
199 u8 *p, *q, *dq; 200 u8 *p, *q, *dq;
200 const u8 *qmul; /* Q multiplier table */ 201 const u8 *qmul; /* Q multiplier table */
diff --git a/lib/spinlock_debug.c b/lib/spinlock_debug.c
index d0ec4f3d1593..e91fbc23fff1 100644
--- a/lib/spinlock_debug.c
+++ b/lib/spinlock_debug.c
@@ -118,7 +118,7 @@ static void __spin_lock_debug(raw_spinlock_t *lock)
118 /* lockup suspected: */ 118 /* lockup suspected: */
119 if (print_once) { 119 if (print_once) {
120 print_once = 0; 120 print_once = 0;
121 spin_dump(lock, "lockup"); 121 spin_dump(lock, "lockup suspected");
122#ifdef CONFIG_SMP 122#ifdef CONFIG_SMP
123 trigger_all_cpu_backtrace(); 123 trigger_all_cpu_backtrace();
124#endif 124#endif