From: NeilBrown Date: Sun, 15 Mar 2015 23:44:52 +0000 (+1100) Subject: kernfs: handle poll correctly on 'direct_read' files. X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=7cff4b1836a9d3f18aadd6e88fd43055e2ff4132;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git kernfs: handle poll correctly on 'direct_read' files. Kernfs supports two styles of read: direct_read and seqfile_read. The latter supports 'poll' correctly thanks to the update of '->event' in kernfs_seq_show. The former does not as '->event' is never updated on a read. So add an appropriate update in kernfs_file_direct_read(). This was noticed because some 'md' sysfs attributes were recently changed to use direct reads. Reported-by: Prakash Punnoor Reported-by: Torsten Kaiser Fixes: 750f199ee8b578062341e6ddfe36c59ac8ff2dcb Signed-off-by: NeilBrown Acked-by: Tejun Heo Signed-off-by: Greg Kroah-Hartman --- diff --git a/fs/kernfs/file.c b/fs/kernfs/file.c index b684e8a132e6..2bacb9988566 100644 --- a/fs/kernfs/file.c +++ b/fs/kernfs/file.c @@ -207,6 +207,7 @@ static ssize_t kernfs_file_direct_read(struct kernfs_open_file *of, goto out_free; } + of->event = atomic_read(&of->kn->attr.open->event); ops = kernfs_ops(of->kn); if (ops->read) len = ops->read(of, buf, len, *ppos);