]> git.itanic.dy.fi Git - linux-stable/commitdiff
iov_iter: replace import_single_range() with import_ubuf()
authorJens Axboe <axboe@kernel.dk>
Mon, 4 Dec 2023 17:47:50 +0000 (10:47 -0700)
committerChristian Brauner <brauner@kernel.org>
Tue, 5 Dec 2023 10:57:37 +0000 (11:57 +0100)
With the removal of the 'iov' argument to import_single_range(), the two
functions are now fully identical. Convert the import_single_range()
callers to import_ubuf(), and remove the former fully.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
Link: https://lore.kernel.org/r/20231204174827.1258875-3-axboe@kernel.dk
Signed-off-by: Christian Brauner <brauner@kernel.org>
drivers/block/ublk_drv.c
drivers/char/random.c
fs/aio.c
include/linux/uio.h
kernel/trace/trace_events_user.c
lib/iov_iter.c
net/ipv4/tcp.c
net/socket.c
security/keys/keyctl.c

index 5656b0a1233d68b717df89b18df23c0bd42e7bdf..3eaf02ebeebe68e1ca39b05bb339ae47701d69e0 100644 (file)
@@ -895,9 +895,7 @@ static int ublk_map_io(const struct ublk_queue *ubq, const struct request *req,
                struct iov_iter iter;
                const int dir = ITER_DEST;
 
-               import_single_range(dir, u64_to_user_ptr(io->addr), rq_bytes,
-                                       &iter);
-
+               import_ubuf(dir, u64_to_user_ptr(io->addr), rq_bytes, &iter);
                return ublk_copy_user_pages(req, 0, &iter, dir);
        }
        return rq_bytes;
@@ -918,8 +916,7 @@ static int ublk_unmap_io(const struct ublk_queue *ubq,
 
                WARN_ON_ONCE(io->res > rq_bytes);
 
-               import_single_range(dir, u64_to_user_ptr(io->addr), io->res,
-                                       &iter);
+               import_ubuf(dir, u64_to_user_ptr(io->addr), io->res, &iter);
                return ublk_copy_user_pages(req, 0, &iter, dir);
        }
        return rq_bytes;
index e79ae238b30d7a0b5ffe5bb5264a43eb61df4627..456be28ba67cb476846c83c532e7bd04e521463f 100644 (file)
@@ -1384,7 +1384,7 @@ SYSCALL_DEFINE3(getrandom, char __user *, ubuf, size_t, len, unsigned int, flags
                        return ret;
        }
 
-       ret = import_single_range(ITER_DEST, ubuf, len, &iter);
+       ret = import_ubuf(ITER_DEST, ubuf, len, &iter);
        if (unlikely(ret))
                return ret;
        return get_random_bytes_user(&iter);
@@ -1501,7 +1501,7 @@ static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
                        return -EINVAL;
                if (get_user(len, p++))
                        return -EFAULT;
-               ret = import_single_range(ITER_SOURCE, p, len, &iter);
+               ret = import_ubuf(ITER_SOURCE, p, len, &iter);
                if (unlikely(ret))
                        return ret;
                ret = write_pool_user(&iter);
