Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3ff65d3c authored by Tejun Heo's avatar Tejun Heo Committed by Greg Kroah-Hartman
Browse files

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: default avatarTejun Heo <tj@kernel.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 91270162
Loading
Loading
Loading
Loading
+15 −21
Original line number Diff line number Diff line
@@ -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)