diff options
Diffstat (limited to 'fs/sysfs/file.c')
| -rw-r--r-- | fs/sysfs/file.c | 44 | 
1 files changed, 7 insertions, 37 deletions
diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c index db0413a411d..b502c7197ec 100644 --- a/fs/sysfs/file.c +++ b/fs/sysfs/file.c @@ -13,8 +13,7 @@  #include "sysfs.h" -#define to_subsys(k) container_of(k,struct subsystem,kset.kobj) -#define to_sattr(a) container_of(a,struct subsys_attribute,attr) +#define to_sattr(a) container_of(a,struct subsys_attribute, attr)  /*   * Subsystem file operations. @@ -24,12 +23,12 @@  static ssize_t   subsys_attr_show(struct kobject * kobj, struct attribute * attr, char * page)  { -	struct subsystem * s = to_subsys(kobj); +	struct kset *kset = to_kset(kobj);  	struct subsys_attribute * sattr = to_sattr(attr);  	ssize_t ret = -EIO;  	if (sattr->show) -		ret = sattr->show(s,page); +		ret = sattr->show(kset, page);  	return ret;  } @@ -37,12 +36,12 @@ static ssize_t  subsys_attr_store(struct kobject * kobj, struct attribute * attr,   		  const char * page, size_t count)  { -	struct subsystem * s = to_subsys(kobj); +	struct kset *kset = to_kset(kobj);  	struct subsys_attribute * sattr = to_sattr(attr);  	ssize_t ret = -EIO;  	if (sattr->store) -		ret = sattr->store(s,page,count); +		ret = sattr->store(kset, page, count);  	return ret;  } @@ -112,36 +111,6 @@ static int fill_read_buffer(struct dentry * dentry, struct sysfs_buffer * buffer  	return ret;  } - -/** - *	flush_read_buffer - push buffer to userspace. - *	@buffer:	data buffer for file. - *	@buf:		user-passed buffer. - *	@count:		number of bytes requested. - *	@ppos:		file position. - * - *	Copy the buffer we filled in fill_read_buffer() to userspace. - *	This is done at the reader's leisure, copying and advancing  - *	the amount they specify each time. - *	This may be called continuously until the buffer is empty. - */ -static int flush_read_buffer(struct sysfs_buffer * buffer, char __user * buf, -			     size_t count, loff_t * ppos) -{ -	int error; - -	if (*ppos > buffer->count) -		return 0; - -	if (count > (buffer->count - *ppos)) -		count = buffer->count - *ppos; - -	error = copy_to_user(buf,buffer->page + *ppos,count); -	if (!error) -		*ppos += count; -	return error ? -EFAULT : count; -} -  /**   *	sysfs_read_file - read an attribute.    *	@file:	file pointer. @@ -178,7 +147,8 @@ sysfs_read_file(struct file *file, char __user *buf, size_t count, loff_t *ppos)  	}  	pr_debug("%s: count = %zd, ppos = %lld, buf = %s\n",  		 __FUNCTION__, count, *ppos, buffer->page); -	retval = flush_read_buffer(buffer,buf,count,ppos); +	retval = simple_read_from_buffer(buf, count, ppos, buffer->page, +					 buffer->count);  out:  	up(&buffer->sem);  	return retval;  | 
