aboutsummaryrefslogtreecommitdiffstats
path: root/fs
diff options
context:
space:
mode:
Diffstat (limited to 'fs')
-rw-r--r--fs/sysfs/file.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/sysfs/file.c b/fs/sysfs/file.c
index a859c32ff93a..ade9a7e6a757 100644
--- a/fs/sysfs/file.c
+++ b/fs/sysfs/file.c
@@ -129,7 +129,7 @@ sysfs_read_file(struct file *file, char __user *buf, size_t count, loff_t *ppos)
129 ssize_t retval = 0; 129 ssize_t retval = 0;
130 130
131 mutex_lock(&buffer->mutex); 131 mutex_lock(&buffer->mutex);
132 if (buffer->needs_read_fill) { 132 if (buffer->needs_read_fill || *ppos == 0) {
133 retval = fill_read_buffer(file->f_path.dentry,buffer); 133 retval = fill_read_buffer(file->f_path.dentry,buffer);
134 if (retval) 134 if (retval)
135 goto out; 135 goto out;
@@ -410,8 +410,7 @@ static int sysfs_release(struct inode *inode, struct file *filp)
410 * return POLLERR|POLLPRI, and select will return the fd whether 410 * return POLLERR|POLLPRI, and select will return the fd whether
411 * it is waiting for read, write, or exceptions. 411 * it is waiting for read, write, or exceptions.
412 * Once poll/select indicates that the value has changed, you 412 * Once poll/select indicates that the value has changed, you
413 * need to close and re-open the file, as simply seeking and reading 413 * need to close and re-open the file, or seek to 0 and read again.
414 * again will not get new data, or reset the state of 'poll'.
415 * Reminder: this only works for attributes which actively support 414 * Reminder: this only works for attributes which actively support
416 * it, and it is not possible to test an attribute from userspace 415 * it, and it is not possible to test an attribute from userspace
417 * to see if it supports poll (Neither 'poll' nor 'select' return 416 * to see if it supports poll (Neither 'poll' nor 'select' return