diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 0295855a3eefe58ddf48bc9061123e3177be67f8..4a1b9bfc5471fe91ade02cedfaab22f6cec0d636 100644 --- a/drivers/base/firmware_class.c +++ b/drivers/base/firmware_class.c @@ -292,7 +292,8 @@ firmware_class_timeout(u_long data) static inline void fw_setup_device_id(struct device *f_dev, struct device *dev) { - snprintf(f_dev->bus_id, BUS_ID_SIZE, "firmware-%s", dev->bus_id); + /* XXX warning we should watch out for name collisions */ + strlcpy(f_dev->bus_id, dev->bus_id, BUS_ID_SIZE); } static int fw_register_device(struct device **dev_p, const char *fw_name, diff --git a/fs/partitions/check.c b/fs/partitions/check.c index 739da701ae7b8fec52d10f48392a85509208e286..9a64045ff845976b5610609d2c37c86f5f9d1778 100644 --- a/fs/partitions/check.c +++ b/fs/partitions/check.c @@ -319,6 +319,14 @@ void delete_partition(struct gendisk *disk, int part) put_device(&p->dev); } +static ssize_t whole_disk_show(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return 0; +} +static DEVICE_ATTR(whole_disk, S_IRUSR | S_IRGRP | S_IROTH, + whole_disk_show, NULL); + void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, int flags) { struct hd_struct *p; @@ -352,13 +360,8 @@ void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, device_add(&p->dev); partition_sysfs_add_subdir(p); p->dev.uevent_suppress = 0; - if (flags & ADDPART_FLAG_WHOLEDISK) { - static struct attribute addpartattr = { - .name = "whole_disk", - .mode = S_IRUSR | S_IRGRP | S_IROTH, - }; - err = sysfs_create_file(&p->dev.kobj, &addpartattr); - } + if (flags & ADDPART_FLAG_WHOLEDISK) + err = device_create_file(&p->dev, &dev_attr_whole_disk); /* suppress uevent if the disk supresses it */ if (!disk->dev.uevent_suppress) diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c index 0871c3dadce1c4a16d469b9a03b511f3eadbb937..477904915032e9359893d6128f3515a1d86963c7 100644 --- a/fs/sysfs/group.c +++ b/fs/sysfs/group.c @@ -77,7 +77,12 @@ void sysfs_remove_group(struct kobject * kobj, if (grp->name) { sd = sysfs_get_dirent(dir_sd, grp->name); - BUG_ON(!sd); + if (!sd) { + printk(KERN_WARNING "sysfs group %p not found for " + "kobject '%s'\n", grp, kobject_name(kobj)); + WARN_ON(!sd); + return; + } } else sd = sysfs_get(dir_sd);