diff -uprN -X dontdiff linux-2.6.12-rc4-sysfsdyncallback-gregkhcore/drivers/base/core.c linux-2.6.12-rc4-sysfsdyncallback-deviceattr/drivers/base/core.c --- linux-2.6.12-rc4-sysfsdyncallback-gregkhcore/drivers/base/core.c 2005-05-10 21:44:00.000000000 -0400 +++ linux-2.6.12-rc4-sysfsdyncallback-deviceattr/drivers/base/core.c 2005-05-10 23:17:20.000000000 -0400 @@ -41,7 +41,7 @@ dev_attr_show(struct kobject * kobj, str ssize_t ret = 0; if (dev_attr->show) - ret = dev_attr->show(dev, buf); + ret = dev_attr->show(dev, buf, attr->private); return ret; } @@ -54,7 +54,7 @@ dev_attr_store(struct kobject * kobj, st ssize_t ret = 0; if (dev_attr->store) - ret = dev_attr->store(dev, buf, count); + ret = dev_attr->store(dev, buf, count, attr->private); return ret; } diff -uprN -X dontdiff linux-2.6.12-rc4-sysfsdyncallback-gregkhcore/include/linux/device.h linux-2.6.12-rc4-sysfsdyncallback-deviceattr/include/linux/device.h --- linux-2.6.12-rc4-sysfsdyncallback-gregkhcore/include/linux/device.h 2005-05-10 21:44:28.000000000 -0400 +++ linux-2.6.12-rc4-sysfsdyncallback-deviceattr/include/linux/device.h 2005-05-10 23:23:15.000000000 -0400 @@ -335,8 +335,9 @@ extern void driver_attach(struct device_ struct device_attribute { struct attribute attr; - ssize_t (*show)(struct device * dev, char * buf); - ssize_t (*store)(struct device * dev, const char * buf, size_t count); + ssize_t (*show)(struct device * dev, char * buf, void * private); + ssize_t (*store)(struct device * dev, const char * buf, size_t count, + void * private); }; #define DEVICE_ATTR(_name,_mode,_show,_store) \