Signed-off-by: Andrew Morton --- arch/ppc/syslib/mv64x60.c | 1 - arch/s390/kernel/ipl.c | 2 -- drivers/base/bus.c | 2 -- drivers/base/class.c | 2 -- drivers/base/core.c | 4 ---- drivers/base/firmware_class.c | 2 +- drivers/block/pktcdvd.c | 3 +-- drivers/char/ipmi/ipmi_msghandler.c | 10 ---------- drivers/cpufreq/cpufreq_stats.c | 3 +-- drivers/cpufreq/cpufreq_userspace.c | 2 +- drivers/cpufreq/freq_table.c | 1 - drivers/firmware/dcdbas.h | 3 +-- drivers/firmware/dell_rbu.c | 6 +++--- drivers/firmware/edd.c | 2 +- drivers/firmware/efivars.c | 6 +++--- drivers/i2c/chips/eeprom.c | 1 - drivers/i2c/chips/max6875.c | 1 - drivers/infiniband/core/sysfs.c | 1 - drivers/input/mouse/psmouse.h | 1 - drivers/macintosh/windfarm_core.c | 2 -- drivers/misc/asus-laptop.c | 3 +-- drivers/net/ibmveth.c | 2 +- drivers/parisc/pdc_stable.c | 4 ++-- drivers/pci/hotplug/acpiphp_ibm.c | 1 - drivers/pci/pci-sysfs.c | 4 ---- drivers/pci/probe.c | 2 -- drivers/pcmcia/socket_sysfs.c | 2 +- drivers/rapidio/rio-sysfs.c | 1 - drivers/rtc/rtc-ds1553.c | 1 - drivers/rtc/rtc-ds1742.c | 1 - drivers/s390/cio/chp.c | 2 -- drivers/s390/net/qeth_sys.c | 2 +- drivers/scsi/arcmsr/arcmsr_attr.c | 3 --- drivers/scsi/libsas/sas_expander.c | 1 - drivers/scsi/lpfc/lpfc_attr.c | 2 -- drivers/scsi/qla2xxx/qla_attr.c | 6 ------ drivers/spi/at25.c | 1 - drivers/video/aty/radeon_base.c | 2 -- drivers/video/backlight/backlight.c | 2 +- drivers/video/backlight/lcd.c | 2 +- drivers/w1/slaves/w1_ds2433.c | 1 - drivers/w1/slaves/w1_therm.c | 1 - drivers/w1/w1.c | 2 -- drivers/zorro/zorro-sysfs.c | 1 - fs/ecryptfs/main.c | 2 -- fs/ocfs2/cluster/masklog.c | 1 - fs/partitions/check.c | 1 - fs/sysfs/bin.c | 19 +++++-------------- fs/sysfs/file.c | 21 +++++---------------- include/linux/sysdev.h | 3 +-- include/linux/sysfs.h | 12 ++++++++---- kernel/module.c | 9 +++------ kernel/params.c | 1 - net/bridge/br_sysfs_br.c | 3 +-- net/bridge/br_sysfs_if.c | 3 +-- 55 files changed, 44 insertions(+), 135 deletions(-) diff -puN arch/ppc/syslib/mv64x60.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner arch/ppc/syslib/mv64x60.c --- a/arch/ppc/syslib/mv64x60.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/arch/ppc/syslib/mv64x60.c @@ -2415,7 +2415,6 @@ static struct bin_attribute mv64xxx_hs_r .attr = { .name = "hs_reg", .mode = S_IRUGO | S_IWUSR, - .owner = THIS_MODULE, }, .size = VAL_LEN_MAX, .read = mv64xxx_hs_reg_read, diff -puN arch/s390/kernel/ipl.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner arch/s390/kernel/ipl.c --- a/arch/s390/kernel/ipl.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/arch/s390/kernel/ipl.c @@ -314,7 +314,6 @@ static struct bin_attribute ipl_paramete .attr = { .name = "binary_parameter", .mode = S_IRUGO, - .owner = THIS_MODULE, }, .size = PAGE_SIZE, .read = &ipl_parameter_read, @@ -338,7 +337,6 @@ static struct bin_attribute ipl_scp_data .attr = { .name = "scp_data", .mode = S_IRUGO, - .owner = THIS_MODULE, }, .size = PAGE_SIZE, .read = &ipl_scp_data_read, diff -puN drivers/base/bus.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/base/bus.c --- a/drivers/base/bus.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/base/bus.c @@ -574,7 +574,6 @@ static int add_probe_files(struct bus_ty bus->drivers_probe_attr.attr.name = "drivers_probe"; bus->drivers_probe_attr.attr.mode = S_IWUSR; - bus->drivers_probe_attr.attr.owner = bus->owner; bus->drivers_probe_attr.store = store_drivers_probe; retval = bus_create_file(bus, &bus->drivers_probe_attr); if (retval) @@ -582,7 +581,6 @@ static int add_probe_files(struct bus_ty bus->drivers_autoprobe_attr.attr.name = "drivers_autoprobe"; bus->drivers_autoprobe_attr.attr.mode = S_IWUSR | S_IRUGO; - bus->drivers_autoprobe_attr.attr.owner = bus->owner; bus->drivers_autoprobe_attr.show = show_drivers_autoprobe; bus->drivers_autoprobe_attr.store = store_drivers_autoprobe; retval = bus_create_file(bus, &bus->drivers_autoprobe_attr); diff -puN drivers/base/class.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/base/class.c --- a/drivers/base/class.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/base/class.c @@ -605,7 +605,6 @@ int class_device_add(struct class_device goto out3; class_dev->uevent_attr.attr.name = "uevent"; class_dev->uevent_attr.attr.mode = S_IWUSR; - class_dev->uevent_attr.attr.owner = parent_class->owner; class_dev->uevent_attr.store = store_uevent; error = class_device_create_file(class_dev, &class_dev->uevent_attr); if (error) @@ -620,7 +619,6 @@ int class_device_add(struct class_device } attr->attr.name = "dev"; attr->attr.mode = S_IRUGO; - attr->attr.owner = parent_class->owner; attr->show = show_dev; error = class_device_create_file(class_dev, attr); if (error) { diff -puN drivers/base/core.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/base/core.c --- a/drivers/base/core.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/base/core.c @@ -683,8 +683,6 @@ int device_add(struct device *dev) dev->uevent_attr.attr.name = "uevent"; dev->uevent_attr.attr.mode = S_IRUGO | S_IWUSR; - if (dev->driver) - dev->uevent_attr.attr.owner = dev->driver->owner; dev->uevent_attr.store = store_uevent; dev->uevent_attr.show = show_uevent; error = device_create_file(dev, &dev->uevent_attr); @@ -700,8 +698,6 @@ int device_add(struct device *dev) } attr->attr.name = "dev"; attr->attr.mode = S_IRUGO; - if (dev->driver) - attr->attr.owner = dev->driver->owner; attr->show = show_dev; error = device_create_file(dev, attr); if (error) { diff -puN drivers/base/firmware_class.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/base/firmware_class.c --- a/drivers/base/firmware_class.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/base/firmware_class.c @@ -271,7 +271,7 @@ out: } static struct bin_attribute firmware_attr_data_tmpl = { - .attr = {.name = "data", .mode = 0644, .owner = THIS_MODULE}, + .attr = {.name = "data", .mode = 0644}, .size = 0, .read = firmware_data_read, .write = firmware_data_write, diff -puN drivers/block/pktcdvd.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/block/pktcdvd.c --- a/drivers/block/pktcdvd.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/block/pktcdvd.c @@ -146,8 +146,7 @@ static void pkt_kobj_release(struct kobj **********************************************************/ #define DEF_ATTR(_obj,_name,_mode) \ - static struct attribute _obj = { \ - .name = _name, .owner = THIS_MODULE, .mode = _mode } + static struct attribute _obj = { .name = _name, .mode = _mode } /********************************************************** /sys/class/pktcdvd/pktcdvd[0-7]/ diff -puN drivers/char/ipmi/ipmi_msghandler.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/char/ipmi/ipmi_msghandler.c --- a/drivers/char/ipmi/ipmi_msghandler.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/char/ipmi/ipmi_msghandler.c @@ -2171,52 +2171,42 @@ static int create_files(struct bmc_devic int err; bmc->device_id_attr.attr.name = "device_id"; - bmc->device_id_attr.attr.owner = THIS_MODULE; bmc->device_id_attr.attr.mode = S_IRUGO; bmc->device_id_attr.show = device_id_show; bmc->provides_dev_sdrs_attr.attr.name = "provides_device_sdrs"; - bmc->provides_dev_sdrs_attr.attr.owner = THIS_MODULE; bmc->provides_dev_sdrs_attr.attr.mode = S_IRUGO; bmc->provides_dev_sdrs_attr.show = provides_dev_sdrs_show; bmc->revision_attr.attr.name = "revision"; - bmc->revision_attr.attr.owner = THIS_MODULE; bmc->revision_attr.attr.mode = S_IRUGO; bmc->revision_attr.show = revision_show; bmc->firmware_rev_attr.attr.name = "firmware_revision"; - bmc->firmware_rev_attr.attr.owner = THIS_MODULE; bmc->firmware_rev_attr.attr.mode = S_IRUGO; bmc->firmware_rev_attr.show = firmware_rev_show; bmc->version_attr.attr.name = "ipmi_version"; - bmc->version_attr.attr.owner = THIS_MODULE; bmc->version_attr.attr.mode = S_IRUGO; bmc->version_attr.show = ipmi_version_show; bmc->add_dev_support_attr.attr.name = "additional_device_support"; - bmc->add_dev_support_attr.attr.owner = THIS_MODULE; bmc->add_dev_support_attr.attr.mode = S_IRUGO; bmc->add_dev_support_attr.show = add_dev_support_show; bmc->manufacturer_id_attr.attr.name = "manufacturer_id"; - bmc->manufacturer_id_attr.attr.owner = THIS_MODULE; bmc->manufacturer_id_attr.attr.mode = S_IRUGO; bmc->manufacturer_id_attr.show = manufacturer_id_show; bmc->product_id_attr.attr.name = "product_id"; - bmc->product_id_attr.attr.owner = THIS_MODULE; bmc->product_id_attr.attr.mode = S_IRUGO; bmc->product_id_attr.show = product_id_show; bmc->guid_attr.attr.name = "guid"; - bmc->guid_attr.attr.owner = THIS_MODULE; bmc->guid_attr.attr.mode = S_IRUGO; bmc->guid_attr.show = guid_show; bmc->aux_firmware_rev_attr.attr.name = "aux_firmware_revision"; - bmc->aux_firmware_rev_attr.attr.owner = THIS_MODULE; bmc->aux_firmware_rev_attr.attr.mode = S_IRUGO; bmc->aux_firmware_rev_attr.show = aux_firmware_rev_show; diff -puN drivers/cpufreq/cpufreq_stats.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/cpufreq/cpufreq_stats.c --- a/drivers/cpufreq/cpufreq_stats.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/cpufreq/cpufreq_stats.c @@ -25,8 +25,7 @@ static spinlock_t cpufreq_stats_lock; #define CPUFREQ_STATDEVICE_ATTR(_name,_mode,_show) \ static struct freq_attr _attr_##_name = {\ - .attr = {.name = __stringify(_name), .owner = THIS_MODULE, \ - .mode = _mode, }, \ + .attr = {.name = __stringify(_name), .mode = _mode, }, \ .show = _show,\ }; diff -puN drivers/cpufreq/cpufreq_userspace.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/cpufreq/cpufreq_userspace.c --- a/drivers/cpufreq/cpufreq_userspace.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/cpufreq/cpufreq_userspace.c @@ -125,7 +125,7 @@ store_speed (struct cpufreq_policy *poli static struct freq_attr freq_attr_scaling_setspeed = { - .attr = { .name = "scaling_setspeed", .mode = 0644, .owner = THIS_MODULE }, + .attr = { .name = "scaling_setspeed", .mode = 0644 }, .show = show_speed, .store = store_speed, }; diff -puN drivers/cpufreq/freq_table.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/cpufreq/freq_table.c --- a/drivers/cpufreq/freq_table.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/cpufreq/freq_table.c @@ -199,7 +199,6 @@ static ssize_t show_available_freqs (str struct freq_attr cpufreq_freq_attr_scaling_available_freqs = { .attr = { .name = "scaling_available_frequencies", .mode = 0444, - .owner=THIS_MODULE }, .show = show_available_freqs, }; diff -puN drivers/firmware/dcdbas.h~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/firmware/dcdbas.h --- a/drivers/firmware/dcdbas.h~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/firmware/dcdbas.h @@ -67,8 +67,7 @@ #define DCDBAS_BIN_ATTR_RW(_name) \ struct bin_attribute bin_attr_##_name = { \ .attr = { .name = __stringify(_name), \ - .mode = 0600, \ - .owner = THIS_MODULE }, \ + .mode = 0600 }, \ .read = _name##_read, \ .write = _name##_write, \ } diff -puN drivers/firmware/dell_rbu.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/firmware/dell_rbu.c --- a/drivers/firmware/dell_rbu.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/firmware/dell_rbu.c @@ -692,18 +692,18 @@ static ssize_t write_rbu_packet_size(str } static struct bin_attribute rbu_data_attr = { - .attr = {.name = "data",.owner = THIS_MODULE,.mode = 0444}, + .attr = {.name = "data", .mode = 0444}, .read = read_rbu_data, }; static struct bin_attribute rbu_image_type_attr = { - .attr = {.name = "image_type",.owner = THIS_MODULE,.mode = 0644}, + .attr = {.name = "image_type", .mode = 0644}, .read = read_rbu_image_type, .write = write_rbu_image_type, }; static struct bin_attribute rbu_packet_size_attr = { - .attr = {.name = "packet_size",.owner = THIS_MODULE,.mode = 0644}, + .attr = {.name = "packet_size", .mode = 0644}, .read = read_rbu_packet_size, .write = write_rbu_packet_size, }; diff -puN drivers/firmware/edd.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/firmware/edd.c --- a/drivers/firmware/edd.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/firmware/edd.c @@ -74,7 +74,7 @@ static struct edd_device *edd_devices[ED #define EDD_DEVICE_ATTR(_name,_mode,_show,_test) \ struct edd_attribute edd_attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE }, \ + .attr = {.name = __stringify(_name), .mode = _mode }, \ .show = _show, \ .test = _test, \ }; diff -puN drivers/firmware/efivars.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/firmware/efivars.c --- a/drivers/firmware/efivars.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/firmware/efivars.c @@ -131,21 +131,21 @@ struct efivar_attribute { #define EFI_ATTR(_name, _mode, _show, _store) \ struct subsys_attribute efi_attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE}, \ + .attr = {.name = __stringify(_name), .mode = _mode}, \ .show = _show, \ .store = _store, \ }; #define EFIVAR_ATTR(_name, _mode, _show, _store) \ struct efivar_attribute efivar_attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE}, \ + .attr = {.name = __stringify(_name), .mode = _mode}, \ .show = _show, \ .store = _store, \ }; #define VAR_SUBSYS_ATTR(_name, _mode, _show, _store) \ struct subsys_attribute var_subsys_attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE}, \ + .attr = {.name = __stringify(_name), .mode = _mode}, \ .show = _show, \ .store = _store, \ }; diff -puN drivers/i2c/chips/eeprom.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/i2c/chips/eeprom.c --- a/drivers/i2c/chips/eeprom.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/i2c/chips/eeprom.c @@ -144,7 +144,6 @@ static struct bin_attribute eeprom_attr .attr = { .name = "eeprom", .mode = S_IRUGO, - .owner = THIS_MODULE, }, .size = EEPROM_SIZE, .read = eeprom_read, diff -puN drivers/i2c/chips/max6875.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/i2c/chips/max6875.c --- a/drivers/i2c/chips/max6875.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/i2c/chips/max6875.c @@ -153,7 +153,6 @@ static struct bin_attribute user_eeprom_ .attr = { .name = "eeprom", .mode = S_IRUGO, - .owner = THIS_MODULE, }, .size = USER_EEPROM_SIZE, .read = max6875_read, diff -puN drivers/infiniband/core/sysfs.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/infiniband/core/sysfs.c --- a/drivers/infiniband/core/sysfs.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/infiniband/core/sysfs.c @@ -479,7 +479,6 @@ alloc_group_attrs(ssize_t (*show)(struct element->attr.attr.name = element->name; element->attr.attr.mode = S_IRUGO; - element->attr.attr.owner = THIS_MODULE; element->attr.show = show; element->index = i; diff -puN drivers/input/mouse/psmouse.h~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/input/mouse/psmouse.h --- a/drivers/input/mouse/psmouse.h~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/input/mouse/psmouse.h @@ -118,7 +118,6 @@ static struct psmouse_attribute psmouse_ .attr = { \ .name = __stringify(_name), \ .mode = _mode, \ - .owner = THIS_MODULE, \ }, \ .show = psmouse_attr_show_helper, \ .store = psmouse_attr_set_helper, \ diff -puN drivers/macintosh/windfarm_core.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/macintosh/windfarm_core.c --- a/drivers/macintosh/windfarm_core.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/macintosh/windfarm_core.c @@ -212,7 +212,6 @@ int wf_register_control(struct wf_contro list_add(&new_ct->link, &wf_controls); new_ct->attr.attr.name = new_ct->name; - new_ct->attr.attr.owner = THIS_MODULE; new_ct->attr.attr.mode = 0644; new_ct->attr.show = wf_show_control; new_ct->attr.store = wf_store_control; @@ -325,7 +324,6 @@ int wf_register_sensor(struct wf_sensor list_add(&new_sr->link, &wf_sensors); new_sr->attr.attr.name = new_sr->name; - new_sr->attr.attr.owner = THIS_MODULE; new_sr->attr.attr.mode = 0444; new_sr->attr.show = wf_show_sensor; new_sr->attr.store = NULL; diff -puN drivers/misc/asus-laptop.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/misc/asus-laptop.c --- a/drivers/misc/asus-laptop.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/misc/asus-laptop.c @@ -737,8 +737,7 @@ static void asus_hotk_notify(acpi_handle struct device_attribute dev_attr_##_name = { \ .attr = { \ .name = __stringify(_name), \ - .mode = 0, \ - .owner = THIS_MODULE }, \ + .mode = 0 }, \ .show = NULL, \ .store = NULL, \ } diff -puN drivers/net/ibmveth.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/net/ibmveth.c --- a/drivers/net/ibmveth.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/net/ibmveth.c @@ -1337,7 +1337,7 @@ const char * buf, size_t count) #define ATTR(_name, _mode) \ struct attribute veth_##_name##_attr = { \ - .name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE \ + .name = __stringify(_name), .mode = _mode, \ }; static ATTR(active, 0644); diff -puN drivers/parisc/pdc_stable.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/parisc/pdc_stable.c --- a/drivers/parisc/pdc_stable.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/parisc/pdc_stable.c @@ -121,14 +121,14 @@ struct pdcspath_entry pdcspath_entry_##_ #define PDCS_ATTR(_name, _mode, _show, _store) \ struct subsys_attribute pdcs_attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE}, \ + .attr = {.name = __stringify(_name), .mode = _mode}, \ .show = _show, \ .store = _store, \ }; #define PATHS_ATTR(_name, _mode, _show, _store) \ struct pdcspath_attribute paths_attr_##_name = { \ - .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE}, \ + .attr = {.name = __stringify(_name), .mode = _mode}, \ .show = _show, \ .store = _store, \ }; diff -puN drivers/pci/hotplug/acpiphp_ibm.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/pci/hotplug/acpiphp_ibm.c --- a/drivers/pci/hotplug/acpiphp_ibm.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/pci/hotplug/acpiphp_ibm.c @@ -118,7 +118,6 @@ static struct notification ibm_note; static struct bin_attribute ibm_apci_table_attr = { .attr = { .name = "apci_table", - .owner = THIS_MODULE, .mode = S_IRUGO, }, .read = ibm_read_apci_table, diff -puN drivers/pci/pci-sysfs.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/pci/pci-sysfs.c --- a/drivers/pci/pci-sysfs.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/pci/pci-sysfs.c @@ -503,7 +503,6 @@ static int pci_create_resource_files(str sprintf(res_attr_name, "resource%d", i); res_attr->attr.name = res_attr_name; res_attr->attr.mode = S_IRUSR | S_IWUSR; - res_attr->attr.owner = THIS_MODULE; res_attr->size = pci_resource_len(pdev, i); res_attr->mmap = pci_mmap_resource; res_attr->private = &pdev->resource[i]; @@ -588,7 +587,6 @@ static struct bin_attribute pci_config_a .attr = { .name = "config", .mode = S_IRUGO | S_IWUSR, - .owner = THIS_MODULE, }, .size = 256, .read = pci_read_config, @@ -599,7 +597,6 @@ static struct bin_attribute pcie_config_ .attr = { .name = "config", .mode = S_IRUGO | S_IWUSR, - .owner = THIS_MODULE, }, .size = 4096, .read = pci_read_config, @@ -634,7 +631,6 @@ int __must_check pci_create_sysfs_dev_fi rom_attr->size = pci_resource_len(pdev, PCI_ROM_RESOURCE); rom_attr->attr.name = "rom"; rom_attr->attr.mode = S_IRUSR; - rom_attr->attr.owner = THIS_MODULE; rom_attr->read = pci_read_rom; rom_attr->write = pci_write_rom; retval = sysfs_create_bin_file(&pdev->dev.kobj, rom_attr); diff -puN drivers/pci/probe.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/pci/probe.c --- a/drivers/pci/probe.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/pci/probe.c @@ -39,7 +39,6 @@ static void pci_create_legacy_files(stru b->legacy_io->attr.name = "legacy_io"; b->legacy_io->size = 0xffff; b->legacy_io->attr.mode = S_IRUSR | S_IWUSR; - b->legacy_io->attr.owner = THIS_MODULE; b->legacy_io->read = pci_read_legacy_io; b->legacy_io->write = pci_write_legacy_io; class_device_create_bin_file(&b->class_dev, b->legacy_io); @@ -49,7 +48,6 @@ static void pci_create_legacy_files(stru b->legacy_mem->attr.name = "legacy_mem"; b->legacy_mem->size = 1024*1024; b->legacy_mem->attr.mode = S_IRUSR | S_IWUSR; - b->legacy_mem->attr.owner = THIS_MODULE; b->legacy_mem->mmap = pci_mmap_legacy_mem; class_device_create_bin_file(&b->class_dev, b->legacy_mem); } diff -puN drivers/pcmcia/socket_sysfs.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/pcmcia/socket_sysfs.c --- a/drivers/pcmcia/socket_sysfs.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/pcmcia/socket_sysfs.c @@ -370,7 +370,7 @@ static struct device_attribute *pccard_s }; static struct bin_attribute pccard_cis_attr = { - .attr = { .name = "cis", .mode = S_IRUGO | S_IWUSR, .owner = THIS_MODULE}, + .attr = { .name = "cis", .mode = S_IRUGO | S_IWUSR }, .size = 0x200, .read = pccard_show_cis, .write = pccard_store_cis, diff -puN drivers/rapidio/rio-sysfs.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/rapidio/rio-sysfs.c --- a/drivers/rapidio/rio-sysfs.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/rapidio/rio-sysfs.c @@ -199,7 +199,6 @@ static struct bin_attribute rio_config_a .attr = { .name = "config", .mode = S_IRUGO | S_IWUSR, - .owner = THIS_MODULE, }, .size = 0x200000, .read = rio_read_config, diff -puN drivers/rtc/rtc-ds1553.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/rtc/rtc-ds1553.c --- a/drivers/rtc/rtc-ds1553.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/rtc/rtc-ds1553.c @@ -292,7 +292,6 @@ static struct bin_attribute ds1553_nvram .attr = { .name = "nvram", .mode = S_IRUGO | S_IWUGO, - .owner = THIS_MODULE, }, .size = RTC_OFFSET, .read = ds1553_nvram_read, diff -puN drivers/rtc/rtc-ds1742.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/rtc/rtc-ds1742.c --- a/drivers/rtc/rtc-ds1742.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/rtc/rtc-ds1742.c @@ -161,7 +161,6 @@ static struct bin_attribute ds1742_nvram .attr = { .name = "nvram", .mode = S_IRUGO | S_IWUGO, - .owner = THIS_MODULE, }, .read = ds1742_nvram_read, .write = ds1742_nvram_write, diff -puN drivers/s390/cio/chp.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/s390/cio/chp.c --- a/drivers/s390/cio/chp.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/s390/cio/chp.c @@ -166,7 +166,6 @@ static struct bin_attribute chp_measurem .attr = { .name = "measurement_chars", .mode = S_IRUSR, - .owner = THIS_MODULE, }, .size = sizeof(struct cmg_chars), .read = chp_measurement_chars_read, @@ -219,7 +218,6 @@ static struct bin_attribute chp_measurem .attr = { .name = "measurement", .mode = S_IRUSR, - .owner = THIS_MODULE, }, .size = sizeof(struct cmg_entry), .read = chp_measurement_read, diff -puN drivers/s390/net/qeth_sys.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/s390/net/qeth_sys.c --- a/drivers/s390/net/qeth_sys.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/s390/net/qeth_sys.c @@ -991,7 +991,7 @@ static struct attribute_group qeth_osn_d #define QETH_DEVICE_ATTR(_id,_name,_mode,_show,_store) \ struct device_attribute dev_attr_##_id = { \ - .attr = {.name=__stringify(_name), .mode=_mode, .owner=THIS_MODULE },\ + .attr = {.name=__stringify(_name), .mode=_mode, },\ .show = _show, \ .store = _store, \ }; diff -puN drivers/scsi/arcmsr/arcmsr_attr.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/scsi/arcmsr/arcmsr_attr.c --- a/drivers/scsi/arcmsr/arcmsr_attr.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/scsi/arcmsr/arcmsr_attr.c @@ -191,7 +191,6 @@ static struct bin_attribute arcmsr_sysfs .attr = { .name = "mu_read", .mode = S_IRUSR , - .owner = THIS_MODULE, }, .size = 1032, .read = arcmsr_sysfs_iop_message_read, @@ -201,7 +200,6 @@ static struct bin_attribute arcmsr_sysfs .attr = { .name = "mu_write", .mode = S_IWUSR, - .owner = THIS_MODULE, }, .size = 1032, .write = arcmsr_sysfs_iop_message_write, @@ -211,7 +209,6 @@ static struct bin_attribute arcmsr_sysfs .attr = { .name = "mu_clear", .mode = S_IWUSR, - .owner = THIS_MODULE, }, .size = 1, .write = arcmsr_sysfs_iop_message_clear, diff -puN drivers/scsi/libsas/sas_expander.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/scsi/libsas/sas_expander.c --- a/drivers/scsi/libsas/sas_expander.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/scsi/libsas/sas_expander.c @@ -1370,7 +1370,6 @@ static void sas_ex_smp_hook(struct domai memset(bin_attr, 0, sizeof(*bin_attr)); bin_attr->attr.name = SMP_BIN_ATTR_NAME; - bin_attr->attr.owner = THIS_MODULE; bin_attr->attr.mode = 0600; bin_attr->size = 0; diff -puN drivers/scsi/lpfc/lpfc_attr.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/scsi/lpfc/lpfc_attr.c --- a/drivers/scsi/lpfc/lpfc_attr.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/scsi/lpfc/lpfc_attr.c @@ -1202,7 +1202,6 @@ static struct bin_attribute sysfs_ctlreg .attr = { .name = "ctlreg", .mode = S_IRUSR | S_IWUSR, - .owner = THIS_MODULE, }, .size = 256, .read = sysfs_ctlreg_read, @@ -1426,7 +1425,6 @@ static struct bin_attribute sysfs_mbox_a .attr = { .name = "mbox", .mode = S_IRUSR | S_IWUSR, - .owner = THIS_MODULE, }, .size = MAILBOX_CMD_SIZE, .read = sysfs_mbox_read, diff -puN drivers/scsi/qla2xxx/qla_attr.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/scsi/qla2xxx/qla_attr.c --- a/drivers/scsi/qla2xxx/qla_attr.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/scsi/qla2xxx/qla_attr.c @@ -75,7 +75,6 @@ static struct bin_attribute sysfs_fw_dum .attr = { .name = "fw_dump", .mode = S_IRUSR | S_IWUSR, - .owner = THIS_MODULE, }, .size = 0, .read = qla2x00_sysfs_read_fw_dump, @@ -153,7 +152,6 @@ static struct bin_attribute sysfs_nvram_ .attr = { .name = "nvram", .mode = S_IRUSR | S_IWUSR, - .owner = THIS_MODULE, }, .size = 512, .read = qla2x00_sysfs_read_nvram, @@ -204,7 +202,6 @@ static struct bin_attribute sysfs_optrom .attr = { .name = "optrom", .mode = S_IRUSR | S_IWUSR, - .owner = THIS_MODULE, }, .size = OPTROM_SIZE_24XX, .read = qla2x00_sysfs_read_optrom, @@ -286,7 +283,6 @@ static struct bin_attribute sysfs_optrom .attr = { .name = "optrom_ctl", .mode = S_IWUSR, - .owner = THIS_MODULE, }, .size = 0, .write = qla2x00_sysfs_write_optrom_ctl, @@ -336,7 +332,6 @@ static struct bin_attribute sysfs_vpd_at .attr = { .name = "vpd", .mode = S_IRUSR | S_IWUSR, - .owner = THIS_MODULE, }, .size = 0, .read = qla2x00_sysfs_read_vpd, @@ -385,7 +380,6 @@ static struct bin_attribute sysfs_sfp_at .attr = { .name = "sfp", .mode = S_IRUSR | S_IWUSR, - .owner = THIS_MODULE, }, .size = SFP_DEV_SIZE * 2, .read = qla2x00_sysfs_read_sfp, diff -puN drivers/spi/at25.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/spi/at25.c --- a/drivers/spi/at25.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/spi/at25.c @@ -316,7 +316,6 @@ static int at25_probe(struct spi_device */ at25->bin.attr.name = "eeprom"; at25->bin.attr.mode = S_IRUSR; - at25->bin.attr.owner = THIS_MODULE; at25->bin.read = at25_bin_read; at25->bin.size = at25->chip.byte_len; diff -puN drivers/video/aty/radeon_base.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/video/aty/radeon_base.c --- a/drivers/video/aty/radeon_base.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/video/aty/radeon_base.c @@ -2130,7 +2130,6 @@ static ssize_t radeon_show_edid2(struct static struct bin_attribute edid1_attr = { .attr = { .name = "edid1", - .owner = THIS_MODULE, .mode = 0444, }, .size = EDID_LENGTH, @@ -2140,7 +2139,6 @@ static struct bin_attribute edid1_attr = static struct bin_attribute edid2_attr = { .attr = { .name = "edid2", - .owner = THIS_MODULE, .mode = 0444, }, .size = EDID_LENGTH, diff -puN drivers/video/backlight/backlight.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/video/backlight/backlight.c --- a/drivers/video/backlight/backlight.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/video/backlight/backlight.c @@ -172,7 +172,7 @@ static struct class backlight_class = { #define DECLARE_ATTR(_name,_mode,_show,_store) \ { \ - .attr = { .name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE }, \ + .attr = { .name = __stringify(_name), .mode = _mode }, \ .show = _show, \ .store = _store, \ } diff -puN drivers/video/backlight/lcd.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/video/backlight/lcd.c --- a/drivers/video/backlight/lcd.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/video/backlight/lcd.c @@ -157,7 +157,7 @@ static struct class lcd_class = { #define DECLARE_ATTR(_name,_mode,_show,_store) \ { \ - .attr = { .name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE }, \ + .attr = { .name = __stringify(_name), .mode = _mode }, \ .show = _show, \ .store = _store, \ } diff -puN drivers/w1/slaves/w1_ds2433.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/w1/slaves/w1_ds2433.c --- a/drivers/w1/slaves/w1_ds2433.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/w1/slaves/w1_ds2433.c @@ -254,7 +254,6 @@ static struct bin_attribute w1_f23_bin_a .attr = { .name = "eeprom", .mode = S_IRUGO | S_IWUSR, - .owner = THIS_MODULE, }, .size = W1_EEPROM_SIZE, .read = w1_f23_read_bin, diff -puN drivers/w1/slaves/w1_therm.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/w1/slaves/w1_therm.c --- a/drivers/w1/slaves/w1_therm.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/w1/slaves/w1_therm.c @@ -49,7 +49,6 @@ static struct bin_attribute w1_therm_bin .attr = { .name = "w1_slave", .mode = S_IRUGO, - .owner = THIS_MODULE, }, .size = W1_SLAVE_DATA_SIZE, .read = w1_therm_read_bin, diff -puN drivers/w1/w1.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/w1/w1.c --- a/drivers/w1/w1.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/w1/w1.c @@ -130,7 +130,6 @@ static struct bin_attribute w1_slave_att .attr = { .name = "id", .mode = S_IRUGO, - .owner = THIS_MODULE, }, .size = 8, .read = w1_slave_read_id, @@ -173,7 +172,6 @@ static struct bin_attribute w1_default_a .attr = { .name = "rw", .mode = S_IRUGO | S_IWUSR, - .owner = THIS_MODULE, }, .size = PAGE_SIZE, .read = w1_default_read, diff -puN drivers/zorro/zorro-sysfs.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner drivers/zorro/zorro-sysfs.c --- a/drivers/zorro/zorro-sysfs.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/drivers/zorro/zorro-sysfs.c @@ -79,7 +79,6 @@ static struct bin_attribute zorro_config .attr = { .name = "config", .mode = S_IRUGO | S_IWUSR, - .owner = THIS_MODULE }, .size = sizeof(struct ConfigDev), .read = zorro_read_config, diff -puN fs/ecryptfs/main.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner fs/ecryptfs/main.c --- a/fs/ecryptfs/main.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/fs/ecryptfs/main.c @@ -840,8 +840,6 @@ static int __init ecryptfs_init(void) goto out; } kobj_set_kset_s(&ecryptfs_subsys, fs_subsys); - sysfs_attr_version.attr.owner = THIS_MODULE; - sysfs_attr_version_str.attr.owner = THIS_MODULE; rc = do_sysfs_registration(); if (rc) { printk(KERN_ERR "sysfs registration failed\n"); diff -puN fs/ocfs2/cluster/masklog.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner fs/ocfs2/cluster/masklog.c --- a/fs/ocfs2/cluster/masklog.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/fs/ocfs2/cluster/masklog.c @@ -74,7 +74,6 @@ struct mlog_attribute { #define define_mask(_name) { \ .attr = { \ .name = #_name, \ - .owner = THIS_MODULE, \ .mode = S_IRUGO | S_IWUSR, \ }, \ .mask = ML_##_name, \ diff -puN fs/partitions/check.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner fs/partitions/check.c --- a/fs/partitions/check.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/fs/partitions/check.c @@ -397,7 +397,6 @@ void add_partition(struct gendisk *disk, static struct attribute addpartattr = { .name = "whole_disk", .mode = S_IRUSR | S_IRGRP | S_IROTH, - .owner = THIS_MODULE, }; sysfs_create_file(&p->kobj, &addpartattr); diff -puN fs/sysfs/bin.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner fs/sysfs/bin.c --- a/fs/sysfs/bin.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/fs/sysfs/bin.c @@ -175,25 +175,20 @@ static int open(struct inode * inode, st if (!sysfs_get_active(attr_sd)) return -ENODEV; - /* Grab the module reference for this attribute */ - error = -ENODEV; - if (!try_module_get(attr->attr.owner)) - goto err_sput; - error = -EACCES; if ((file->f_mode & FMODE_WRITE) && !(attr->write || attr->mmap)) - goto err_mput; + goto err_out; if ((file->f_mode & FMODE_READ) && !(attr->read || attr->mmap)) - goto err_mput; + goto err_out; error = -ENOMEM; bb = kzalloc(sizeof(*bb), GFP_KERNEL); if (!bb) - goto err_mput; + goto err_out; bb->buffer = kmalloc(PAGE_SIZE, GFP_KERNEL); if (!bb->buffer) - goto err_mput; + goto err_out; mutex_init(&bb->mutex); file->private_data = bb; @@ -203,9 +198,7 @@ static int open(struct inode * inode, st sysfs_get(attr_sd); return 0; - err_mput: - module_put(attr->attr.owner); - err_sput: + err_out: sysfs_put_active(attr_sd); kfree(bb); return error; @@ -214,13 +207,11 @@ static int open(struct inode * inode, st static int release(struct inode * inode, struct file * file) { struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata; - struct bin_attribute *attr = attr_sd->s_elem.bin_attr.bin_attr; struct bin_buffer *bb = file->private_data; if (bb->mmapped) sysfs_put_active_two(attr_sd); sysfs_put(attr_sd); - module_put(attr->attr.owner); kfree(bb->buffer); kfree(bb); return 0; diff -puN fs/sysfs/file.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner fs/sysfs/file.c --- a/fs/sysfs/file.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/fs/sysfs/file.c @@ -241,7 +241,6 @@ sysfs_write_file(struct file *file, cons static int sysfs_open_file(struct inode *inode, struct file *file) { struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata; - struct attribute *attr = attr_sd->s_elem.attr.attr; struct kobject *kobj = attr_sd->s_parent->s_elem.dir.kobj; struct sysfs_buffer * buffer; struct sysfs_ops * ops = NULL; @@ -251,11 +250,6 @@ static int sysfs_open_file(struct inode if (!sysfs_get_active_two(attr_sd)) return -ENODEV; - /* Grab the module reference for this attribute */ - error = -ENODEV; - if (!try_module_get(attr->owner)) - goto err_sput; - /* if the kobject has no ktype, then we assume that it is a subsystem * itself, and use ops for it. */ @@ -272,7 +266,7 @@ static int sysfs_open_file(struct inode * or the subsystem have no operations. */ if (!ops) - goto err_mput; + goto err_out; /* File needs write support. * The inode's perms must say it's ok, @@ -280,7 +274,7 @@ static int sysfs_open_file(struct inode */ if (file->f_mode & FMODE_WRITE) { if (!(inode->i_mode & S_IWUGO) || !ops->store) - goto err_mput; + goto err_out; } /* File needs read support. @@ -289,7 +283,7 @@ static int sysfs_open_file(struct inode */ if (file->f_mode & FMODE_READ) { if (!(inode->i_mode & S_IRUGO) || !ops->show) - goto err_mput; + goto err_out; } /* No error? Great, allocate a buffer for the file, and store it @@ -298,7 +292,7 @@ static int sysfs_open_file(struct inode error = -ENOMEM; buffer = kzalloc(sizeof(struct sysfs_buffer), GFP_KERNEL); if (!buffer) - goto err_mput; + goto err_out; init_MUTEX(&buffer->sem); buffer->needs_read_fill = 1; @@ -310,9 +304,7 @@ static int sysfs_open_file(struct inode sysfs_get(attr_sd); return 0; - err_mput: - module_put(attr->owner); - err_sput: + err_out: sysfs_put_active_two(attr_sd); return error; } @@ -320,12 +312,9 @@ static int sysfs_open_file(struct inode static int sysfs_release(struct inode * inode, struct file * filp) { struct sysfs_dirent *attr_sd = filp->f_path.dentry->d_fsdata; - struct attribute *attr = attr_sd->s_elem.attr.attr; struct sysfs_buffer *buffer = filp->private_data; sysfs_put(attr_sd); - /* After this point, attr should not be accessed. */ - module_put(attr->owner); if (buffer) { if (buffer->page) diff -puN include/linux/sysdev.h~gregkh-driver-sysfs-kill-unnecessary-attribute-owner include/linux/sysdev.h --- a/include/linux/sysdev.h~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/include/linux/sysdev.h @@ -101,8 +101,7 @@ struct sysdev_attribute { #define _SYSDEV_ATTR(_name,_mode,_show,_store) \ { \ - .attr = { .name = __stringify(_name), .mode = _mode, \ - .owner = THIS_MODULE }, \ + .attr = { .name = __stringify(_name), .mode = _mode }, \ .show = _show, \ .store = _store, \ } diff -puN include/linux/sysfs.h~gregkh-driver-sysfs-kill-unnecessary-attribute-owner include/linux/sysfs.h --- a/include/linux/sysfs.h~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/include/linux/sysfs.h @@ -20,9 +20,13 @@ struct module; struct nameidata; struct dentry; +/* FIXME + * The *owner field is no longer used, but leave around + * until the tree gets cleaned up fully. + */ struct attribute { const char * name; - struct module * owner; + struct module * owner; mode_t mode; }; @@ -39,14 +43,14 @@ struct attribute_group { */ #define __ATTR(_name,_mode,_show,_store) { \ - .attr = {.name = __stringify(_name), .mode = _mode, .owner = THIS_MODULE }, \ + .attr = {.name = __stringify(_name), .mode = _mode }, \ .show = _show, \ .store = _store, \ } #define __ATTR_RO(_name) { \ - .attr = { .name = __stringify(_name), .mode = 0444, .owner = THIS_MODULE }, \ - .show = _name##_show, \ + .attr = { .name = __stringify(_name), .mode = 0444 }, \ + .show = _name##_show, \ } #define __ATTR_NULL { .attr = { .name = NULL } } diff -puN kernel/module.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner kernel/module.c --- a/kernel/module.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/kernel/module.c @@ -488,8 +488,7 @@ static void free_modinfo_##field(struct mod->field = NULL; \ } \ static struct module_attribute modinfo_##field = { \ - .attr = { .name = __stringify(field), .mode = 0444, \ - .owner = THIS_MODULE }, \ + .attr = { .name = __stringify(field), .mode = 0444 }, \ .show = show_modinfo_##field, \ .setup = setup_modinfo_##field, \ .test = modinfo_##field##_exists, \ @@ -793,7 +792,7 @@ static ssize_t show_refcnt(struct module } static struct module_attribute refcnt = { - .attr = { .name = "refcnt", .mode = 0444, .owner = THIS_MODULE }, + .attr = { .name = "refcnt", .mode = 0444 }, .show = show_refcnt, }; @@ -851,7 +850,7 @@ static ssize_t show_initstate(struct mod } static struct module_attribute initstate = { - .attr = { .name = "initstate", .mode = 0444, .owner = THIS_MODULE }, + .attr = { .name = "initstate", .mode = 0444 }, .show = show_initstate, }; @@ -1032,7 +1031,6 @@ static void add_sect_attrs(struct module sattr->mattr.show = module_sect_show; sattr->mattr.store = NULL; sattr->mattr.attr.name = sattr->name; - sattr->mattr.attr.owner = mod; sattr->mattr.attr.mode = S_IRUGO; *(gattr++) = &(sattr++)->mattr.attr; } @@ -1090,7 +1088,6 @@ int module_add_modinfo_attrs(struct modu if (!attr->test || (attr->test && attr->test(mod))) { memcpy(temp_attr, attr, sizeof(*temp_attr)); - temp_attr->attr.owner = mod; error = sysfs_create_file(&mod->mkobj.kobj,&temp_attr->attr); ++temp_attr; } diff -puN kernel/params.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner kernel/params.c --- a/kernel/params.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/kernel/params.c @@ -491,7 +491,6 @@ param_sysfs_setup(struct module_kobject pattr->mattr.show = param_attr_show; pattr->mattr.store = param_attr_store; pattr->mattr.attr.name = (char *)&kp->name[name_skip]; - pattr->mattr.attr.owner = mk->mod; pattr->mattr.attr.mode = kp->perm; *(gattr++) = &(pattr++)->mattr.attr; } diff -puN net/bridge/br_sysfs_br.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner net/bridge/br_sysfs_br.c --- a/net/bridge/br_sysfs_br.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/net/bridge/br_sysfs_br.c @@ -384,8 +384,7 @@ static ssize_t brforward_read(struct kob static struct bin_attribute bridge_forward = { .attr = { .name = SYSFS_BRIDGE_FDB, - .mode = S_IRUGO, - .owner = THIS_MODULE, }, + .mode = S_IRUGO, }, .read = brforward_read, }; diff -puN net/bridge/br_sysfs_if.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner net/bridge/br_sysfs_if.c --- a/net/bridge/br_sysfs_if.c~gregkh-driver-sysfs-kill-unnecessary-attribute-owner +++ a/net/bridge/br_sysfs_if.c @@ -29,8 +29,7 @@ struct brport_attribute { #define BRPORT_ATTR(_name,_mode,_show,_store) \ struct brport_attribute brport_attr_##_name = { \ .attr = {.name = __stringify(_name), \ - .mode = _mode, \ - .owner = THIS_MODULE, }, \ + .mode = _mode }, \ .show = _show, \ .store = _store, \ }; _