aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-07 15:45:28 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2008-02-07 15:45:28 -0500
commitbfa271d026fef5d8db9a95342c38eab6f7b287a2 (patch)
treef8312f1f96edd4025640039e0f25a685f8185573
parent123f794fa7d592644881a20801638d88521d0b06 (diff)
parent969affd276dec81a35a5ad10d4e05e62e93b380b (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6
* git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-2.6: sysfs: remove BUG_ON() from sysfs_remove_group() Driver core: Revert "Fix Firmware class name collision" Block: Fix whole_disk attribute bug
-rw-r--r--drivers/base/firmware_class.c3
-rw-r--r--fs/partitions/check.c17
-rw-r--r--fs/sysfs/group.c7
3 files changed, 18 insertions, 9 deletions
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c
index 0295855a3eef..4a1b9bfc5471 100644
--- a/drivers/base/firmware_class.c
+++ b/drivers/base/firmware_class.c
@@ -292,7 +292,8 @@ firmware_class_timeout(u_long data)
292 292
293static inline void fw_setup_device_id(struct device *f_dev, struct device *dev) 293static inline void fw_setup_device_id(struct device *f_dev, struct device *dev)
294{ 294{
295 snprintf(f_dev->bus_id, BUS_ID_SIZE, "firmware-%s", dev->bus_id); 295 /* XXX warning we should watch out for name collisions */
296 strlcpy(f_dev->bus_id, dev->bus_id, BUS_ID_SIZE);
296} 297}
297 298
298static int fw_register_device(struct device **dev_p, const char *fw_name, 299static 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 739da701ae7b..9a64045ff845 100644
--- a/fs/partitions/check.c
+++ b/fs/partitions/check.c
@@ -319,6 +319,14 @@ void delete_partition(struct gendisk *disk, int part)
319 put_device(&p->dev); 319 put_device(&p->dev);
320} 320}
321 321
322static ssize_t whole_disk_show(struct device *dev,
323 struct device_attribute *attr, char *buf)
324{
325 return 0;
326}
327static DEVICE_ATTR(whole_disk, S_IRUSR | S_IRGRP | S_IROTH,
328 whole_disk_show, NULL);
329
322void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, int flags) 330void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, int flags)
323{ 331{
324 struct hd_struct *p; 332 struct hd_struct *p;
@@ -352,13 +360,8 @@ void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len,
352 device_add(&p->dev); 360 device_add(&p->dev);
353 partition_sysfs_add_subdir(p); 361 partition_sysfs_add_subdir(p);
354 p->dev.uevent_suppress = 0; 362 p->dev.uevent_suppress = 0;
355 if (flags & ADDPART_FLAG_WHOLEDISK) { 363 if (flags & ADDPART_FLAG_WHOLEDISK)
356 static struct attribute addpartattr = { 364 err = device_create_file(&p->dev, &dev_attr_whole_disk);
357 .name = "whole_disk",
358 .mode = S_IRUSR | S_IRGRP | S_IROTH,
359 };
360 err = sysfs_create_file(&p->dev.kobj, &addpartattr);
361 }
362 365
363 /* suppress uevent if the disk supresses it */ 366 /* suppress uevent if the disk supresses it */
364 if (!disk->dev.uevent_suppress) 367 if (!disk->dev.uevent_suppress)
diff --git a/fs/sysfs/group.c b/fs/sysfs/group.c
index 0871c3dadce1..477904915032 100644
--- a/fs/sysfs/group.c
+++ b/fs/sysfs/group.c
@@ -77,7 +77,12 @@ void sysfs_remove_group(struct kobject * kobj,
77 77
78 if (grp->name) { 78 if (grp->name) {
79 sd = sysfs_get_dirent(dir_sd, grp->name); 79 sd = sysfs_get_dirent(dir_sd, grp->name);
80 BUG_ON(!sd); 80 if (!sd) {
81 printk(KERN_WARNING "sysfs group %p not found for "
82 "kobject '%s'\n", grp, kobject_name(kobj));
83 WARN_ON(!sd);
84 return;
85 }
81 } else 86 } else
82 sd = sysfs_get(dir_sd); 87 sd = sysfs_get(dir_sd);
83 88