Skip to content

Commit 9fd7874

Browse files
axboebrauner
authored andcommitted
iov_iter: replace import_single_range() with import_ubuf()
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>
1 parent 6ac805d commit 9fd7874

9 files changed

Lines changed: 14 additions & 33 deletions

File tree

drivers/block/ublk_drv.c

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -895,9 +895,7 @@ static int ublk_map_io(const struct ublk_queue *ubq, const struct request *req,
895895
struct iov_iter iter;
896896
const int dir = ITER_DEST;
897897

898-
import_single_range(dir, u64_to_user_ptr(io->addr), rq_bytes,
899-
&iter);
900-
898+
import_ubuf(dir, u64_to_user_ptr(io->addr), rq_bytes, &iter);
901899
return ublk_copy_user_pages(req, 0, &iter, dir);
902900
}
903901
return rq_bytes;
@@ -918,8 +916,7 @@ static int ublk_unmap_io(const struct ublk_queue *ubq,
918916

919917
WARN_ON_ONCE(io->res > rq_bytes);
920918

921-
import_single_range(dir, u64_to_user_ptr(io->addr), io->res,
922-
&iter);
919+
import_ubuf(dir, u64_to_user_ptr(io->addr), io->res, &iter);
923920
return ublk_copy_user_pages(req, 0, &iter, dir);
924921
}
925922
return rq_bytes;

drivers/char/random.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1384,7 +1384,7 @@ SYSCALL_DEFINE3(getrandom, char __user *, ubuf, size_t, len, unsigned int, flags
13841384
return ret;
13851385
}
13861386

1387-
ret = import_single_range(ITER_DEST, ubuf, len, &iter);
1387+
ret = import_ubuf(ITER_DEST, ubuf, len, &iter);
13881388
if (unlikely(ret))
13891389
return ret;
13901390
return get_random_bytes_user(&iter);
@@ -1501,7 +1501,7 @@ static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
15011501
return -EINVAL;
15021502
if (get_user(len, p++))
15031503
return -EFAULT;
1504-
ret = import_single_range(ITER_SOURCE, p, len, &iter);
1504+
ret = import_ubuf(ITER_SOURCE, p, len, &iter);
15051505
if (unlikely(ret))
15061506
return ret;
15071507
ret = write_pool_user(&iter);

fs/aio.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1498,7 +1498,7 @@ static ssize_t aio_setup_rw(int rw, const struct iocb *iocb,
14981498
size_t len = iocb->aio_nbytes;
14991499

15001500
if (!vectored) {
1501-
ssize_t ret = import_single_range(rw, buf, len, iter);
1501+
ssize_t ret = import_ubuf(rw, buf, len, iter);
15021502
*iovec = NULL;
15031503
return ret;
15041504
}

include/linux/uio.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,6 @@ ssize_t import_iovec(int type, const struct iovec __user *uvec,
347347
ssize_t __import_iovec(int type, const struct iovec __user *uvec,
348348
unsigned nr_segs, unsigned fast_segs, struct iovec **iovp,
349349
struct iov_iter *i, bool compat);
350-
int import_single_range(int type, void __user *buf, size_t len,
351-
struct iov_iter *i);
352350
int import_ubuf(int type, void __user *buf, size_t len, struct iov_iter *i);
353351

354352
static inline void iov_iter_ubuf(struct iov_iter *i, unsigned int direction,

kernel/trace/trace_events_user.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2182,8 +2182,7 @@ static ssize_t user_events_write(struct file *file, const char __user *ubuf,
21822182
if (unlikely(*ppos != 0))
21832183
return -EFAULT;
21842184

2185-
if (unlikely(import_single_range(ITER_SOURCE, (char __user *)ubuf,
2186-
count, &i)))
2185+
if (unlikely(import_ubuf(ITER_SOURCE, (char __user *)ubuf, count, &i)))
21872186
return -EFAULT;
21882187

21892188
return user_events_write_core(file, &i);

lib/iov_iter.c

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1369,19 +1369,6 @@ ssize_t import_iovec(int type, const struct iovec __user *uvec,
13691369
}
13701370
EXPORT_SYMBOL(import_iovec);
13711371

1372-
int import_single_range(int rw, void __user *buf, size_t len,
1373-
struct iov_iter *i)
1374-
{
1375-
if (len > MAX_RW_COUNT)
1376-
len = MAX_RW_COUNT;
1377-
if (unlikely(!access_ok(buf, len)))
1378-
return -EFAULT;
1379-
1380-
iov_iter_ubuf(i, rw, buf, len);
1381-
return 0;
1382-
}
1383-
EXPORT_SYMBOL(import_single_range);
1384-
13851372
int import_ubuf(int rw, void __user *buf, size_t len, struct iov_iter *i)
13861373
{
13871374
if (len > MAX_RW_COUNT)

net/ipv4/tcp.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1857,8 +1857,8 @@ static int receive_fallback_to_copy(struct sock *sk,
18571857
if (copy_address != zc->copybuf_address)
18581858
return -EINVAL;
18591859

1860-
err = import_single_range(ITER_DEST, (void __user *)copy_address,
1861-
inq, &msg.msg_iter);
1860+
err = import_ubuf(ITER_DEST, (void __user *)copy_address, inq,
1861+
&msg.msg_iter);
18621862
if (err)
18631863
return err;
18641864

@@ -1890,8 +1890,8 @@ static int tcp_copy_straggler_data(struct tcp_zerocopy_receive *zc,
18901890
if (copy_address != zc->copybuf_address)
18911891
return -EINVAL;
18921892

1893-
err = import_single_range(ITER_DEST, (void __user *)copy_address,
1894-
copylen, &msg.msg_iter);
1893+
err = import_ubuf(ITER_DEST, (void __user *)copy_address, copylen,
1894+
&msg.msg_iter);
18951895
if (err)
18961896
return err;
18971897
err = skb_copy_datagram_msg(skb, *offset, &msg, copylen);

net/socket.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2163,7 +2163,7 @@ int __sys_sendto(int fd, void __user *buff, size_t len, unsigned int flags,
21632163
struct msghdr msg;
21642164
int fput_needed;
21652165

2166-
err = import_single_range(ITER_SOURCE, buff, len, &msg.msg_iter);
2166+
err = import_ubuf(ITER_SOURCE, buff, len, &msg.msg_iter);
21672167
if (unlikely(err))
21682168
return err;
21692169
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,
22282228
int err, err2;
22292229
int fput_needed;
22302230

2231-
err = import_single_range(ITER_DEST, ubuf, size, &msg.msg_iter);
2231+
err = import_ubuf(ITER_DEST, ubuf, size, &msg.msg_iter);
22322232
if (unlikely(err))
22332233
return err;
22342234
sock = sockfd_lookup_light(fd, &err, &fput_needed);

security/keys/keyctl.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1255,8 +1255,8 @@ long keyctl_instantiate_key(key_serial_t id,
12551255
struct iov_iter from;
12561256
int ret;
12571257

1258-
ret = import_single_range(ITER_SOURCE, (void __user *)_payload, plen,
1259-
&from);
1258+
ret = import_ubuf(ITER_SOURCE, (void __user *)_payload, plen,
1259+
&from);
12601260
if (unlikely(ret))
12611261
return ret;
12621262

0 commit comments

Comments
 (0)