aboutsummaryrefslogtreecommitdiffstats
path: root/lib/list_debug.c
diff options
context:
space:
mode:
authorManfred Spraul <manfred@colorfullife.com>2006-09-29 04:59:01 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-09-29 12:18:05 -0400
commitdf89a864631f5d840f4873c4c03733b4206e78ea (patch)
treeea72861bb3348ff740f0ff1e89260eb451666a5b /lib/list_debug.c
parent199a9afc3dbe98c35326f1d3907ab94dae953a6e (diff)
[PATCH] list_del debug check
A list_del() debugging check. Has been in -mm for years. Dave moved list_del() out-of-line in the debug case, so this is now suitable for mainline. Cc: Dave Jones <davej@codemonkey.org.uk> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'lib/list_debug.c')
-rw-r--r--lib/list_debug.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/list_debug.c b/lib/list_debug.c
index 1aae85cef92..e80d27c9789 100644
--- a/lib/list_debug.c
+++ b/lib/list_debug.c
@@ -59,14 +59,17 @@ EXPORT_SYMBOL(list_add);
59 */ 59 */
60void list_del(struct list_head *entry) 60void list_del(struct list_head *entry)
61{ 61{
62 BUG_ON(entry->prev->next != entry);
63 BUG_ON(entry->next->prev != entry);
64
62 if (unlikely(entry->prev->next != entry)) { 65 if (unlikely(entry->prev->next != entry)) {
63 printk(KERN_ERR "list_del corruption. prev->next should be %p, but was %p\n", 66 printk(KERN_ERR "list_del corruption. prev->next should be %p, "
64 entry, entry->prev->next); 67 "but was %p\n", entry, entry->prev->next);
65 BUG(); 68 BUG();
66 } 69 }
67 if (unlikely(entry->next->prev != entry)) { 70 if (unlikely(entry->next->prev != entry)) {
68 printk(KERN_ERR "list_del corruption. next->prev should be %p, but was %p\n", 71 printk(KERN_ERR "list_del corruption. next->prev should be %p, "
69 entry, entry->next->prev); 72 "but was %p\n", entry, entry->next->prev);
70 BUG(); 73 BUG();
71 } 74 }
72 __list_del(entry->prev, entry->next); 75 __list_del(entry->prev, entry->next);
@@ -74,4 +77,3 @@ void list_del(struct list_head *entry)
74 entry->prev = LIST_POISON2; 77 entry->prev = LIST_POISON2;
75} 78}
76EXPORT_SYMBOL(list_del); 79EXPORT_SYMBOL(list_del);
77