diff options
| author | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-07-11 00:03:38 -0700 |
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-07-11 00:03:38 -0700 |
| commit | 6e9f440490ff7de2f449e4d9fdc9c6658ffc11e7 (patch) | |
| tree | 9e72ceb99eda68ae14e27d4af2487b46e02240a6 /f4.patch | |
| parent | 16550012cf41452dd31e2d83183efe5d71ab04e2 (diff) | |
| download | patches-6e9f440490ff7de2f449e4d9fdc9c6658ffc11e7.tar.gz | |
more updates
Diffstat (limited to 'f4.patch')
| -rw-r--r-- | f4.patch | 285 |
1 files changed, 285 insertions, 0 deletions
diff --git a/f4.patch b/f4.patch new file mode 100644 index 00000000000000..7a9a2787ac5bba --- /dev/null +++ b/f4.patch @@ -0,0 +1,285 @@ +--- + drivers/base/bus.c | 39 ++------------------------------------- + drivers/base/platform.c | 10 ++++++---- + drivers/hid/hid-core.c | 10 ++++++---- + drivers/misc/mei/bus.c | 10 ++++++---- + include/linux/device.h | 2 -- + kernel/events/core.c | 13 ++++++++----- + kernel/workqueue.c | 27 +++++++++++++++------------ + 7 files changed, 43 insertions(+), 68 deletions(-) + +--- a/drivers/base/bus.c ++++ b/drivers/base/bus.c +@@ -452,35 +452,6 @@ int bus_for_each_drv(struct bus_type *bu + } + EXPORT_SYMBOL_GPL(bus_for_each_drv); + +-static int device_add_attrs(struct bus_type *bus, struct device *dev) +-{ +- int error = 0; +- int i; +- +- if (!bus->dev_attrs) +- return 0; +- +- for (i = 0; attr_name(bus->dev_attrs[i]); i++) { +- error = device_create_file(dev, &bus->dev_attrs[i]); +- if (error) { +- while (--i >= 0) +- device_remove_file(dev, &bus->dev_attrs[i]); +- break; +- } +- } +- return error; +-} +- +-static void device_remove_attrs(struct bus_type *bus, struct device *dev) +-{ +- int i; +- +- if (bus->dev_attrs) { +- for (i = 0; attr_name(bus->dev_attrs[i]); i++) +- device_remove_file(dev, &bus->dev_attrs[i]); +- } +-} +- + /** + * bus_add_device - add device to bus + * @dev: device being added +@@ -496,16 +467,13 @@ int bus_add_device(struct device *dev) + + if (bus) { + pr_debug("bus: '%s': add device %s\n", bus->name, dev_name(dev)); +- error = device_add_attrs(bus, dev); +- if (error) +- goto out_put; + error = device_add_groups(dev, bus->dev_groups); + if (error) +- goto out_groups; ++ goto out_put; + error = sysfs_create_link(&bus->p->devices_kset->kobj, + &dev->kobj, dev_name(dev)); + if (error) +- goto out_id; ++ goto out_groups; + error = sysfs_create_link(&dev->kobj, + &dev->bus->p->subsys.kobj, "subsystem"); + if (error) +@@ -518,8 +486,6 @@ out_subsys: + sysfs_remove_link(&bus->p->devices_kset->kobj, dev_name(dev)); + out_groups: + device_remove_groups(dev, bus->dev_groups); +-out_id: +- device_remove_attrs(bus, dev); + out_put: + bus_put(dev->bus); + return error; +@@ -579,7 +545,6 @@ void bus_remove_device(struct device *de + sysfs_remove_link(&dev->kobj, "subsystem"); + sysfs_remove_link(&dev->bus->p->devices_kset->kobj, + dev_name(dev)); +- device_remove_attrs(dev->bus, dev); + device_remove_groups(dev, dev->bus->dev_groups); + if (klist_node_attached(&dev->p->knode_bus)) + klist_del(&dev->p->knode_bus); +--- a/drivers/base/platform.c ++++ b/drivers/base/platform.c +@@ -671,11 +671,13 @@ static ssize_t modalias_show(struct devi + + return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; + } ++static DEVICE_ATTR_RO(modalias); + +-static struct device_attribute platform_dev_attrs[] = { +- __ATTR_RO(modalias), +- __ATTR_NULL, ++static struct attribute *platform_dev_attrs[] = { ++ &dev_attr_modalias.attr, ++ NULL, + }; ++ATTRIBUTE_GROUPS(platform_dev); + + static int platform_uevent(struct device *dev, struct kobj_uevent_env *env) + { +@@ -892,7 +894,7 @@ static const struct dev_pm_ops platform_ + + struct bus_type platform_bus_type = { + .name = "platform", +- .dev_attrs = platform_dev_attrs, ++ .dev_groups = platform_dev_groups, + .match = platform_match, + .uevent = platform_uevent, + .pm = &platform_dev_pm_ops, +--- a/drivers/hid/hid-core.c ++++ b/drivers/hid/hid-core.c +@@ -1917,11 +1917,13 @@ static ssize_t modalias_show(struct devi + + return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; + } ++static DEVICE_ATTR_RO(modalias); + +-static struct device_attribute hid_dev_attrs[] = { +- __ATTR_RO(modalias), +- __ATTR_NULL, ++static struct attribute *hid_dev_attrs[] = { ++ &dev_attr_modalias.attr, ++ NULL, + }; ++ATTRIBUTE_GROUPS(hid_dev); + + static int hid_uevent(struct device *dev, struct kobj_uevent_env *env) + { +@@ -1949,7 +1951,7 @@ static int hid_uevent(struct device *dev + + static struct bus_type hid_bus_type = { + .name = "hid", +- .dev_attrs = hid_dev_attrs, ++ .dev_groups = hid_dev_groups, + .match = hid_bus_match, + .probe = hid_device_probe, + .remove = hid_device_remove, +--- a/drivers/misc/mei/bus.c ++++ b/drivers/misc/mei/bus.c +@@ -108,11 +108,13 @@ static ssize_t modalias_show(struct devi + + return (len >= PAGE_SIZE) ? (PAGE_SIZE - 1) : len; + } ++static DEVICE_ATTR_RO(modalias); + +-static struct device_attribute mei_cl_dev_attrs[] = { +- __ATTR_RO(modalias), +- __ATTR_NULL, ++static struct attribute *mei_cl_dev_attrs[] = { ++ &dev_attr_modalias.attr, ++ NULL, + }; ++ATTRIBUTE_GROUPS(mei_cl_dev); + + static int mei_cl_uevent(struct device *dev, struct kobj_uevent_env *env) + { +@@ -124,7 +126,7 @@ static int mei_cl_uevent(struct device * + + static struct bus_type mei_cl_bus_type = { + .name = "mei", +- .dev_attrs = mei_cl_dev_attrs, ++ .dev_groups = mei_cl_dev_groups, + .match = mei_cl_device_match, + .probe = mei_cl_device_probe, + .remove = mei_cl_device_remove, +--- a/include/linux/device.h ++++ b/include/linux/device.h +@@ -63,7 +63,6 @@ extern void bus_remove_file(struct bus_t + * @name: The name of the bus. + * @dev_name: Used for subsystems to enumerate devices like ("foo%u", dev->id). + * @dev_root: Default device to use as the parent. +- * @dev_attrs: Default attributes of the devices on the bus. + * @bus_groups: Default attributes of the bus. + * @dev_groups: Default attributes of the devices on the bus. + * @drv_groups: Default attributes of the device drivers on the bus. +@@ -104,7 +103,6 @@ struct bus_type { + const char *name; + const char *dev_name; + struct device *dev_root; +- struct device_attribute *dev_attrs; /* use dev_groups instead */ + const struct attribute_group **bus_groups; + const struct attribute_group **dev_groups; + const struct attribute_group **drv_groups; +--- a/kernel/events/core.c ++++ b/kernel/events/core.c +@@ -6167,6 +6167,7 @@ type_show(struct device *dev, struct dev + + return snprintf(page, PAGE_SIZE-1, "%d\n", pmu->type); + } ++static DEVICE_ATTR_RO(type); + + static ssize_t + perf_event_mux_interval_ms_show(struct device *dev, +@@ -6211,17 +6212,19 @@ perf_event_mux_interval_ms_store(struct + + return count; + } ++static DEVICE_ATTR_RW(perf_event_mux_interval_ms); + +-static struct device_attribute pmu_dev_attrs[] = { +- __ATTR_RO(type), +- __ATTR_RW(perf_event_mux_interval_ms), +- __ATTR_NULL, ++static struct attribute *pmu_dev_attrs[] = { ++ &dev_attr_type.attr, ++ &dev_attr_perf_event_mux_interval_ms.attr, ++ NULL, + }; ++ATTRIBUTE_GROUPS(pmu_dev); + + static int pmu_bus_running; + static struct bus_type pmu_bus = { + .name = "event_source", +- .dev_attrs = pmu_dev_attrs, ++ .dev_groups = pmu_dev_groups, + }; + + static void pmu_dev_release(struct device *dev) +--- a/kernel/workqueue.c ++++ b/kernel/workqueue.c +@@ -3081,25 +3081,26 @@ static struct workqueue_struct *dev_to_w + return wq_dev->wq; + } + +-static ssize_t wq_per_cpu_show(struct device *dev, +- struct device_attribute *attr, char *buf) ++static ssize_t per_cpu_show(struct device *dev, struct device_attribute *attr, ++ char *buf) + { + struct workqueue_struct *wq = dev_to_wq(dev); + + return scnprintf(buf, PAGE_SIZE, "%d\n", (bool)!(wq->flags & WQ_UNBOUND)); + } ++static DEVICE_ATTR_RO(per_cpu); + +-static ssize_t wq_max_active_show(struct device *dev, +- struct device_attribute *attr, char *buf) ++static ssize_t max_active_show(struct device *dev, ++ struct device_attribute *attr, char *buf) + { + struct workqueue_struct *wq = dev_to_wq(dev); + + return scnprintf(buf, PAGE_SIZE, "%d\n", wq->saved_max_active); + } + +-static ssize_t wq_max_active_store(struct device *dev, +- struct device_attribute *attr, +- const char *buf, size_t count) ++static ssize_t max_active_store(struct device *dev, ++ struct device_attribute *attr, const char *buf, ++ size_t count) + { + struct workqueue_struct *wq = dev_to_wq(dev); + int val; +@@ -3110,12 +3111,14 @@ static ssize_t wq_max_active_store(struc + workqueue_set_max_active(wq, val); + return count; + } ++static DEVICE_ATTR_RW(max_active); + +-static struct device_attribute wq_sysfs_attrs[] = { +- __ATTR(per_cpu, 0444, wq_per_cpu_show, NULL), +- __ATTR(max_active, 0644, wq_max_active_show, wq_max_active_store), +- __ATTR_NULL, ++static struct attribute *wq_sysfs_attrs[] = { ++ &dev_attr_per_cpu.attr, ++ &dev_attr_max_active.attr, ++ NULL, + }; ++ATTRIBUTE_GROUPS(wq_sysfs); + + static ssize_t wq_pool_ids_show(struct device *dev, + struct device_attribute *attr, char *buf) +@@ -3265,7 +3268,7 @@ static struct device_attribute wq_sysfs_ + + static struct bus_type wq_subsys = { + .name = "workqueue", +- .dev_attrs = wq_sysfs_attrs, ++ .dev_groups = wq_sysfs_groups, + }; + + static int __init wq_sysfs_init(void) |
