diff options
| author | Tejun Heo <tj@kernel.org> | 2013-10-01 17:42:04 -0400 | 
|---|---|---|
| committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2013-10-05 17:27:40 -0700 | 
| commit | 3ff65d3cb09ee642363bcaf12c6c38670263d93a (patch) | |
| tree | 27b7b3d5e36be401ae301bb889c4e66a2fc9bb76 | |
| parent | 91270162bf8a86bee756da7e931591d9953cb5a8 (diff) | |
sysfs: collapse fs/sysfs/bin.c::fill_read() into read()
read() is simple enough and fill_read() being in a separate function
doesn't add anything.  Let's collapse it into read().  This will make
merging bin file handling with regular file.
Signed-off-by: Tejun Heo <tj@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
| -rw-r--r-- | fs/sysfs/bin.c | 36 | 
1 files changed, 15 insertions, 21 deletions
| diff --git a/fs/sysfs/bin.c b/fs/sysfs/bin.c index d2142c0648eb..60a4e787dc4f 100644 --- a/fs/sysfs/bin.c +++ b/fs/sysfs/bin.c @@ -44,30 +44,12 @@ struct bin_buffer {  	struct hlist_node		list;  }; -static int -fill_read(struct file *file, char *buffer, loff_t off, size_t count) +static ssize_t +read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off)  {  	struct sysfs_dirent *attr_sd = file->f_path.dentry->d_fsdata;  	struct bin_attribute *attr = attr_sd->s_bin_attr.bin_attr;  	struct kobject *kobj = attr_sd->s_parent->s_dir.kobj; -	int rc; - -	/* need attr_sd for attr, its parent for kobj */ -	if (!sysfs_get_active(attr_sd)) -		return -ENODEV; - -	rc = -EIO; -	if (attr->read) -		rc = attr->read(file, kobj, attr, buffer, off, count); - -	sysfs_put_active(attr_sd); - -	return rc; -} - -static ssize_t -read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off) -{  	struct bin_buffer *bb = file->private_data;  	int size = file_inode(file)->i_size;  	loff_t offs = *off; @@ -88,8 +70,20 @@ read(struct file *file, char __user *userbuf, size_t bytes, loff_t *off)  	if (!buf)  		return -ENOMEM; +	/* need attr_sd for attr, its parent for kobj */  	mutex_lock(&bb->mutex); -	count = fill_read(file, buf, offs, count); +	if (!sysfs_get_active(attr_sd)) { +		count = -ENODEV; +		mutex_unlock(&bb->mutex); +		goto out_free; +	} + +	if (attr->read) +		count = attr->read(file, kobj, attr, buf, offs, count); +	else +		count = -EIO; + +	sysfs_put_active(attr_sd);  	mutex_unlock(&bb->mutex);  	if (count < 0) | 
