On Mon, Sep 21, 2020 at 04:34:29PM +0200, Christoph Hellwig wrote:
Use in compat_syscall to import either native or the compat iovecs, and
remove the now superflous compat_import_iovec, which removes the need for
special compat logic in most callers. Only io_uring needs special
treatment given that it can call import_iovec from kernel threads acting
on behalf of native or compat syscalls. Expose the low-level
__import_iovec helper and use it in io_uring to explicitly pick a iovec
layout.
fs/aio.c part is not obvious... Might be better to use __import_iovec()
there as well and leave the rest of aio.c changes to followup.
quoted hunk ↗ jump to hunk
--- a/lib/iov_iter.c
+++ b/lib/iov_iter.c
@@ -1683,7 +1683,7 @@ static int compat_copy_iovecs_from_user(struct iovec *iov,
return ret;
}
-static ssize_t __import_iovec(int type, const struct iovec __user *uvector,
+ssize_t __import_iovec(int type, const struct iovec __user *uvector,
unsigned nr_segs, unsigned fast_segs, struct iovec **iovp,
struct iov_iter *i, bool compat)
{
Don't make it static in the first place, perhaps?