aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2008-02-07 02:33:39 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2008-02-07 14:31:46 -0500
commitf4a00a2c06bc7802f52969cbdd19f4c680a7cd20 (patch)
treea8ee7e8a210ed01f5c9be0e981f1188f7e06bd10
parent0afc2edfada50980bec999f94dcea26ebad3dda6 (diff)
Block: Fix whole_disk attribute bug
The "whole_disk" attribute was not properly converted in the block device conversion earlier, and if the file is read, bad things can happen. This patch fixes this, making the attribute an empty one, preserving the original functionality. Many thanks to David Miller for finding this, and pointing me in the proper place within the block code to look. Acked-by: David S. Miller <davem@davemloft.net> Cc: Kay Sievers <kay.sievers@vrfy.org> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
-rw-r--r--fs/partitions/check.c17
1 files changed, 10 insertions, 7 deletions
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)