You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
sysfs: kill unnecessary attribute->owner
sysfs is now completely out of driver/module lifetime game. After deletion, a sysfs node doesn't access anything outside sysfs proper, so there's no reason to hold onto the attribute owners. Note that often the wrong modules were accounted for as owners leading to accessing removed modules. This patch kills now unnecessary attribute->owner. Note that with this change, userland holding a sysfs node does not prevent the backing module from being unloaded. For more info regarding lifetime rule cleanup, please read the following message. http://article.gmane.org/gmane.linux.kernel/510293 (tweaked by Greg to not delete the field just yet, to make it easier to merge things properly.) Signed-off-by: Tejun Heo <htejun@gmail.com> Cc: Cornelia Huck <cornelia.huck@de.ibm.com> Cc: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
dbde0fcf9f
commit
7b595756ec
@@ -2415,7 +2415,6 @@ static struct bin_attribute mv64xxx_hs_reg_attr = { /* Hotswap register */
|
||||
.attr = {
|
||||
.name = "hs_reg",
|
||||
.mode = S_IRUGO | S_IWUSR,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.size = VAL_LEN_MAX,
|
||||
.read = mv64xxx_hs_reg_read,
|
||||
|
||||
@@ -312,7 +312,6 @@ static struct bin_attribute ipl_parameter_attr = {
|
||||
.attr = {
|
||||
.name = "binary_parameter",
|
||||
.mode = S_IRUGO,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.size = PAGE_SIZE,
|
||||
.read = &ipl_parameter_read,
|
||||
@@ -336,7 +335,6 @@ static struct bin_attribute ipl_scp_data_attr = {
|
||||
.attr = {
|
||||
.name = "scp_data",
|
||||
.mode = S_IRUGO,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.size = PAGE_SIZE,
|
||||
.read = &ipl_scp_data_read,
|
||||
|
||||
@@ -574,7 +574,6 @@ static int add_probe_files(struct bus_type *bus)
|
||||
|
||||
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_type *bus)
|
||||
|
||||
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);
|
||||
|
||||
@@ -605,7 +605,6 @@ int class_device_add(struct class_device *class_dev)
|
||||
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 *class_dev)
|
||||
}
|
||||
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) {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -146,8 +146,7 @@ static void pkt_kobj_release(struct kobject *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]/
|
||||
|
||||
@@ -2171,52 +2171,42 @@ static int create_files(struct bmc_device *bmc)
|
||||
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;
|
||||
|
||||
|
||||
@@ -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,\
|
||||
};
|
||||
|
||||
|
||||
@@ -120,7 +120,7 @@ store_speed (struct cpufreq_policy *policy, const char *buf, size_t count)
|
||||
|
||||
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,
|
||||
};
|
||||
|
||||
@@ -199,7 +199,6 @@ static ssize_t show_available_freqs (struct cpufreq_policy *policy, char *buf)
|
||||
struct freq_attr cpufreq_freq_attr_scaling_available_freqs = {
|
||||
.attr = { .name = "scaling_available_frequencies",
|
||||
.mode = 0444,
|
||||
.owner=THIS_MODULE
|
||||
},
|
||||
.show = show_available_freqs,
|
||||
};
|
||||
|
||||
@@ -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, \
|
||||
}
|
||||
|
||||
@@ -687,18 +687,18 @@ static ssize_t write_rbu_packet_size(struct kobject *kobj, char *buffer,
|
||||
}
|
||||
|
||||
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,
|
||||
};
|
||||
|
||||
@@ -74,7 +74,7 @@ static struct edd_device *edd_devices[EDD_MBR_SIG_MAX];
|
||||
|
||||
#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, \
|
||||
};
|
||||
|
||||
@@ -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, \
|
||||
};
|
||||
|
||||
@@ -143,7 +143,6 @@ static struct bin_attribute eeprom_attr = {
|
||||
.attr = {
|
||||
.name = "eeprom",
|
||||
.mode = S_IRUGO,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.size = EEPROM_SIZE,
|
||||
.read = eeprom_read,
|
||||
|
||||
@@ -152,7 +152,6 @@ static struct bin_attribute user_eeprom_attr = {
|
||||
.attr = {
|
||||
.name = "eeprom",
|
||||
.mode = S_IRUGO,
|
||||
.owner = THIS_MODULE,
|
||||
},
|
||||
.size = USER_EEPROM_SIZE,
|
||||
.read = max6875_read,
|
||||
|
||||
@@ -479,7 +479,6 @@ alloc_group_attrs(ssize_t (*show)(struct ib_port *,
|
||||
|
||||
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;
|
||||
|
||||
|
||||
@@ -119,7 +119,6 @@ static struct psmouse_attribute psmouse_attr_##_name = { \
|
||||
.attr = { \
|
||||
.name = __stringify(_name), \
|
||||
.mode = _mode, \
|
||||
.owner = THIS_MODULE, \
|
||||
}, \
|
||||
.show = psmouse_attr_show_helper, \
|
||||
.store = psmouse_attr_set_helper, \
|
||||
|
||||
@@ -212,7 +212,6 @@ int wf_register_control(struct wf_control *new_ct)
|
||||
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 *new_sr)
|
||||
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;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user