]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
list_debug: WARN for adding something already in the list
authorChris Metcalf <cmetcalf@tilera.com>
Wed, 25 Apr 2012 01:04:33 +0000 (11:04 +1000)
committerStephen Rothwell <sfr@canb.auug.org.au>
Mon, 30 Apr 2012 05:17:34 +0000 (15:17 +1000)
We were bitten by this at one point and added an additional sanity test
for DEBUG_LIST.  You can't validly add a list_head to a list where either
prev or next is the same as the thing you're adding.

Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
Cc: Andi Kleen <andi@firstfloor.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
lib/list_debug.c

index 3810b481f940bac6450f3e7342ec5dbfdb385318..23a5e031cd8bc43605655da59bce57eadb3304b8 100644 (file)
@@ -31,6 +31,9 @@ void __list_add(struct list_head *new,
                "list_add corruption. prev->next should be "
                "next (%p), but was %p. (prev=%p).\n",
                next, prev->next, prev);
+       WARN(new == prev || new == next,
+            "list_add double add: new=%p, prev=%p, next=%p.\n",
+            new, prev, next);
        next->prev = new;
        new->next = next;
        new->prev = prev;