Messages in this thread Patch in this message | | | Subject | list sort | From | Steven Whitehouse <> | Date | Wed, 27 Jul 2011 14:23:34 +0100 |
| |
Hi,
There seems to be an issue with list_sort trying to compare an object to itself. I spotted it first in a list for which I knew that I had unique keys, so had put a BUG() in the cmp function if the keys being compared were equal. While investigating I discovered that the objects themselves were equal (and hence the keys, also). The following addition to the list_sort test also triggers twice during the self test:
diff --git a/lib/list_sort.c b/lib/list_sort.c index d7325c6..afa4a97 100644 --- a/lib/list_sort.c +++ b/lib/list_sort.c @@ -198,6 +198,8 @@ static int __init cmp(void *priv, struct list_head *a, struct list_head *b) { struct debug_el *ela, *elb; + WARN_ON(a == b); + ela = container_of(a, struct debug_el, list); elb = container_of(b, struct debug_el, list); While it appears generally harmless, since the list does appear to be correctly sorted, it is doing extra work needlessly.
I couldn't find a listing in the maintainers' file for list_sort, so I used git to find those who'd worked on it recently,
Steve.
| |