diff --git a/fs/dirty_pages.c b/fs/dirty_pages.c index 21e2251b6619c6f90a13ec299fc97b447e0ca1d3..0eb818b599bacea4afb3c363ab38379688ceca4c 100644 --- a/fs/dirty_pages.c +++ b/fs/dirty_pages.c @@ -217,12 +217,12 @@ static ssize_t seq_read_dirty( } n = min(m->count - m->from, size); - err = simple_read_from_buffer(buf, n, - (loff_t *) &m->from, m->buf, m->count); - if (err < 0) { + n -= copy_to_user(buf, m->buf + m->from, n); + if (unlikely(!n)) { err = -EFAULT; goto done; } + m->from += n; copied += n; done: if (!copied)