vfs-6.8.iov_iter
-----BEGIN PGP SIGNATURE----- iHUEABYKAB0WIQRAhzRXHqcMeLMyaSiRxhvAZXjcogUCZZUzBQAKCRCRxhvAZXjc ot+3AQCZw1PBD4azVxFMWH76qwlAGoVIFug4+ogKU/iUa4VLygEA2FJh1vLJw5iI LpgBEIUTPVkwtzinAW94iJJo1Vr7NAI= =p6PB -----END PGP SIGNATURE----- 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()
This commit is contained in:
commit
5db8752c3b
@ -893,12 +893,9 @@ static int ublk_map_io(const struct ublk_queue *ubq, const struct request *req,
|
||||
*/
|
||||
if (ublk_need_map_req(req)) {
|
||||
struct iov_iter iter;
|
||||
struct iovec iov;
|
||||
const int dir = ITER_DEST;
|
||||
|
||||
import_single_range(dir, u64_to_user_ptr(io->addr), rq_bytes,
|
||||
&iov, &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;
|
||||
@ -915,13 +912,11 @@ static int ublk_unmap_io(const struct ublk_queue *ubq,
|
||||
|
||||
if (ublk_need_unmap_req(req)) {
|
||||
struct iov_iter iter;
|
||||
struct iovec iov;
|
||||
const int dir = ITER_SOURCE;
|
||||
|
||||
WARN_ON_ONCE(io->res > rq_bytes);
|
||||
|
||||
import_single_range(dir, u64_to_user_ptr(io->addr), io->res,
|
||||
&iov, &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;
|
||||
|
@ -1364,7 +1364,6 @@ static void __cold try_to_generate_entropy(void)
|
||||
SYSCALL_DEFINE3(getrandom, char __user *, ubuf, size_t, len, unsigned int, flags)
|
||||
{
|
||||
struct iov_iter iter;
|
||||
struct iovec iov;
|
||||
int ret;
|
||||
|
||||
if (flags & ~(GRND_NONBLOCK | GRND_RANDOM | GRND_INSECURE))
|
||||
@ -1385,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, &iov, &iter);
|
||||
ret = import_ubuf(ITER_DEST, ubuf, len, &iter);
|
||||
if (unlikely(ret))
|
||||
return ret;
|
||||
return get_random_bytes_user(&iter);
|
||||
@ -1491,7 +1490,6 @@ static long random_ioctl(struct file *f, unsigned int cmd, unsigned long arg)
|
||||
return 0;
|
||||
case RNDADDENTROPY: {
|
||||
struct iov_iter iter;
|
||||
struct iovec iov;
|
||||
ssize_t ret;
|
||||
int len;
|
||||
|
||||
@ -1503,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, &iov, &iter);
|
||||
ret = import_ubuf(ITER_SOURCE, p, len, &iter);
|
||||
if (unlikely(ret))
|
||||
return ret;
|
||||
ret = write_pool_user(&iter);
|
||||
|
2
fs/aio.c
2
fs/aio.c
@ -1545,7 +1545,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, *iovec, iter);
|
||||
ssize_t ret = import_ubuf(rw, buf, len, iter);
|
||||
*iovec = NULL;
|
||||
return ret;
|
||||
}
|
||||
|
@ -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 iovec *iov, 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,
|
||||
|
@ -2177,14 +2177,12 @@ static int user_events_open(struct inode *node, struct file *file)
|
||||
static ssize_t user_events_write(struct file *file, const char __user *ubuf,
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct iovec iov;
|
||||
struct iov_iter i;
|
||||
|
||||
if (unlikely(*ppos != 0))
|
||||
return -EFAULT;
|
||||
|
||||
if (unlikely(import_single_range(ITER_SOURCE, (char __user *)ubuf,
|
||||
count, &iov, &i)))
|
||||
if (unlikely(import_ubuf(ITER_SOURCE, (char __user *)ubuf, count, &i)))
|
||||
return -EFAULT;
|
||||
|
||||
return user_events_write_core(file, &i);
|
||||
|
@ -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 iovec *iov, 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)
|
||||
|
@ -1849,7 +1849,6 @@ static int receive_fallback_to_copy(struct sock *sk,
|
||||
{
|
||||
unsigned long copy_address = (unsigned long)zc->copybuf_address;
|
||||
struct msghdr msg = {};
|
||||
struct iovec iov;
|
||||
int err;
|
||||
|
||||
zc->length = 0;
|
||||
@ -1858,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, &iov, &msg.msg_iter);
|
||||
err = import_ubuf(ITER_DEST, (void __user *)copy_address, inq,
|
||||
&msg.msg_iter);
|
||||
if (err)
|
||||
return err;
|
||||
|
||||
@ -1886,14 +1885,13 @@ static int tcp_copy_straggler_data(struct tcp_zerocopy_receive *zc,
|
||||
{
|
||||
unsigned long copy_address = (unsigned long)zc->copybuf_address;
|
||||
struct msghdr msg = {};
|
||||
struct iovec iov;
|
||||
int err;
|
||||
|
||||
if (copy_address != zc->copybuf_address)
|
||||
return -EINVAL;
|
||||
|
||||
err = import_single_range(ITER_DEST, (void __user *)copy_address,
|
||||
copylen, &iov, &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);
|
||||
|
@ -2163,10 +2163,9 @@ int __sys_sendto(int fd, void __user *buff, size_t len, unsigned int flags,
|
||||
struct sockaddr_storage address;
|
||||
int err;
|
||||
struct msghdr msg;
|
||||
struct iovec iov;
|
||||
int fput_needed;
|
||||
|
||||
err = import_single_range(ITER_SOURCE, buff, len, &iov, &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,11 +2227,10 @@ int __sys_recvfrom(int fd, void __user *ubuf, size_t size, unsigned int flags,
|
||||
.msg_name = addr ? (struct sockaddr *)&address : NULL,
|
||||
};
|
||||
struct socket *sock;
|
||||
struct iovec iov;
|
||||
int err, err2;
|
||||
int fput_needed;
|
||||
|
||||
err = import_single_range(ITER_DEST, ubuf, size, &iov, &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);
|
||||
|
@ -1252,12 +1252,11 @@ long keyctl_instantiate_key(key_serial_t id,
|
||||
key_serial_t ringid)
|
||||
{
|
||||
if (_payload && plen) {
|
||||
struct iovec iov;
|
||||
struct iov_iter from;
|
||||
int ret;
|
||||
|
||||
ret = import_single_range(ITER_SOURCE, (void __user *)_payload, plen,
|
||||
&iov, &from);
|
||||
ret = import_ubuf(ITER_SOURCE, (void __user *)_payload, plen,
|
||||
&from);
|
||||
if (unlikely(ret))
|
||||
return ret;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user