提交 a29591c4 编写于 作者: A Akinobu Mita 提交者: Heiko Carstens

[S390] s390: use simple_read_from_buffer()

Signed-off-by: NAkinobu Mita <akinobu.mita@gmail.com>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
上级 d9cef21a
...@@ -150,33 +150,24 @@ static ssize_t hypfs_aio_read(struct kiocb *iocb, const struct iovec *iov, ...@@ -150,33 +150,24 @@ static ssize_t hypfs_aio_read(struct kiocb *iocb, const struct iovec *iov,
unsigned long nr_segs, loff_t offset) unsigned long nr_segs, loff_t offset)
{ {
char *data; char *data;
size_t len; ssize_t ret;
struct file *filp = iocb->ki_filp; struct file *filp = iocb->ki_filp;
/* XXX: temporary */ /* XXX: temporary */
char __user *buf = iov[0].iov_base; char __user *buf = iov[0].iov_base;
size_t count = iov[0].iov_len; size_t count = iov[0].iov_len;
if (nr_segs != 1) { if (nr_segs != 1)
count = -EINVAL; return -EINVAL;
goto out;
}
data = filp->private_data; data = filp->private_data;
len = strlen(data); ret = simple_read_from_buffer(buf, count, &offset, data, strlen(data));
if (offset > len) { if (ret <= 0)
count = 0; return ret;
goto out;
} iocb->ki_pos += ret;
if (count > len - offset)
count = len - offset;
if (copy_to_user(buf, data + offset, count)) {
count = -EFAULT;
goto out;
}
iocb->ki_pos += count;
file_accessed(filp); file_accessed(filp);
out:
return count; return ret;
} }
static ssize_t hypfs_aio_write(struct kiocb *iocb, const struct iovec *iov, static ssize_t hypfs_aio_write(struct kiocb *iocb, const struct iovec *iov,
unsigned long nr_segs, loff_t offset) unsigned long nr_segs, loff_t offset)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册