Skip to content

Commit 5db8752

Browse files
committed
Merge tag 'vfs-6.8.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs
Pull vfs iov_iter cleanups from Christian Brauner: "This contains a minor cleanup. The patches drop an unused argument from import_single_range() allowing to replace import_single_range() with import_ubuf() and dropping import_single_range() completely" * tag 'vfs-6.8.iov_iter' of git://git.kernel.org/pub/scm/linux/kernel/git/vfs/vfs: iov_iter: replace import_single_range() with import_ubuf() iov_iter: remove unused 'iov' argument from import_single_range()
2 parents 2645840 + 9fd7874 commit 5db8752

9 files changed

Lines changed: 14 additions & 43 deletions

File tree

drivers/block/ublk_drv.c

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -893,12 +893,9 @@ static int ublk_map_io(const struct ublk_queue *ubq, const struct request *req,
893893
*/
894894
if (ublk_need_map_req(req)) {
895895
struct iov_iter iter;
896-
struct iovec iov;
897896
const int dir = ITER_DEST;
898897

899-
import_single_range(dir, u64_to_user_ptr(io->addr), rq_bytes,
900-
&iov, &iter);
901-
898+
import_ubuf(dir, u64_to_user_ptr(io->addr), rq_bytes, &iter);
902899
return ublk_copy_user_pages(req, 0, &iter, dir);
903900
}
904901
return rq_bytes;
@@ -915,13 +912,11 @@ static int ublk_unmap_io(const struct ublk_queue *ubq,
915912

916913
if (ublk_need_unmap_req(req)) {
917914
struct iov_iter iter;
918-
struct iovec iov;
919915
const int dir = ITER_SOURCE;
920916

921917
WARN_ON_ONCE(io->res > rq_bytes);
922918

923-
import_single_range(dir, u64_to_user_ptr(io->addr), io->res,
924-
&iov, &iter);
919+
import_ubuf(dir, u64_to_user_ptr(io->addr), io->res, &iter);
925920
return ublk_copy_user_pages(req, 0, &iter, dir);
926921
}
927922
return rq_bytes;

drivers/char/random.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1364,7 +1364,6 @@ static void __cold try_to_generate_entropy(void)
13641364
SYSCALL_DEFINE3(getrandom, char __user *, ubuf, size_t, len, unsigned int, flags)
13651365
{
13661366
struct iov_iter iter;
1367-
struct iovec iov;
13681367
int ret;
13691368

13701369
if (flags & ~(GRND_NONBLOCK | GRND_RANDOM | GRND_INSECURE))
@@ -1385,7 +1384,7 @@ SYSCALL_DEFINE3(getrandom, char __user *, ubuf, size_t, len, unsigned int, flags
13851384
return ret;
13861385
}
13871386

1388-
ret = import_single_range(ITER_DEST, ubuf, len, &iov, &iter);
1387+
ret = import_ubuf(ITER_DEST, ubuf, len, &iter);
13891388
if (unlikely(ret))
13901389
return ret;
13911390
return get_random_bytes_user(&iter);
@@ -1491,7 +1490,6 @@ static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
14911490
return 0;
14921491
case RNDADDENTROPY: {
14931492
struct iov_iter iter;
1494-
struct iovec iov;
14951493
ssize_t ret;
14961494
int len;
14971495

@@ -1503,7 +1501,7 @@ static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
15031501
return -EINVAL;
15041502
if (get_user(len, p++))
15051503
return -EFAULT;
1506-
ret = import_single_range(ITER_SOURCE, p, len, &iov, &iter);
1504+
ret = import_ubuf(ITER_SOURCE, p, len, &iter);
15071505
if (unlikely(ret))
15081506
return ret;
15091507
ret = write_pool_user(&iter);

fs/aio.c

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

15471547
if (!vectored) {
1548-
ssize_t ret = import_single_range(rw, buf, len, *iovec, iter);
1548+
ssize_t ret = import_ubuf(rw, buf, len, iter);
15491549
*iovec = NULL;
15501550
return ret;
15511551
}

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 iovec *iov, 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 & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2177,14 +2177,12 @@ static int user_events_open(struct inode *node, struct file *file)
21772177
static ssize_t user_events_write(struct file *file, const char __user *ubuf,
21782178
size_t count, loff_t *ppos)
21792179
{
2180-
struct iovec iov;
21812180
struct iov_iter i;
21822181

21832182
if (unlikely(*ppos != 0))
21842183
return -EFAULT;
21852184

2186-
if (unlikely(import_single_range(ITER_SOURCE, (char __user *)ubuf,
2187-
count, &iov, &i)))
2185+
if (unlikely(import_ubuf(ITER_SOURCE, (char __user *)ubuf, count, &i)))
21882186
return -EFAULT;
21892187

21902188
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 iovec *iov, 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 & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1849,7 +1849,6 @@ static int receive_fallback_to_copy(struct sock *sk,
18491849
{
18501850
unsigned long copy_address = (unsigned long)zc->copybuf_address;
18511851
struct msghdr msg = {};
1852-
struct iovec iov;
18531852
int err;
18541853

18551854
zc->length = 0;
@@ -1858,8 +1857,8 @@ static int receive_fallback_to_copy(struct sock *sk,
18581857
if (copy_address != zc->copybuf_address)
18591858
return -EINVAL;
18601859

1861-
err = import_single_range(ITER_DEST, (void __user *)copy_address,
1862-
inq, &iov, &msg.msg_iter);
1860+
err = import_ubuf(ITER_DEST, (void __user *)copy_address, inq,
1861+
&msg.msg_iter);
18631862
if (err)
18641863
return err;
18651864

@@ -1886,14 +1885,13 @@ static int tcp_copy_straggler_data(struct tcp_zerocopy_receive *zc,
18861885
{
18871886
unsigned long copy_address = (unsigned long)zc->copybuf_address;
18881887
struct msghdr msg = {};
1889-
struct iovec iov;
18901888
int err;
18911889

18921890
if (copy_address != zc->copybuf_address)
18931891
return -EINVAL;
18941892

1895-
err = import_single_range(ITER_DEST, (void __user *)copy_address,
1896-
copylen, &iov, &msg.msg_iter);
1893+
err = import_ubuf(ITER_DEST, (void __user *)copy_address, copylen,
1894+
&msg.msg_iter);
18971895
if (err)
18981896
return err;
18991897
err = skb_copy_datagram_msg(skb, *offset, &msg, copylen);

net/socket.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2163,10 +2163,9 @@ int __sys_sendto(int fd, void __user *buff, size_t len, unsigned int flags,
21632163
struct sockaddr_storage address;
21642164
int err;
21652165
struct msghdr msg;
2166-
struct iovec iov;
21672166
int fput_needed;
21682167

2169-
err = import_single_range(ITER_SOURCE, buff, len, &iov, &msg.msg_iter);
2168+
err = import_ubuf(ITER_SOURCE, buff, len, &msg.msg_iter);
21702169
if (unlikely(err))
21712170
return err;
21722171
sock = sockfd_lookup_light(fd, &err, &fput_needed);
@@ -2228,11 +2227,10 @@ int __sys_recvfrom(int fd, void __user *ubuf, size_t size, unsigned int flags,
22282227
.msg_name = addr ? (struct sockaddr *)&address : NULL,
22292228
};
22302229
struct socket *sock;
2231-
struct iovec iov;
22322230
int err, err2;
22332231
int fput_needed;
22342232

2235-
err = import_single_range(ITER_DEST, ubuf, size, &iov, &msg.msg_iter);
2233+
err = import_ubuf(ITER_DEST, ubuf, size, &msg.msg_iter);
22362234
if (unlikely(err))
22372235
return err;
22382236
sock = sockfd_lookup_light(fd, &err, &fput_needed);

security/keys/keyctl.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1252,12 +1252,11 @@ long keyctl_instantiate_key(key_serial_t id,
12521252
key_serial_t ringid)
12531253
{
12541254
if (_payload && plen) {
1255-
struct iovec iov;
12561255
struct iov_iter from;
12571256
int ret;
12581257

1259-
ret = import_single_range(ITER_SOURCE, (void __user *)_payload, plen,
1260-
&iov, &from);
1258+
ret = import_ubuf(ITER_SOURCE, (void __user *)_payload, plen,
1259+
&from);
12611260
if (unlikely(ret))
12621261
return ret;
12631262

0 commit comments

Comments
 (0)