From patchwork Mon Dec 4 17:47:50 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 173488 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:bcd1:0:b0:403:3b70:6f57 with SMTP id r17csp2928725vqy; Mon, 4 Dec 2023 09:48:51 -0800 (PST) X-Google-Smtp-Source: AGHT+IH7InsCnyUXwbROi1q55ui1vFnOc/dQJ1Ga9TwNb2hH5wRvK7CnZMqP3TJrm3/1IAmMzVlj X-Received: by 2002:a05:6a21:32a0:b0:18f:97c:5b78 with SMTP id yt32-20020a056a2132a000b0018f097c5b78mr1792179pzb.70.1701712130967; Mon, 04 Dec 2023 09:48:50 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1701712130; cv=none; d=google.com; s=arc-20160816; b=E4rBalMmL4c9wzMR6YPiCpUOKryODGbzw5Q+6zZxfIRrloOmqiajYHAxEyoeycQjZj T6/VkkES3SdxQimS7zj5Y7sY70pp05t4ua82dyO3NtXLwDC0I4YcuA8yLq/gXbzX1P7Z AV6fntSXGPCBXUEoZO/edvinGiZl/quUsjUO5de28SucyXt2lKy2ZpYAJuYi866tTPSD AczDOG/VW18l44vtqkiO0xZJkdnW18GsgkHPwvnFIhUCkDsFa0m0FAzBw2qtUcMISg0a wVScBO2js2kCMBwmi4rXmR59/etUn9Rxj5Vb5BMFroDvX1EwsNv0BesCNuJrYVNQxqTp 5Cxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=wcVLusmLSrs9AkT8FMUp6dSDeCayjrBTTW9J6mB7iK0=; fh=sQJGxM/IU55i/QXenRQZTFfhbJirzDA14Pxa78TpjL0=; b=via9zyjM43qYhcqsMA4S1AUNocLlqoHtM0GwTuZrHCQTQqZudfCZItnsAwtYgG7sJe 9Fl70jeg1X2tqtgTHkF8tKArk75sAoYIT7vl0Up7v/1nPUD0ehLINZ08DTmWuflzinyh sUTIbsi8Iguj76UigmnJV6v0VDE3aMsWQZVr3Oe7OsZxhpU3pXZhEZNNu/744h3gkVp8 5wpyhQ0r0rZRvHQEaK8gdqrilris10OTFxT4nKFTFNzKbmNaGkYv2Za3+8cWlUXlwwZW ANaVD9pOHYHbBs0A0r4yLB/Ldk7E4HA+2ROMLl6tu8rNSXRVsCD+hVIY8x5bwi4mVS7j AxHQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b="p7JV8Y/c"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from snail.vger.email (snail.vger.email. [23.128.96.37]) by mx.google.com with ESMTPS id y15-20020a056a00180f00b006cddfbc6095si2692238pfa.26.2023.12.04.09.48.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 09:48:50 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) client-ip=23.128.96.37; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b="p7JV8Y/c"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.37 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from out1.vger.email (depot.vger.email [IPv6:2620:137:e000::3:0]) by snail.vger.email (Postfix) with ESMTP id ECFB380AC591; Mon, 4 Dec 2023 09:48:49 -0800 (PST) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.11 at snail.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231367AbjLDRsg (ORCPT + 99 others); Mon, 4 Dec 2023 12:48:36 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44994 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230480AbjLDRsa (ORCPT ); Mon, 4 Dec 2023 12:48:30 -0500 Received: from mail-ot1-x32f.google.com (mail-ot1-x32f.google.com [IPv6:2607:f8b0:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 822F8E6 for ; Mon, 4 Dec 2023 09:48:36 -0800 (PST) Received: by mail-ot1-x32f.google.com with SMTP id 46e09a7af769-6d7f68b059fso346107a34.1 for ; Mon, 04 Dec 2023 09:48:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1701712115; x=1702316915; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wcVLusmLSrs9AkT8FMUp6dSDeCayjrBTTW9J6mB7iK0=; b=p7JV8Y/caMj/APmX9TQww3gp1MqcfKw640XWFOTITkrvHvKPlsJSEgDTGGu+RhcFQK p9AJxipdLG4lfrjwRGPXAQpPup50BgTFtJLtX6JUK34QTchhzA6PqFuh7VVjhyhYOv7U qp8DvyqX212vmtK2mBhcIOywjYRtSyk/BFpiQoiI6xrSNqYBcEDvusqab0aRemETWEiM 5IGO1bwHFx65NbzFXMwNdotjIyVCRaFOleDCKpmSAp1D8Ij6na/yfJiutaXRwTPQvUDC CrZ0Fk12YEA2f1+3fZSu3CcvKCpLJQeQJ6jOCrqnRKLwpxxH+qCHqysPgfepWgubSg/I Owdg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1701712115; x=1702316915; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=wcVLusmLSrs9AkT8FMUp6dSDeCayjrBTTW9J6mB7iK0=; b=SkHqXLN9q7VlLkiRd3ZOFMByChB6ocwuiFBBGQVICRwz3PExgD2ATjpBKWAmwPkGy9 IzdTTU6pDTTi6FdOiXd9YRcAhxQZaAxoHznt95+ivkqbTiCB4nAxXAUboc5zUCSZ063Z biySJEhdbYnb8IfBjyWOPvqrmkRdq8PPWOELhLLapNj94HV11Q8vrFP+47fj6ARm7dVK BFzGRckW68p0sxNgw4yDZH+i7W0+K0Paowg3yPt7gQo09NEjDBl+lBTw521K55b9TPXT ZIlimawHc6bDrYPGPU9rPQ4Wk00mmt5JsNtlYuAixQnVV5OObWi+SyGfRD08fWLYRl6z l33w== X-Gm-Message-State: AOJu0YyoLniAe4LXT9VEuTPfBVzDje7X09XR2bP6NYF9ylkvEzWdXUw7 KGa+TsoDByro07mJXLAYWCN+iKUCr5JAo7BxvbaFGg== X-Received: by 2002:a05:6830:1b6a:b0:6d8:7e05:8e27 with SMTP id d10-20020a0568301b6a00b006d87e058e27mr7223708ote.3.1701712115402; Mon, 04 Dec 2023 09:48:35 -0800 (PST) Received: from m2max.tfbnw.net ([2620:10d:c091:400::5:2355]) by smtp.gmail.com with ESMTPSA id hg15-20020a05622a610f00b00424059fe96esm3670981qtb.89.2023.12.04.09.48.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 04 Dec 2023 09:48:34 -0800 (PST) From: Jens Axboe To: linux-kernel@vger.kernel.org Cc: viro@zeniv.linux.org.uk, brauner@kernel.org, Jens Axboe Subject: [PATCH 2/2] iov_iter: replace import_single_range() with import_ubuf() Date: Mon, 4 Dec 2023 10:47:50 -0700 Message-ID: <20231204174827.1258875-3-axboe@kernel.dk> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20231204174827.1258875-1-axboe@kernel.dk> References: <20231204174827.1258875-1-axboe@kernel.dk> MIME-Version: 1.0 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,RCVD_IN_DNSWL_BLOCKED,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-Greylist: Sender passed SPF test, not delayed by milter-greylist-4.6.4 (snail.vger.email [0.0.0.0]); Mon, 04 Dec 2023 09:48:50 -0800 (PST) X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1784374499493795806 X-GMAIL-MSGID: 1784374499493795806 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 --- drivers/block/ublk_drv.c | 7 ++----- drivers/char/random.c | 4 ++-- fs/aio.c | 2 +- include/linux/uio.h | 2 -- kernel/trace/trace_events_user.c | 3 +-- lib/iov_iter.c | 13 ------------- net/ipv4/tcp.c | 8 ++++---- net/socket.c | 4 ++-- security/keys/keyctl.c | 4 ++-- 9 files changed, 14 insertions(+), 33 deletions(-) diff --git a/drivers/block/ublk_drv.c b/drivers/block/ublk_drv.c index 5656b0a1233d..3eaf02ebeebe 100644 --- a/drivers/block/ublk_drv.c +++ b/drivers/block/ublk_drv.c @@ -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; diff --git a/drivers/char/random.c b/drivers/char/random.c index e79ae238b30d..456be28ba67c 100644 --- a/drivers/char/random.c +++ b/drivers/char/random.c @@ -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); diff --git a/fs/aio.c b/fs/aio.c index 251eeaef7fbf..4ea639509d41 100644 --- 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; } diff --git a/include/linux/uio.h b/include/linux/uio.h index bfafd3542fa7..bea9c89922d9 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h @@ -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, diff --git a/kernel/trace/trace_events_user.c b/kernel/trace/trace_events_user.c index 4efc75d90a0d..e76f5e1efdf2 100644 --- a/kernel/trace/trace_events_user.c +++ b/kernel/trace/trace_events_user.c @@ -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); diff --git a/lib/iov_iter.c b/lib/iov_iter.c index d60c73354e1f..009875bc95aa 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -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) diff --git a/net/ipv4/tcp.c b/net/ipv4/tcp.c index 57cf3adb191a..54d3c762d400 100644 --- a/net/ipv4/tcp.c +++ b/net/ipv4/tcp.c @@ -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); diff --git a/net/socket.c b/net/socket.c index 1f0d0e8d0a50..5d49ae0c1b79 100644 --- a/net/socket.c +++ b/net/socket.c @@ -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); diff --git a/security/keys/keyctl.c b/security/keys/keyctl.c index 193df7ca3ca8..10ba439968f7 100644 --- a/security/keys/keyctl.c +++ b/security/keys/keyctl.c @@ -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;