[PATCH 15/62] driver-core: Add attribute argument to class_attribute show/store

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Greg Kroah-Hartman
Date: Tuesday, March 2, 2010 - 4:28 pm

From: Andi Kleen <andi@firstfloor.org>

Passing the attribute to the low level IO functions allows all kinds
of cleanups, by sharing low level IO code without requiring
an own function for every piece of data.

Also drivers can extend the attributes with own data fields
and use that in the low level function.

This makes the class attributes the same as sysdev_class attributes
and plain attributes.

This will allow further cleanups in drivers.

Full tree sweep converting all users.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
---
 drivers/base/class.c                  |    4 ++--
 drivers/base/cpu.c                    |    8 ++++++--
 drivers/base/firmware_class.c         |    8 ++++++--
 drivers/base/memory.c                 |   11 ++++++++---
 drivers/block/osdblk.c                |   12 +++++++++---
 drivers/block/pktcdvd.c               |   12 +++++++++---
 drivers/gpio/gpiolib.c                |    8 ++++++--
 drivers/gpu/drm/drm_sysfs.c           |    3 ++-
 drivers/infiniband/core/ucm.c         |    4 +++-
 drivers/infiniband/core/user_mad.c    |    4 +++-
 drivers/infiniband/core/uverbs_main.c |    4 +++-
 drivers/misc/phantom.c                |    2 +-
 drivers/mtd/ubi/build.c               |    3 ++-
 drivers/net/bonding/bond_sysfs.c      |    5 ++++-
 drivers/staging/asus_oled/asus_oled.c |    4 +++-
 drivers/uwb/driver.c                  |    5 ++++-
 include/linux/device.h                |    6 ++++--
 net/bluetooth/l2cap.c                 |    4 +++-
 net/bluetooth/rfcomm/core.c           |    4 +++-
 net/bluetooth/rfcomm/sock.c           |    4 +++-
 net/bluetooth/sco.c                   |    4 +++-
 21 files changed, 87 insertions(+), 32 deletions(-)

diff --git a/drivers/base/class.c b/drivers/base/class.c
index 6e2c3b0..34a2de9 100644
--- a/drivers/base/class.c
+++ b/drivers/base/class.c
@@ -31,7 +31,7 @@ static ssize_t class_attr_show(struct kobject *kobj, struct attribute *attr,
 	ssize_t ret = -EIO;
 
 	if (class_attr->show)
-		ret = class_attr->show(cp->class, buf);
+		ret = class_attr->show(cp->class, class_attr, buf);
 	return ret;
 }
 
@@ -43,7 +43,7 @@ static ssize_t class_attr_store(struct kobject *kobj, struct attribute *attr,
 	ssize_t ret = -EIO;
 
 	if (class_attr->store)
-		ret = class_attr->store(cp->class, buf, count);
+		ret = class_attr->store(cp->class, class_attr, buf, count);
 	return ret;
 }
 
diff --git a/drivers/base/cpu.c b/drivers/base/cpu.c
index fb456b7..9121c77 100644
--- a/drivers/base/cpu.c
+++ b/drivers/base/cpu.c
@@ -79,13 +79,17 @@ void unregister_cpu(struct cpu *cpu)
 }
 
 #ifdef CONFIG_ARCH_CPU_PROBE_RELEASE
