]> bbs.cooldavid.org Git - net-next-2.6.git/commitdiff
sysfs: make bin attr open get active reference of parent too
authorTejun Heo <htejun@gmail.com>
Thu, 20 Sep 2007 07:05:10 +0000 (16:05 +0900)
committerGreg Kroah-Hartman <gregkh@suse.de>
Fri, 12 Oct 2007 21:51:10 +0000 (14:51 -0700)
All bin attr operations require active references of itself and its
parent.  There's no reason to allow open when its parent has been
deactivated and allowing it is inconsistent with regular sysfs file.
Use sysfs_get_active_two() in bin attribute open function.

Signed-off-by: Tejun Heo <htejun@gmail.com>
Acked-by: Cornelia Huck <cornelia.huck@de.ibm.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
fs/sysfs/bin.c

index e93fe5e2fa41c4b73d7dd97dd3ff171315858acb..9c8f8824e660bdf1d7e9d5344cdd2035ae46fe66 100644 (file)
@@ -171,8 +171,8 @@ static int open(struct inode * inode, struct file * file)
        struct bin_buffer *bb = NULL;
        int error;
 
-       /* need attr_sd for attr */
-       if (!sysfs_get_active(attr_sd))
+       /* binary file operations requires both @sd and its parent */
+       if (!sysfs_get_active_two(attr_sd))
                return -ENODEV;
 
        error = -EACCES;
@@ -193,12 +193,12 @@ static int open(struct inode * inode, struct file * file)
        mutex_init(&bb->mutex);
        file->private_data = bb;
 
-       /* open succeeded, put active reference */
-       sysfs_put_active(attr_sd);
+       /* open succeeded, put active references */
+       sysfs_put_active_two(attr_sd);
        return 0;
 
  err_out:
-       sysfs_put_active(attr_sd);
+       sysfs_put_active_two(attr_sd);
        kfree(bb);
        return error;
 }