linux/drivers/base
James Bottomley 34bb61f9dd [PATCH] fix klist semantics for lists which have elements removed on traversal
The problem is that klists claim to provide semantics for safe traversal of
lists which are being modified.  The failure case is when traversal of a
list causes element removal (a fairly common case).  The issue is that
although the list node is refcounted, if it is embedded in an object (which
is universally the case), then the object will be freed regardless of the
klist refcount leading to slab corruption because the klist iterator refers
to the prior element to get the next.

The solution is to make the klist take and release references to the
embedding object meaning that the embedding object won't be released until
the list relinquishes the reference to it.

(akpm: fast-track this because it's needed for the 2.6.13 scsi merge)

Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
2005-09-07 18:26:54 -07:00
..
power [PATCH] swsusp: switch pm_message_t to struct 2005-09-05 00:06:16 -07:00
attribute_container.c [SCSI] Revert "final klist fixes" 2005-09-07 17:50:58 -07:00
base.h [PATCH] driver core: Add the ability to bind drivers to devices from userspace 2005-06-29 22:48:04 -07:00
bus.c [PATCH] fix klist semantics for lists which have elements removed on traversal 2005-09-07 18:26:54 -07:00
class.c [PATCH] Driver core: small cleanup; remove check for NULL before kfree() in driver core 2005-09-05 16:03:13 -07:00
core.c [PATCH] fix klist semantics for lists which have elements removed on traversal 2005-09-07 18:26:54 -07:00
cpu.c [PATCH] generate hotplug events for cpu online 2005-06-25 16:24:31 -07:00
dd.c [PATCH] klist: fix klist to have the same klist_add semantics as list_head 2005-09-05 16:03:13 -07:00
dmapool.c [PATCH] Driver Core: drivers/base - drivers/i2c/chips/adm1026.c: update device attribute callbacks 2005-06-20 15:15:32 -07:00
driver.c [PATCH] fix klist semantics for lists which have elements removed on traversal 2005-09-07 18:26:54 -07:00
firmware_class.c [PATCH] modified firmware_class.c to support no hotplug 2005-09-07 16:57:26 -07:00
firmware.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
init.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Kconfig Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
Makefile [PATCH] Move device/driver code to drivers/base/dd.c 2005-06-20 15:15:13 -07:00
map.c Linux-2.6.12-rc2 2005-04-16 15:20:36 -07:00
node.c [PATCH] VM: add page_state info to per-node meminfo 2005-09-05 00:05:49 -07:00
platform.c [PATCH] DocBook: fix some descriptions 2005-05-01 08:59:26 -07:00
sys.c [PATCH] Driver core: hande sysdev suspend failure 2005-09-05 16:03:12 -07:00
transport_class.c [SCSI] fix transport class corner case after rework 2005-08-28 11:14:06 -05:00