]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - fs/libfs.c
libfs: make simple_read_from_buffer conventional
[net-next-2.6.git] / fs / libfs.c
index dcec3d3ea64f944cd51d36f35b4150279c5659f2..662a28e4f6670e0cb8261c310e686c7353d7edb7 100644 (file)
@@ -527,14 +527,18 @@ ssize_t simple_read_from_buffer(void __user *to, size_t count, loff_t *ppos,
                                const void *from, size_t available)
 {
        loff_t pos = *ppos;
+       size_t ret;
+
        if (pos < 0)
                return -EINVAL;
-       if (pos >= available)
+       if (pos >= available || !count)
                return 0;
        if (count > available - pos)
                count = available - pos;
-       if (copy_to_user(to, from + pos, count))
+       ret = copy_to_user(to, from + pos, count);
+       if (ret == count)
                return -EFAULT;
+       count -= ret;
        *ppos = pos + count;
        return count;
 }