-static ssize_t cpu_probe_store(struct class *class, const char *buf,
+static ssize_t cpu_probe_store(struct class *class,
+				struct class_attribute *attr,
+				const char *buf,
 			       size_t count)
 {
 	return arch_cpu_probe(buf, count);
 }
 
-static ssize_t cpu_release_store(struct class *class, const char *buf,
+static ssize_t cpu_release_store(struct class *class,
+				struct class_attribute *attr,
+				const char *buf,
 				 size_t count)
 {
 	return arch_cpu_release(buf, count);
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index a950241..6604fb3 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -69,7 +69,9 @@ fw_load_abort(struct firmware_priv *fw_priv)
 }
 
 static ssize_t
-firmware_timeout_show(struct class *class, char *buf)
+firmware_timeout_show(struct class *class,
+		      struct class_attribute *attr,
+		      char *buf)
 {
 	return sprintf(buf, "%d\n", loading_timeout);
 }
@@ -87,7 +89,9 @@ firmware_timeout_show(struct class *class, char *buf)
  *	Note: zero means 'wait forever'.
  **/
 static ssize_t
-firmware_timeout_store(struct class *class, const char *buf, size_t count)
+firmware_timeout_store(struct class *class,
+			struct class_attribute *attr,
+			const char *buf, size_t count)
 {
 	loading_timeout = simple_strtol(buf, NULL, 10);
 	if (loading_timeout < 0)
diff --git a/drivers/base/memory.c b/drivers/base/memory.c
index 563656a..495f15e 100644
--- a/drivers/base/memory.c
+++ b/drivers/base/memory.c
@@ -331,7 +331,8 @@ static int block_size_init(void)
  */
 #ifdef CONFIG_ARCH_MEMORY_PROBE
 static ssize_t
-memory_probe_store(struct class *class, const char *buf, size_t count)
+memory_probe_store(struct class *class, struct class_attribute *attr,
+		   const char *buf, size_t count)
 {
 	u64 phys_addr;
 	int nid;
@@ -368,7 +369,9 @@ static inline int memory_probe_init(void)
 
 /* Soft offline a page */
 static ssize_t
-store_soft_offline_page(struct class *class, const char *buf, size_t count)
+store_soft_offline_page(struct class *class,
+			struct class_attribute *attr,
+			const char *buf, size_t count)
 {
 	int ret;
 	u64 pfn;
@@ -385,7 +388,9 @@ store_soft_offline_page(struct class *class, const char *buf, size_t count)
 
 /* Forcibly offline a page, including killing processes. */
 static ssize_t
-store_hard_offline_page(struct class *class, const char *buf, size_t count)
+store_hard_offline_page(struct class *class,
+			struct class_attribute *attr,
+			const char *buf, size_t count)
 {
 	int ret;
 	u64 pfn;
diff --git a/drivers/block/osdblk.c b/drivers/block/osdblk.c
index a808b15..eb2091a 100644
--- a/drivers/block/osdblk.c
+++ b/drivers/block/osdblk.c
@@ -476,7 +476,9 @@ static void class_osdblk_release(struct class *cls)
 	kfree(cls);
 }
 
-static ssize_t class_osdblk_list(struct class *c, char *data)
+static ssize_t class_osdblk_list(struct class *c,
+				struct class_attribute *attr,
+				char *data)
 {
 	int n = 0;
 	struct list_head *tmp;
@@ -500,7 +502,9 @@ static ssize_t class_osdblk_list(struct class *c, char *data)
 	return n;
 }
 
-static ssize_t class_osdblk_add(struct class *c, const char *buf, size_t count)
+static ssize_t class_osdblk_add(struct class *c,
+				struct class_attribute *attr,
+				const char *buf, size_t count)
 {
 	struct osdblk_device *osdev;
 	ssize_t rc;
@@ -592,7 +596,9 @@ err_out_mod:
 	return rc;
 }
 
-static ssize_t class_osdblk_remove(struct class *c, const char *buf,
+static ssize_t class_osdblk_remove(struct class *c,
+					struct class_attribute *attr,
+					const char *buf,
 					size_t count)
 {
 	struct osdblk_device *osdev = NULL;
diff --git a/drivers/block/pktcdvd.c b/drivers/block/pktcdvd.c
index b72935b..73d815d 100644
--- a/drivers/block/pktcdvd.c
+++ b/drivers/block/pktcdvd.c
@@ -337,7 +337,9 @@ static void class_pktcdvd_release(struct class *cls)
 {
 	kfree(cls);
 }
-static ssize_t class_pktcdvd_show_map(struct class *c, char *data)
+static ssize_t class_pktcdvd_show_map(struct class *c,
+					struct class_attribute *attr,
+					char *data)
 {
 	int n = 0;
 	int idx;
@@ -356,7 +358,9 @@ static ssize_t class_pktcdvd_show_map(struct class *c, char *data)
 	return n;
 }
 
-static ssize_t class_pktcdvd_store_add(struct class *c, const char *buf,
+static ssize_t class_pktcdvd_store_add(struct class *c,
+					struct class_attribute *attr,
+					const char *buf,
 					size_t count)
 {
 	unsigned int major, minor;
@@ -376,7 +380,9 @@ static ssize_t class_pktcdvd_store_add(struct class *c, const char *buf,
 	return -EINVAL;
 }
 
-static ssize_t class_pktcdvd_store_remove(struct class *c, const char *buf,
+static ssize_t class_pktcdvd_store_remove(struct class *c,
+					  struct class_attribute *attr,
+					  const char *buf,
 					size_t count)
 {
 	unsigned int major, minor;
diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c
index 350842a..3a77eaa 100644
--- a/drivers/gpio/gpiolib.c
+++ b/drivers/gpio/gpiolib.c
@@ -623,7 +623,9 @@ static const struct attribute_group gpiochip_attr_group = {
  * /sys/class/gpio/unexport ... write-only
  *	integer N ... number of GPIO to unexport
  */
-static ssize_t export_store(struct class *class, const char *buf, size_t len)
+static ssize_t export_store(struct class *class,
+				struct class_attribute *attr,
+				const char *buf, size_t len)
 {
 	long	gpio;
 	int	status;
@@ -653,7 +655,9 @@ done:
 	return status ? : len;
 }
 
-static ssize_t unexport_store(struct class *class, const char *buf, size_t len)
+static ssize_t unexport_store(struct class *class,
+				struct class_attribute *attr,
+				const char *buf, size_t len)
 {
 	long	gpio;
 	int	status;
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c
index 7e42b7e..b95aaf2 100644
--- a/drivers/gpu/drm/drm_sysfs.c
+++ b/drivers/gpu/drm/drm_sysfs.c
@@ -71,7 +71,8 @@ static int drm_class_resume(struct device *dev)
 }
 
 /* Display the version of drm_core. This doesn't work right in current design */
-static ssize_t version_show(struct class *dev, char *buf)
+static ssize_t version_show(struct class *dev, struct class_attribute *attr,
+				char *buf)
 {
 	return sprintf(buf, "%s %d.%d.%d %s\n", CORE_NAME, CORE_MAJOR,
 		       CORE_MINOR, CORE_PATCHLEVEL, CORE_DATE);
diff --git a/drivers/infiniband/core/ucm.c b/drivers/infiniband/core/ucm.c
index f504c9b..98c1643 100644
--- a/drivers/infiniband/core/ucm.c
+++ b/drivers/infiniband/core/ucm.c
@@ -1297,7 +1297,9 @@ static void ib_ucm_remove_one(struct ib_device *device)
 	device_unregister(&ucm_dev->dev);
 }
 
-static ssize_t show_abi_version(struct class *class, char *buf)
+static ssize_t show_abi_version(struct class *class,
+				struct class_attribute *attr,
+				char *buf)
 {
 	return sprintf(buf, "%d\n", IB_USER_CM_ABI_VERSION);
 }
diff --git a/drivers/infiniband/core/user_mad.c b/drivers/infiniband/core/user_mad.c
index 7de0296..113dd0d 100644
--- a/drivers/infiniband/core/user_mad.c
+++ b/drivers/infiniband/core/user_mad.c
@@ -984,7 +984,9 @@ static ssize_t show_port(struct device *dev, struct device_attribute *attr,
 }
 static DEVICE_ATTR(port, S_IRUGO, show_port, NULL);
 
-static ssize_t show_abi_version(struct class *class, char *buf)
+static ssize_t show_abi_version(struct class *class,
+				struct class_attribute *attr,
+				char *buf)
 {
 	return sprintf(buf, "%d\n", IB_USER_MAD_ABI_VERSION);
 }
diff --git a/drivers/infiniband/core/uverbs_main.c b/drivers/infiniband/core/uverbs_main.c
index 5f284ff..ef541b9 100644
--- a/drivers/infiniband/core/uverbs_main.c
+++ b/drivers/infiniband/core/uverbs_main.c
@@ -729,7 +729,9 @@ static ssize_t show_dev_abi_version(struct device *device,
 }
 static DEVICE_ATTR(abi_version, S_IRUGO, show_dev_abi_version, NULL);
 
-static ssize_t show_abi_version(struct class *class, char *buf)
+static ssize_t show_abi_version(struct class *class,
+				struct class_attribute *attr,
+				char *buf)
 {
 	return sprintf(buf, "%d\n", IB_USER_VERBS_ABI_VERSION);
 }
diff --git a/drivers/misc/phantom.c b/drivers/misc/phantom.c
index 04c2726..d30ae95 100644
--- a/drivers/misc/phantom.c
+++ b/drivers/misc/phantom.c
@@ -497,7 +497,7 @@ static struct pci_driver phantom_pci_driver = {
 	.resume = phantom_resume
 };
 
-static ssize_t phantom_show_version(struct class *cls, char *buf)
+static ssize_t phantom_show_version(struct class *cls, struct class_attribute *attr, char *buf)
 {
 	return sprintf(buf, PHANTOM_VERSION "\n");
 }
diff --git a/drivers/mtd/ubi/build.c b/drivers/mtd/ubi/build.c
index 14cec04..bd1d28d 100644
--- a/drivers/mtd/ubi/build.c
+++ b/drivers/mtd/ubi/build.c
@@ -87,7 +87,8 @@ DEFINE_MUTEX(ubi_devices_mutex);
 static DEFINE_SPINLOCK(ubi_devices_lock);
 
 /* "Show" method for files in '/<sysfs>/class/ubi/' */
-static ssize_t ubi_version_show(struct class *class, char *buf)
+static ssize_t ubi_version_show(struct class *class, struct class_attribute *attr,
+				char *buf)
 {
 	return sprintf(buf, "%d\n", UBI_VERSION);
 }
diff --git a/drivers/net/bonding/bond_sysfs.c b/drivers/net/bonding/bond_sysfs.c
index 5acd557..b8bec08 100644
--- a/drivers/net/bonding/bond_sysfs.c
+++ b/drivers/net/bonding/bond_sysfs.c
@@ -51,7 +51,9 @@
  * "show" function for the bond_masters attribute.
  * The class parameter is ignored.
  */
-static ssize_t bonding_show_bonds(struct class *cls, char *buf)
+static ssize_t bonding_show_bonds(struct class *cls,
+				  struct class_attribute *attr,
+				  char *buf)
 {
 	struct net *net = current->nsproxy->net_ns;
 	struct bond_net *bn = net_generic(net, bond_net_id);
@@ -98,6 +100,7 @@ static struct net_device *bond_get_by_name(struct net *net, const char *ifname)
  */
 
 static ssize_t bonding_store_bonds(struct class *cls,
+				   struct class_attribute *attr,
 				   const char *buffer, size_t count)
 {
 	struct net *net = current->nsproxy->net_ns;
diff --git a/drivers/staging/asus_oled/asus_oled.c b/drivers/staging/asus_oled/asus_oled.c
index 43c57b7..d11e897 100644
--- a/drivers/staging/asus_oled/asus_oled.c
+++ b/drivers/staging/asus_oled/asus_oled.c
@@ -759,7 +759,9 @@ static struct usb_driver oled_driver = {
 	.id_table =	id_table,
 };
 
-static ssize_t version_show(struct class *dev, char *buf)
+static ssize_t version_show(struct class *dev,
+			    struct class_attribute *attr,
+			    char *buf)
 {
 	return sprintf(buf, ASUS_OLED_UNDERSCORE_NAME " %s\n",
 		       ASUS_OLED_VERSION);
diff --git a/drivers/uwb/driver.c b/drivers/uwb/driver.c
index da77e41..08bd6db 100644
--- a/drivers/uwb/driver.c
+++ b/drivers/uwb/driver.c
@@ -74,13 +74,16 @@
 unsigned long beacon_timeout_ms = 500;
 
 static
-ssize_t beacon_timeout_ms_show(struct class *class, char *buf)
+ssize_t beacon_timeout_ms_show(struct class *class,
+				struct class_attribute *attr,
+				char *buf)
 {
 	return scnprintf(buf, PAGE_SIZE, "%lu\n", beacon_timeout_ms);
 }
 
 static
 ssize_t beacon_timeout_ms_store(struct class *class,
+				struct class_attribute *attr,
 				const char *buf, size_t size)
 {
 	unsigned long bt;
diff --git a/include/linux/device.h b/include/linux/device.h
index b30527d..190f8d3 100644
--- a/include/linux/device.h
+++ b/include/linux/device.h
@@ -251,8 +251,10 @@ extern struct device *class_find_device(struct class *class,
 
 struct class_attribute {
 	struct attribute attr;
-	ssize_t (*show)(struct class *class, char *buf);
-	ssize_t (*store)(struct class *class, const char *buf, size_t count);
+	ssize_t (*show)(struct class *class, struct class_attribute *attr,
+			char *buf);
+	ssize_t (*store)(struct class *class, struct class_attribute *attr,
+			const char *buf, size_t count);
 };
 
 #define CLASS_ATTR(_name, _mode, _show, _store)			\
diff --git a/net/bluetooth/l2cap.c b/net/bluetooth/l2cap.c
index 400efa2..4db7ae2 100644
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
@@ -3937,7 +3937,9 @@ drop:
 	return 0;
 }
 
-static ssize_t l2cap_sysfs_show(struct class *dev, char *buf)
+static ssize_t l2cap_sysfs_show(struct class *dev,
+				struct class_attribute *attr,
+				char *buf)
 {
 	struct sock *sk;
 	struct hlist_node *node;
diff --git a/net/bluetooth/rfcomm/core.c b/net/bluetooth/rfcomm/core.c
index 89f4a59..db8a68e 100644
--- a/net/bluetooth/rfcomm/core.c
+++ b/net/bluetooth/rfcomm/core.c
@@ -2098,7 +2098,9 @@ static struct hci_cb rfcomm_cb = {
 	.security_cfm	= rfcomm_security_cfm
 };
 
-static ssize_t rfcomm_dlc_sysfs_show(struct class *dev, char *buf)
+static ssize_t rfcomm_dlc_sysfs_show(struct class *dev,
+				     struct class_attribute *attr,
+				     char *buf)
 {
 	struct rfcomm_session *s;
 	struct list_head *pp, *p;
diff --git a/net/bluetooth/rfcomm/sock.c b/net/bluetooth/rfcomm/sock.c
index 4b5968d..ca87d6a 100644
--- a/net/bluetooth/rfcomm/sock.c
+++ b/net/bluetooth/rfcomm/sock.c
@@ -1061,7 +1061,9 @@ done:
 	return result;
 }
 
-static ssize_t rfcomm_sock_sysfs_show(struct class *dev, char *buf)
+static ssize_t rfcomm_sock_sysfs_show(struct class *dev,
+				      struct class_attribute *attr,
+				      char *buf)
 {
 	struct sock *sk;
 	struct hlist_node *node;
diff --git a/net/bluetooth/sco.c b/net/bluetooth/sco.c
index dd8f6ec..f93b939 100644
--- a/net/bluetooth/sco.c
+++ b/net/bluetooth/sco.c
@@ -953,7 +953,9 @@ drop:
 	return 0;
 }
 
-static ssize_t sco_sysfs_show(struct class *dev, char *buf)
+static ssize_t sco_sysfs_show(struct class *dev,
+				struct class_attribute *attr,
+				char *buf)
 {
 	struct sock *sk;
 	struct hlist_node *node;
-- 
1.7.0.1

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[GIT PATCH] driver core patches for 2.6.33-git, Greg KH, (Tue Mar 2, 4:09 pm)
[PATCH 01/62] kobject-example: Spelling fixes., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 02/62] kset-example: Spelling fixes., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 03/62] Driver core: add platform_create_bundle() helper, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 04/62] driver core: make platform_device_id table const, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 05/62] sysdev: Pass attribute in sysdev_class attri ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 06/62] sysdev: Convert node driver class attributes ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 07/62] sysdev: Convert cpu driver sysdev class attr ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 08/62] sysfs: Add sysfs_add/remove_files utility fu ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 09/62] sysfs: Add attribute array to sysdev classes, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 10/62] sysdev: Convert node driver, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 11/62] sysdev: Use sysdev_class attribute arrays in ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 12/62] sysdev: Add sysdev_create/remove_files, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 13/62] sysdev: Fix type of sysdev class attribute i ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 14/62] sysdev: fix missing s390 conversion, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 15/62] driver-core: Add attribute argument to class ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 16/62] driver core: Add class_attr_string for simpl ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 17/62] driver core: Convert some drivers to CLASS_A ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 18/62] Driver-Core: devtmpfs - reset inode permissi ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 19/62] Driver-Core: devtmpfs - remove EXPERIMENTAL ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 20/62] Driver-Core: disable /sbin/hotplug by default, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 21/62] Driver-Core: require valid action string in ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 22/62] sysfs: Cache the last sysfs_dirent to improv ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 23/62] driver-core: firmware_class: remove base.h h ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 24/62] kobject: Constify struct kset_uevent_ops, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 25/62] HOWTO: Updates on subsystem trees, patchwork ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 26/62] sysdev: fix up the probe/release attributes, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 27/62] Driver core: Constify struct sysfs_ops in st ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 28/62] Driver core: make struct platform_driver.id_ ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 29/62] platform-drivers: move probe to .devinit.tex ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 30/62] platform-drivers: move probe to .devinit.tex ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 32/62] x86: move hp-wmi's probe function to .devini ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 33/62] i2c: move i2c_omap's probe function to .devi ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 34/62] w1: move omap_hdq's probe function to .devin ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 35/62] media: move omap24xxcam's probe function to ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 36/62] auxdisplay: move cfag12864bfb's probe functi ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 38/62] UIO: Add a driver for Hilscher netX-based fi ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 39/62] UIO: minor Kconfig fixes, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 40/62] UIO: Remove SMX Cryptengine driver, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 41/62] Driver core: Fix first line of kernel-doc fo ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 42/62] sysfs: Remove sysfs_get/put_active_two, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 43/62] sysfs: Only take active references on attrib ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 44/62] sysfs: Use one lockdep class per sysfs attri ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 45/62] sysfs: Use sysfs_attr_init and sysfs_bin_att ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 46/62] sysfs: Document sysfs_attr_init and sysfs_bi ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 47/62] sysfs: Use sysfs_attr_init and sysfs_bin_att ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 48/62] sysfs: windfarm: init sysfs attributes, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 49/62] sysfs: Serialize updates to the vfs inode, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 50/62] sysfs: Pack sysfs_dirent more tightly., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 51/62] sysfs: Implement sysfs_rename_link, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 52/62] driver core: Use sysfs_rename_link in device ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 53/62] sysfs: Pass super_block to sysfs_get_inode, Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 54/62] sysfs: Kill unused sysfs_sb variable., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 56/62] msi-laptop: Support standard ec 66/62 comman ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 57/62] msi-laptop: Add threeg sysfs file for suppor ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 58/62] msi-laptop: Support some MSI 3G netbook that ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 59/62] msi-laptop: Add resume method for set the SC ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 60/62] msi-laptop: Detect 3G device exists by stand ..., Greg Kroah-Hartman, (Tue Mar 2, 4:28 pm)
[PATCH 61/62] msi-laptop: depends on RFKILL, Greg Kroah-Hartman, (Tue Mar 2, 4:29 pm)
[PATCH 62/62] sysfs: fix for thinko with sysfs_bin_attr_init(), Greg Kroah-Hartman, (Tue Mar 2, 4:29 pm)
Re: [PATCH 61/62] msi-laptop: depends on RFKILL, Dmitry Torokhov, (Tue Mar 2, 11:09 pm)
Re: [GIT PATCH] driver core patches for 2.6.33-git, Linus Torvalds, (Mon Mar 8, 10:28 am)