[PATCH] klist: Fix broken kref counting in find functions
authorFrank Pavlic <pavlic@de.ibm.com>
Sun, 27 Nov 2005 04:48:40 +0000 (20:48 -0800)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 5 Jan 2006 00:18:08 +0000 (16:18 -0800)
commite22dafbcd7a579c29a424d5203b5b33b131948a7
tree122969a87ba706be8374beb15bc03493e3601404
parentbf74ad5bc41727d5f2f1c6bedb2c1fac394de731
[PATCH] klist: Fix broken kref counting in find functions

The klist reference counting in the find functions that use
klist_iter_init_node is broken.  If the function (for example
driver_find_device) is called with a NULL start object then everything is
fine, the first call to next_device()/klist_next increases the ref-count of
the first node on the list and does nothing for the start object which is
NULL.

If they are called with a valid start object then klist_next will decrement
the ref-count for the start object but nobody has incremented it.  Logical
place to fix this would be klist_iter_init_node because the function puts a
reference of the object into the klist_iter struct.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
Signed-off-by: Frank Pavlic <pavlic@de.ibm.com>
Cc: Patrick Mochel <mochel@digitalimplant.org>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
lib/klist.c