|
@@ -129,7 +129,7 @@ sysfs_read_file(struct file *file, char __user *buf, size_t count, loff_t *ppos)
|
|
|
ssize_t retval = 0;
|
|
|
|
|
|
mutex_lock(&buffer->mutex);
|
|
|
- if (buffer->needs_read_fill) {
|
|
|
+ if (buffer->needs_read_fill || *ppos == 0) {
|
|
|
retval = fill_read_buffer(file->f_path.dentry,buffer);
|
|
|
if (retval)
|
|
|
goto out;
|
|
@@ -410,8 +410,7 @@ static int sysfs_release(struct inode *inode, struct file *filp)
|
|
|
* return POLLERR|POLLPRI, and select will return the fd whether
|
|
|
* it is waiting for read, write, or exceptions.
|
|
|
* Once poll/select indicates that the value has changed, you
|
|
|
- * need to close and re-open the file, as simply seeking and reading
|
|
|
- * again will not get new data, or reset the state of 'poll'.
|
|
|
+ * need to close and re-open the file, or seek to 0 and read again.
|
|
|
* Reminder: this only works for attributes which actively support
|
|
|
* it, and it is not possible to test an attribute from userspace
|
|
|
* to see if it supports poll (Neither 'poll' nor 'select' return
|