<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">From James.Bottomley@SteelEye.com Fri Aug 19 06:17:23 2005
Subject: klist: fix klist to have the same klist_add semantics as list_head
From: James Bottomley &lt;James.Bottomley@SteelEye.com&gt;
To: Greg KH &lt;greg@kroah.com&gt;
Date: Fri, 19 Aug 2005 09:14:01 -0400
Message-Id: &lt;1124457241.5130.10.camel@mulgrave&gt;

at the moment, the list_head semantics are

list_add(node, head)

whereas current klist semantics are

klist_add(head, node)

This is bound to cause confusion, and since klist is the newcomer, it
should follow the list_head semantics.

I also added missing include guards to klist.h

Signed-off-by: James Bottomley &lt;James.Bottomley@SteelEye.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@suse.de&gt;

---
 drivers/base/bus.c    |    4 ++--
 drivers/base/core.c   |    2 +-
 drivers/base/dd.c     |    2 +-
 include/linux/klist.h |    8 ++++++--
 lib/klist.c           |    8 ++++----
 5 files changed, 14 insertions(+), 10 deletions(-)

--- gregkh-2.6.orig/drivers/base/bus.c	2005-08-30 12:18:13.000000000 -0700
+++ gregkh-2.6/drivers/base/bus.c	2005-08-30 12:18:22.000000000 -0700
@@ -360,7 +360,7 @@ int bus_add_device(struct device * dev)
 	if (bus) {
 		pr_debug("bus %s: add device %s\n", bus-&gt;name, dev-&gt;bus_id);
 		device_attach(dev);
-		klist_add_tail(&amp;bus-&gt;klist_devices, &amp;dev-&gt;knode_bus);
+		klist_add_tail(&amp;dev-&gt;knode_bus, &amp;bus-&gt;klist_devices);
 		error = device_add_attrs(bus, dev);
 		if (!error) {
 			sysfs_create_link(&amp;bus-&gt;devices.kobj, &amp;dev-&gt;kobj, dev-&gt;bus_id);
@@ -448,7 +448,7 @@ int bus_add_driver(struct device_driver 
 		}
 
 		driver_attach(drv);
-		klist_add_tail(&amp;bus-&gt;klist_drivers, &amp;drv-&gt;knode_bus);
+		klist_add_tail(&amp;drv-&gt;knode_bus, &amp;bus-&gt;klist_drivers);
 		module_add_driver(drv-&gt;owner, drv);
 
 		driver_add_attrs(bus, drv);
--- gregkh-2.6.orig/drivers/base/core.c	2005-08-28 16:41:01.000000000 -0700
+++ gregkh-2.6/drivers/base/core.c	2005-08-30 12:18:22.000000000 -0700
@@ -249,7 +249,7 @@ int device_add(struct device *dev)
 	if ((error = bus_add_device(dev)))
 		goto BusError;
 	if (parent)
-		klist_add_tail(&amp;parent-&gt;klist_children, &amp;dev-&gt;knode_parent);
+		klist_add_tail(&amp;dev-&gt;knode_parent, &amp;parent-&gt;klist_children);
 
 	/* notify platform of device entry */
 	if (platform_notify)
--- gregkh-2.6.orig/drivers/base/dd.c	2005-08-28 16:41:01.000000000 -0700
+++ gregkh-2.6/drivers/base/dd.c	2005-08-30 12:18:22.000000000 -0700
@@ -42,7 +42,7 @@ void device_bind_driver(struct device * 
 {
 	pr_debug("bound device '%s' to driver '%s'\n",
 		 dev-&gt;bus_id, dev-&gt;driver-&gt;name);
-	klist_add_tail(&amp;dev-&gt;driver-&gt;klist_devices, &amp;dev-&gt;knode_driver);
+	klist_add_tail(&amp;dev-&gt;knode_driver, &amp;dev-&gt;driver-&gt;klist_devices);
 	sysfs_create_link(&amp;dev-&gt;driver-&gt;kobj, &amp;dev-&gt;kobj,
 			  kobject_name(&amp;dev-&gt;kobj));
 	sysfs_create_link(&amp;dev-&gt;kobj, &amp;dev-&gt;driver-&gt;kobj, "driver");
--- gregkh-2.6.orig/include/linux/klist.h	2005-08-28 16:41:01.000000000 -0700
+++ gregkh-2.6/include/linux/klist.h	2005-08-30 12:18:22.000000000 -0700
@@ -9,6 +9,9 @@
  *	This file is rleased under the GPL v2.
  */
 
+#ifndef _LINUX_KLIST_H
+#define _LINUX_KLIST_H
+
 #include &lt;linux/spinlock.h&gt;
 #include &lt;linux/completion.h&gt;
 #include &lt;linux/kref.h&gt;
@@ -31,8 +34,8 @@ struct klist_node {
 	struct completion	n_removed;
 };
 
-extern void klist_add_tail(struct klist * k, struct klist_node * n);
-extern void klist_add_head(struct klist * k, struct klist_node * n);
+extern void klist_add_tail(struct klist_node * n, struct klist * k);
+extern void klist_add_head(struct klist_node * n, struct klist * k);
 
 extern void klist_del(struct klist_node * n);
 extern void klist_remove(struct klist_node * n);
@@ -53,3 +56,4 @@ extern void klist_iter_init_node(struct 
 extern void klist_iter_exit(struct klist_iter * i);
 extern struct klist_node * klist_next(struct klist_iter * i);
 
+#endif
--- gregkh-2.6.orig/lib/klist.c	2005-08-28 16:41:01.000000000 -0700
+++ gregkh-2.6/lib/klist.c	2005-08-30 12:18:22.000000000 -0700
@@ -79,11 +79,11 @@ static void klist_node_init(struct klist
 
 /**
  *	klist_add_head - Initialize a klist_node and add it to front.
- *	@k:	klist it's going on.
  *	@n:	node we're adding.
+ *	@k:	klist it's going on.
  */
 
-void klist_add_head(struct klist * k, struct klist_node * n)
+void klist_add_head(struct klist_node * n, struct klist * k)
 {
 	klist_node_init(k, n);
 	add_head(k, n);
@@ -94,11 +94,11 @@ EXPORT_SYMBOL_GPL(klist_add_head);
 
 /**
  *	klist_add_tail - Initialize a klist_node and add it to back.
- *	@k:	klist it's going on.
  *	@n:	node we're adding.
+ *	@k:	klist it's going on.
  */
 
-void klist_add_tail(struct klist * k, struct klist_node * n)
+void klist_add_tail(struct klist_node * n, struct klist * k)
 {
 	klist_node_init(k, n);
 	add_tail(k, n);
</pre></body></html>