Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=f4a00a2c06bc7802f52969cbdd19f4c680a7cd20
Commit:     f4a00a2c06bc7802f52969cbdd19f4c680a7cd20
Parent:     0afc2edfada50980bec999f94dcea26ebad3dda6
Author:     Greg Kroah-Hartman <[EMAIL PROTECTED]>
AuthorDate: Wed Feb 6 23:33:39 2008 -0800
Committer:  Greg Kroah-Hartman <[EMAIL PROTECTED]>
CommitDate: Thu Feb 7 11:31:46 2008 -0800

    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 <[EMAIL PROTECTED]>
    Cc: Kay Sievers <[EMAIL PROTECTED]>
    Signed-off-by: Greg Kroah-Hartman <[EMAIL PROTECTED]>
---
 fs/partitions/check.c |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/fs/partitions/check.c b/fs/partitions/check.c
index 739da70..9a64045 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)
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to