index 251eeaef7fbf56791fa9a61b0e580fc2da6f0bb4..4ea639509d41707b91537fd604fda8632b88bf79 100644 (file)
--- a/fs/aio.c
+++ b/fs/aio.c
@@ -1498,7 +1498,7 @@ static ssize_t aio_setup_rw(int rw, const struct iocb *iocb,
        size_t len = iocb->aio_nbytes;
 
        if (!vectored) {
-               ssize_t ret = import_single_range(rw, buf, len, iter);
+               ssize_t ret = import_ubuf(rw, buf, len, iter);
                *iovec = NULL;
                return ret;
        }
index bfafd3542fa768ac79a5fac34dd7414435283538..bea9c89922d908f66511dacb02edc8f4bcad918c 100644 (file)
@@ -347,8 +347,6 @@ ssize_t import_iovec(int type, const struct iovec __user *uvec,
 ssize_t __import_iovec(int type, const struct iovec __user *uvec,
                 unsigned nr_segs, unsigned fast_segs, struct iovec **iovp,
                 struct iov_iter *i, bool compat);
-int import_single_range(int type, void __user *buf, size_t len,
-                struct iov_iter *i);
 int import_ubuf(int type, void __user *buf, size_t len, struct iov_iter *i);
 
 static inline void iov_iter_ubuf(struct iov_iter *i, unsigned int direction,
index 4efc75d90a0ddd82800c170955626f51c2bbbb4f..e76f5e1efdf2dacdcf4415e308a8ba050c3be062 100644 (file)
@@ -2182,8 +2182,7 @@ static ssize_t user_events_write(struct file *file, const char __user *ubuf,
        if (unlikely(*ppos != 0))
                return -EFAULT;
 
-       if (unlikely(import_single_range(ITER_SOURCE, (char __user *)ubuf,
-                                        count, &i)))
+       if (unlikely(import_ubuf(ITER_SOURCE, (char __user *)ubuf, count, &i)))
                return -EFAULT;
 
        return user_events_write_core(file, &i);
index d60c73354e1fa0b72d1a9f52b3d0b51d451f466d..009875bc95aabd95fa897c9f8fb9fa4b3fa1bb78 100644 (file)
@@ -1369,19 +1369,6 @@ ssize_t import_iovec(int type, const struct iovec __user *uvec,
 }
 EXPORT_SYMBOL(import_iovec);
 
-int import_single_range(int rw, void __user *buf, size_t len,
-                       struct iov_iter *i)
-{
-       if (len > MAX_RW_COUNT)
-               len = MAX_RW_COUNT;
-       if (unlikely(!access_ok(buf, len)))
-               return -EFAULT;
-
-       iov_iter_ubuf(i, rw, buf, len);
-       return 0;
-}
-EXPORT_SYMBOL(import_single_range);
-
 int import_ubuf(int rw, void __user *buf, size_t len, struct iov_iter *i)
 {
        if (len > MAX_RW_COUNT)
index 57cf3adb191a5540e9943b457445854b06f0c495..54d3c762d400f7da2342b5f2fd93e4ff11401b32 100644 (file)
@@ -1857,8 +1857,8 @@ static int receive_fallback_to_copy(struct sock *sk,
        if (copy_address != zc->copybuf_address)
                return -EINVAL;
 
-       err = import_single_range(ITER_DEST, (void __user *)copy_address,
-                                 inq, &msg.msg_iter);
+       err = import_ubuf(ITER_DEST, (void __user *)copy_address, inq,
+                         &msg.msg_iter);
        if (err)
                return err;
 
@@ -1890,8 +1890,8 @@ static int tcp_copy_straggler_data(struct tcp_zerocopy_receive *zc,
        if (copy_address != zc->copybuf_address)
                return -EINVAL;
 
-       err = import_single_range(ITER_DEST, (void __user *)copy_address,
-                                 copylen, &msg.msg_iter);
+       err = import_ubuf(ITER_DEST, (void __user *)copy_address, copylen,
+                         &msg.msg_iter);
        if (err)
                return err;
        err = skb_copy_datagram_msg(skb, *offset, &msg, copylen);
index 1f0d0e8d0a504c83a34282072fb66a58ba5c34b3..5d49ae0c1b792aaaeb36c4c585bb3368c6e9dea0 100644 (file)
@@ -2163,7 +2163,7 @@ int __sys_sendto(int fd, void __user *buff, size_t len, unsigned int flags,
        struct msghdr msg;
        int fput_needed;
 
-       err = import_single_range(ITER_SOURCE, buff, len, &msg.msg_iter);
+       err = import_ubuf(ITER_SOURCE, buff, len, &msg.msg_iter);
        if (unlikely(err))
                return err;
        sock = sockfd_lookup_light(fd, &err, &fput_needed);
@@ -2228,7 +2228,7 @@ int __sys_recvfrom(int fd, void __user *ubuf, size_t size, unsigned int flags,
        int err, err2;
        int fput_needed;
 
-       err = import_single_range(ITER_DEST, ubuf, size, &msg.msg_iter);
+       err = import_ubuf(ITER_DEST, ubuf, size, &msg.msg_iter);
        if (unlikely(err))
                return err;
        sock = sockfd_lookup_light(fd, &err, &fput_needed);
index 193df7ca3ca84e9bd41b390907a676fa1d114ad3..10ba439968f744c61faf5ac0b86c6d3eb561b0b6 100644 (file)
@@ -1255,8 +1255,8 @@ long keyctl_instantiate_key(key_serial_t id,
                struct iov_iter from;
                int ret;
 
-               ret = import_single_range(ITER_SOURCE, (void __user *)_payload, plen,
-                                         &from);
+               ret = import_ubuf(ITER_SOURCE, (void __user *)_payload, plen,
+                                 &from);
                if (unlikely(ret))
                        return ret;