diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 15:45:28 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2008-02-07 15:45:28 -0500 |
| commit | bfa271d026fef5d8db9a95342c38eab6f7b287a2 (patch) | |
| tree | f8312f1f96edd4025640039e0f25a685f8185573 | |
| parent | 123f794fa7d592644881a20801638d88521d0b06 (diff) | |
| parent | 969affd276dec81a35a5ad10d4e05e62e93b380b (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.c | 3 | ||||
| -rw-r--r-- | fs/partitions/check.c | 17 | ||||
| -rw-r--r-- | fs/sysfs/group.c | 7 |
3 files changed, 18 insertions, 9 deletions
diff --git a/drivers/base/firmware_class.c b/drivers/base/firmware_class.c index 0295855a3e..4a1b9bfc54 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 | ||
| 293 | static inline void fw_setup_device_id(struct device *f_dev, struct device *dev) | 293 | static 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 | ||
| 298 | static int fw_register_device(struct device **dev_p, const char *fw_name, | 299 | 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 739da701ae..9a64045ff8 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 | ||
| 322 | static ssize_t whole_disk_show(struct device *dev, | ||
| 323 | struct device_attribute *attr, char *buf) | ||
| 324 | { | ||
| 325 | return 0; | ||
| 326 | } | ||
| 327 | static DEVICE_ATTR(whole_disk, S_IRUSR | S_IRGRP | S_IROTH, | ||
| 328 | whole_disk_show, NULL); | ||
| 329 | |||
| 322 | void add_partition(struct gendisk *disk, int part, sector_t start, sector_t len, int flags) | 330 | void 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 0871c3dadc..4779049150 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 | ||
