forked from mirrors/linux
		
	list debugging: use WARN() instead of BUG()
Arjan noted that the list_head debugging is BUG'ing when it detects corruption. By causing the box to panic immediately, we're possibly losing some bug reports. Changing this to a WARN() should mean we at the least start seeing reports collected at kerneloops.org Signed-off-by: Dave Jones <davej@redhat.com> Cc: Matthew Wilcox <matthew@wil.cx> Cc: Arjan van de Ven <arjan@infradead.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
		
							parent
							
								
									d955c78ac4
								
							
						
					
					
						commit
						924d9addb9
					
				
					 1 changed files with 14 additions and 22 deletions
				
			
		|  | @ -20,18 +20,14 @@ void __list_add(struct list_head *new, | |||
| 			      struct list_head *prev, | ||||
| 			      struct list_head *next) | ||||
| { | ||||
| 	if (unlikely(next->prev != prev)) { | ||||
| 		printk(KERN_ERR "list_add corruption. next->prev should be " | ||||
| 	WARN(next->prev != prev, | ||||
| 		"list_add corruption. next->prev should be " | ||||
| 		"prev (%p), but was %p. (next=%p).\n", | ||||
| 		prev, next->prev, next); | ||||
| 		BUG(); | ||||
| 	} | ||||
| 	if (unlikely(prev->next != next)) { | ||||
| 		printk(KERN_ERR "list_add corruption. prev->next should be " | ||||
| 	WARN(prev->next != next, | ||||
| 		"list_add corruption. prev->next should be " | ||||
| 		"next (%p), but was %p. (prev=%p).\n", | ||||
| 		next, prev->next, prev); | ||||
| 		BUG(); | ||||
| 	} | ||||
| 	next->prev = new; | ||||
| 	new->next = next; | ||||
| 	new->prev = prev; | ||||
|  | @ -47,16 +43,12 @@ EXPORT_SYMBOL(__list_add); | |||
|  */ | ||||
| void list_del(struct list_head *entry) | ||||
| { | ||||
| 	if (unlikely(entry->prev->next != entry)) { | ||||
| 		printk(KERN_ERR "list_del corruption. prev->next should be %p, " | ||||
| 	WARN(entry->prev->next != entry, | ||||
| 		"list_del corruption. prev->next should be %p, " | ||||
| 		"but was %p\n", entry, entry->prev->next); | ||||
| 		BUG(); | ||||
| 	} | ||||
| 	if (unlikely(entry->next->prev != entry)) { | ||||
| 		printk(KERN_ERR "list_del corruption. next->prev should be %p, " | ||||
| 	WARN(entry->next->prev != entry, | ||||
| 		"list_del corruption. next->prev should be %p, " | ||||
| 		"but was %p\n", entry, entry->next->prev); | ||||
| 		BUG(); | ||||
| 	} | ||||
| 	__list_del(entry->prev, entry->next); | ||||
| 	entry->next = LIST_POISON1; | ||||
| 	entry->prev = LIST_POISON2; | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue
	
	 Dave Jones
						Dave Jones