From patchwork Tue Mar 28 21:58:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 13191590 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E08F3C76196 for ; Tue, 28 Mar 2023 21:58:19 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230009AbjC1V6S (ORCPT ); Tue, 28 Mar 2023 17:58:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55392 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229958AbjC1V6R (ORCPT ); Tue, 28 Mar 2023 17:58:17 -0400 Received: from mail-pj1-x1032.google.com (mail-pj1-x1032.google.com [IPv6:2607:f8b0:4864:20::1032]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 678ACDE for ; Tue, 28 Mar 2023 14:58:16 -0700 (PDT) Received: by mail-pj1-x1032.google.com with SMTP id p3-20020a17090a74c300b0023f69bc7a68so14104401pjl.4 for ; Tue, 28 Mar 2023 14:58:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; t=1680040695; 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=K4NGaKNQumVHBmJnPUCoj4JSRLmXQM6FZ5Zam1tOsx4=; b=TRcTPvyy4Jwp13v9qZokt390mEYtWiUJM7dzupouQFNkIG/E+C3gzL3VPsFPG3v4OI wNzt+wHGNRZmp6x6LVjk1kYlRYydMGe2C1tMqNPoleJrGMfqewx8NnhfS3nKNdXx3dbq 1HWt0zW9uNTKVsIyhAqsDlNpoWsFKEqjmth/cIMwAALgePLpCKaAJYOvp7UUwMtIg9aF IJoRrNZXR+9Z+Q0n/u+8kmdV+V4wy/VROgZeHqpaaX5RhLPoTJ5rTI5RHUI80ugBs9Sc /8pySX+DZ2BvDPeruLTaVOtGgwZ8spjolG8YMWgosZIAHyQN3JBd/NTLRXBMgUa/LGg2 MAKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680040695; 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=K4NGaKNQumVHBmJnPUCoj4JSRLmXQM6FZ5Zam1tOsx4=; b=Wu7DKQE6J6o/0Bw4a+ispboNKIO9ljlaXn/vpxAMpKELz9x8e1agrru7sADWMzk/h/ 92K9/OPsufGt8Y1nKV1xbQWtnE4Kf9m3jT6qLhV7/tUjngmqqQQ5ADl1OHqwngXn4XUs 74C+v0oBvgw04i34nX/Bjl49JocsMd5dWfOF0K8molGkjszyegOu1TJfdYG1vp3AF52R G/7FW6W8hUDFSxorQCHWJXhnpbftzA9IArDCHWIaZU3Lj1t9eckZlXKW4fGR9+Ig2q6N 99HoPea+Capqyc5ySaLfI3pCEr+Ty8efjyfr3pn2STwYovIbomyGmlDfEHBbwRFcCGrf JcIA== X-Gm-Message-State: AAQBX9d941AnyYU6YHMkwzkWNiOFzZZymLiIiMu2EKrOwsFbBUyAo63K +lQ/buWcDjCTDJozULdurOSY+R0bJQUF8PHE0DeG9Q== X-Google-Smtp-Source: AKy350bBrLb4f49OQ2bhEWkug3l5Rqr9IUo2aWUWL4KurUgPUzHH6kg4uqefE8uDjY81Us5lihHmMA== X-Received: by 2002:a17:902:f9cb:b0:19a:723a:8405 with SMTP id kz11-20020a170902f9cb00b0019a723a8405mr14923896plb.6.1680040695634; Tue, 28 Mar 2023 14:58:15 -0700 (PDT) Received: from localhost.localdomain ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id t20-20020a1709028c9400b001a04b92ddffsm21560171plo.140.2023.03.28.14.58.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 14:58:15 -0700 (PDT) From: Jens Axboe To: linux-fsdevel@vger.kernel.org Cc: torvalds@linux-foundation.org, brauner@kernel.org, viro@zeniv.linux.org.uk, Jens Axboe Subject: [PATCH 1/9] block: ensure bio_alloc_map_data() deals with ITER_UBUF correctly Date: Tue, 28 Mar 2023 15:58:03 -0600 Message-Id: <20230328215811.903557-2-axboe@kernel.dk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230328215811.903557-1-axboe@kernel.dk> References: <20230328215811.903557-1-axboe@kernel.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org This helper blindly copies the iovec, even if we don't have one. Make this case a bit smarter by only doing so if we have an iovec array to copy. Signed-off-by: Jens Axboe --- block/blk-map.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/block/blk-map.c b/block/blk-map.c index 9137d16cecdc..3bfcad64d67c 100644 --- a/block/blk-map.c +++ b/block/blk-map.c @@ -29,10 +29,11 @@ static struct bio_map_data *bio_alloc_map_data(struct iov_iter *data, bmd = kmalloc(struct_size(bmd, iov, data->nr_segs), gfp_mask); if (!bmd) return NULL; - memcpy(bmd->iov, data->iov, sizeof(struct iovec) * data->nr_segs); bmd->iter = *data; - if (iter_is_iovec(data)) + if (iter_is_iovec(data)) { + memcpy(bmd->iov, data->iov, sizeof(struct iovec) * data->nr_segs); bmd->iter.iov = bmd->iov; + } return bmd; } From patchwork Tue Mar 28 21:58:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 13191591 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C2924C6FD18 for ; Tue, 28 Mar 2023 21:58:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229958AbjC1V6X (ORCPT ); Tue, 28 Mar 2023 17:58:23 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55406 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229975AbjC1V6S (ORCPT ); Tue, 28 Mar 2023 17:58:18 -0400 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 56CDADE for ; Tue, 28 Mar 2023 14:58:17 -0700 (PDT) Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-1a25eabf3f1so892365ad.0 for ; Tue, 28 Mar 2023 14:58:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; t=1680040697; 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=BLSXksapHQJHwuesIk/XJE3QbuW+vdF3HCe0ZJppDrI=; b=oVPmmwlI2dvn8+WmkC37EqP4r+18J/8/XG5fJd5DqPym0TTne/xJSDXPmaYIADKlHQ o/XezQjHqI5SuTTNF/dwFVkoCwvOHDYnqnsTX5OTq7ap7m4eRXN6GgYpNjaidhlJeBOk iTvWnPlzFAKYZKtKtKo+Q0tQDCvmYyPu0YSlxjKnQfRqCxecXpQe0IbKC5abGAs79ziR 0HULkSUdZedgR7pGiM3obIGSVnjAvvOKqKSGab6vTZi07MUyNcQsJ6Pj3YGQmWUMZppC t46JgsEdoQqc2whuLXhAjE4VFM1PEOZTQz6scloYkX+fYy8MebZJUitiASH594TswI1o U2jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680040697; 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=BLSXksapHQJHwuesIk/XJE3QbuW+vdF3HCe0ZJppDrI=; b=e1KaQX6GihXkTC5OMYj0HaYjAghS+fh4Pdh2TbYHL21hZcA/7DTXqgYSl3NdvwGKJd 1OYHDp7MHl2nXaLjZY/bJHMGTFJ5gg1f6huU8g+G0i89+lCl6YYg6SPTe5bSMYHmMCfR Ldx09hEpgYeCEJ6v7rTMSKwA5n/9qNTj5OPiPsjhedx10RDAAciEFAPuJSs8KTpoUZ+b 1HnASi5kTkSwWGwS6cfS7X2P3MgPT7+UCHPCcb34WOsAJrcHU6e/00xJs0IMvU2JWOPO q91D0/9xaKQlmQX0/NMBVBRVCorrky3KDMMDUUu4ibbhUHyIf7aHcUTuQDcTz1bs35UF b7RQ== X-Gm-Message-State: AAQBX9d1qhb+2rZZzxQ7LuqL3DZ4nMdT4CDczy2V4S3Y7+9IbESDgc1I 0GR/7VeNd2ZEAwNAdoTBFJsesbF9jVP1ij4jWH71+Q== X-Google-Smtp-Source: AKy350YpPlylR1kkDcOiYdyCp8k1z5f6to2vT+vKUXz/rFvQwCn6momKviBLdxto084ZL81BpBEOaw== X-Received: by 2002:a17:902:864b:b0:1a1:d395:e85c with SMTP id y11-20020a170902864b00b001a1d395e85cmr14142422plt.0.1680040696742; Tue, 28 Mar 2023 14:58:16 -0700 (PDT) Received: from localhost.localdomain ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id t20-20020a1709028c9400b001a04b92ddffsm21560171plo.140.2023.03.28.14.58.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 14:58:16 -0700 (PDT) From: Jens Axboe To: linux-fsdevel@vger.kernel.org Cc: torvalds@linux-foundation.org, brauner@kernel.org, viro@zeniv.linux.org.uk, Jens Axboe Subject: [PATCH 2/9] iov_iter: teach iov_iter_iovec() to deal with ITER_UBUF Date: Tue, 28 Mar 2023 15:58:04 -0600 Message-Id: <20230328215811.903557-3-axboe@kernel.dk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230328215811.903557-1-axboe@kernel.dk> References: <20230328215811.903557-1-axboe@kernel.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org Even if we're returning an iovec, we can trivially fill it in with the details from an ITER_UBUF as well. This enables loops that assume ITER_IOVEC to deal with ITER_UBUF transparently. Suggested-by: Al Viro Signed-off-by: Jens Axboe --- include/linux/uio.h | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/include/linux/uio.h b/include/linux/uio.h index 27e3fd942960..3b4403efcce1 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h @@ -143,13 +143,29 @@ static inline size_t iov_length(const struct iovec *iov, unsigned long nr_segs) return ret; } +/* + * Don't assume we're called with ITER_IOVEC, enable usage of ITER_UBUF + * as well by simply filling in the iovec. + */ static inline struct iovec iov_iter_iovec(const struct iov_iter *iter) { - return (struct iovec) { - .iov_base = iter->iov->iov_base + iter->iov_offset, - .iov_len = min(iter->count, - iter->iov->iov_len - iter->iov_offset), - }; + if (WARN_ON_ONCE(!iter->user_backed)) { + return (struct iovec) { + .iov_base = NULL, + .iov_len = 0 + }; + } else if (iter_is_ubuf(iter)) { + return (struct iovec) { + .iov_base = iter->ubuf + iter->iov_offset, + .iov_len = iter->count + }; + } else { + return (struct iovec) { + .iov_base = iter->iov->iov_base + iter->iov_offset, + .iov_len = min(iter->count, + iter->iov->iov_len - iter->iov_offset), + }; + } } size_t copy_page_from_iter_atomic(struct page *page, unsigned offset, From patchwork Tue Mar 28 21:58:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 13191592 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9FC4DC761A6 for ; Tue, 28 Mar 2023 21:58:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230036AbjC1V6Y (ORCPT ); Tue, 28 Mar 2023 17:58:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230023AbjC1V6U (ORCPT ); Tue, 28 Mar 2023 17:58:20 -0400 Received: from mail-pj1-x1034.google.com (mail-pj1-x1034.google.com [IPv6:2607:f8b0:4864:20::1034]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7C756172D for ; Tue, 28 Mar 2023 14:58:19 -0700 (PDT) Received: by mail-pj1-x1034.google.com with SMTP id h12-20020a17090aea8c00b0023d1311fab3so14127479pjz.1 for ; Tue, 28 Mar 2023 14:58:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; t=1680040699; x=1682632699; 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=R79gsA40yJKiDnlNR+qOWGBZpFD9m6iccoJTdxyvPj8=; b=Ky7wY/MX+8AYcwgA4bCOYSTTltVJtJMhsMli7TDUvoOWsNM1DNPYCMIEdzZX046KU3 LMdK3IebQaSqbFZGyGbWzIgJ5VosnoPjY5zk+INtEnhypi7xFUkm44zZSHHzRhCk/Dcr tpFxPNcRxKVO22vJSoWyZw3YNdXc/GAogmKAU0Wl0acbhicscYHGUqnsbKlWf994jOlJ nHwFrCOZoCaUGFizt/bb6zhrxGQ1hFPnICN6q+Bq5S2xpG94plL9+HBbGPKpSx1KNk/S 1zrxCbIB9OWN1Em75sveD3y/QNdZbTtqLFjPjEZpwykchnYQMu8vErJA2PoO7seUv5+d x+Fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680040699; x=1682632699; 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=R79gsA40yJKiDnlNR+qOWGBZpFD9m6iccoJTdxyvPj8=; b=1dP9QW061W21pRz22sDFLpWix9YHLVBI9WIqLymDoEYcqINoNanXwXRpawu03+SnO9 dIKtycX7oS2nQ9vTf9se1HM8by3PkGFi13/HGuT4VXey4VflUNcPOC5TYkYZh5Etz0UX YbIfUFUNFzj+nRAnYxX3KTkKSsWM/XElMrGunz5ze4UQty8AlVadjxNC2B1g9GhN8qOl pOMy09V9mFyNbKJ9QHsZDbR/cR4VlUXQxAwyPN412275zqTIC6H+QepUvyT0hYPO8Ugr uGHknR8cJjx27TURdGxjwbQEEOH4EkNipzdoeE0fmENSRfweUOwCRQ8G/mNb+hQj0ESR hfUQ== X-Gm-Message-State: AAQBX9dqhpXQ953TKFjOFKoPFeriYRKtFeMe3yZeMumtnpS9aiJxA3eD Icxx089tP9uV2fk+jFECW5kwpljOE16jTfPMsXbTow== X-Google-Smtp-Source: AKy350ZbY0h1qHzJ4IiXN3cVJ/L4IxoU4N6KIztondxMm4E+Vh6LlCQIkIGw+o6y0CWHJL/w7IVQOA== X-Received: by 2002:a17:902:f943:b0:19a:839d:b67a with SMTP id kx3-20020a170902f94300b0019a839db67amr14620048plb.5.1680040698773; Tue, 28 Mar 2023 14:58:18 -0700 (PDT) Received: from localhost.localdomain ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id t20-20020a1709028c9400b001a04b92ddffsm21560171plo.140.2023.03.28.14.58.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 14:58:17 -0700 (PDT) From: Jens Axboe To: linux-fsdevel@vger.kernel.org Cc: torvalds@linux-foundation.org, brauner@kernel.org, viro@zeniv.linux.org.uk, Jens Axboe Subject: [PATCH 3/9] iov_iter: overlay struct iovec and ubuf/len Date: Tue, 28 Mar 2023 15:58:05 -0600 Message-Id: <20230328215811.903557-4-axboe@kernel.dk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230328215811.903557-1-axboe@kernel.dk> References: <20230328215811.903557-1-axboe@kernel.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org Add an internal struct iovec that we can return as a pointer, with the fields of the iovec overlapping with the ITER_UBUF ubuf and length fields. This allows doing: struct iovec *vec = &iter->__ubuf_iovec; interchangably with iter->iov for the first segment, enabling writing code that deals with both without needing to check if we're dealing with ITER_IOVEC or ITER_UBUF. Signed-off-by: Jens Axboe --- include/linux/uio.h | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/include/linux/uio.h b/include/linux/uio.h index 3b4403efcce1..192831775d2b 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h @@ -49,14 +49,29 @@ struct iov_iter { size_t iov_offset; int last_offset; }; - size_t count; + /* + * Hack alert: overlay ubuf_iovec with iovec + count, so + * that the members resolve correctly regardless of the type + * of iterator used. This means that you can use: + * + * &iter->ubuf or iter->iov + * + * interchangably for the user_backed cases, hence simplifying + * some of the cases that need to deal with both. + */ union { - const struct iovec *iov; - const struct kvec *kvec; - const struct bio_vec *bvec; - struct xarray *xarray; - struct pipe_inode_info *pipe; - void __user *ubuf; + struct iovec __ubuf_iovec; + struct { + union { + const struct iovec *iov; + const struct kvec *kvec; + const struct bio_vec *bvec; + struct xarray *xarray; + struct pipe_inode_info *pipe; + void __user *ubuf; + }; + size_t count; + }; }; union { unsigned long nr_segs; From patchwork Tue Mar 28 21:58:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 13191594 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6419DC76196 for ; Tue, 28 Mar 2023 21:58:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230057AbjC1V6Z (ORCPT ); Tue, 28 Mar 2023 17:58:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55470 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230035AbjC1V6U (ORCPT ); Tue, 28 Mar 2023 17:58:20 -0400 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 694C71B8 for ; Tue, 28 Mar 2023 14:58:20 -0700 (PDT) Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-1a25eabf3f1so892435ad.0 for ; Tue, 28 Mar 2023 14:58:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; t=1680040700; 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=ZOAS7cM0V1rdkNIjItXF2VBHbDuIbv2yhdJvo4Z80nc=; b=yYlCRjTNZ4drRlPl5mYFsz5uHc3P5w8v+6NMAtyq8TFs5uMdoljjCuvCvJ/4/gXbyW J3qUD8vw0QyR78IvJotOd58FvwlVYeLNjmEikd87FV/cDYUlq3GT9xOcwdoMIS4Kdq3r MgI9rVK1YtB+BOe8lJ9sc9WVveawZNrI489JaNKHcdZAdRc0D+9E6E3Z3z08v4l2/MoA 7TJo2AtczAwtQjPQZjDafbEawBfUGeq//ysvstSWglmY44EARGZ6nvyJeS1786ucFcwH /pItmg0UqP/T0bKR/BZrJ7TmpF6WC1qtmyWZVoNWDeCb4BstQ27A5EinRPuKLz1spwuu /rCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680040700; 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=ZOAS7cM0V1rdkNIjItXF2VBHbDuIbv2yhdJvo4Z80nc=; b=7H/UsJLiEILhpp43rsAgPLjkA2j5rejYluB+3yCdJGl33m2TNSxNebPGjV42whE1E8 Wtk1cAZbiq6VEvtl++ETUJnYS8YO0xjFYTnNmTCAZgKhdRFHoTL6Bzvn2TnXHrIVfahk GE83/xrohANjbi5mTVJkPOZQPQj7EzoDe+TfnSKO9cLFM/FYiHEYgmdTZ72vPJA+KFZ8 I4ooKfipWdpALqv5mc6A6/j3S4wR26SS/iGR4qf34pm+oD7IogSa5Pbv4ekZQPMUdz7y VKqnOZb0DbIuxAWSILwuHgsmSx/fYFIPPirIBJJeHqvcli3HxxbRhvDnQEWk7VxILE86 Y/5A== X-Gm-Message-State: AAQBX9c5AbKfV1NCqIrck/cCA90nrREKdQ4czGD9DHKpq9VMQONCEUbY GjqBD70Ztp9+vh+DMmdi/qDU7t0W5VQ58DzEYZjXzA== X-Google-Smtp-Source: AKy350aiu2JBX5shtZlb41Tc1cHsC4iYqdlBkRbSyVqYH5H3qE8Nz9VhP5yoxmXJEhuyCQBF7a2T0g== X-Received: by 2002:a17:903:22ce:b0:19c:f005:92de with SMTP id y14-20020a17090322ce00b0019cf00592demr14207182plg.4.1680040699729; Tue, 28 Mar 2023 14:58:19 -0700 (PDT) Received: from localhost.localdomain ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id t20-20020a1709028c9400b001a04b92ddffsm21560171plo.140.2023.03.28.14.58.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 14:58:19 -0700 (PDT) From: Jens Axboe To: linux-fsdevel@vger.kernel.org Cc: torvalds@linux-foundation.org, brauner@kernel.org, viro@zeniv.linux.org.uk, Jens Axboe Subject: [PATCH 4/9] iov_iter: set nr_segs = 1 for ITER_UBUF Date: Tue, 28 Mar 2023 15:58:06 -0600 Message-Id: <20230328215811.903557-5-axboe@kernel.dk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230328215811.903557-1-axboe@kernel.dk> References: <20230328215811.903557-1-axboe@kernel.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org To avoid needing to check if a given user backed iov_iter is of type ITER_IOVEC or ITER_UBUF, set the number of segments for the ITER_UBUF case to 1 as we're carrying a single segment. Signed-off-by: Jens Axboe --- include/linux/uio.h | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/include/linux/uio.h b/include/linux/uio.h index 192831775d2b..953ccba94164 100644 --- a/include/linux/uio.h +++ b/include/linux/uio.h @@ -390,7 +390,8 @@ static inline void iov_iter_ubuf(struct iov_iter *i, unsigned int direction, .user_backed = true, .data_source = direction, .ubuf = buf, - .count = count + .count = count, + .nr_segs = 1 }; } /* Flags for iov_iter_get/extract_pages*() */ From patchwork Tue Mar 28 21:58:07 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 13191593 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id F1673C77B60 for ; Tue, 28 Mar 2023 21:58:27 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230059AbjC1V60 (ORCPT ); Tue, 28 Mar 2023 17:58:26 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55500 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230037AbjC1V6X (ORCPT ); Tue, 28 Mar 2023 17:58:23 -0400 Received: from mail-pj1-x102b.google.com (mail-pj1-x102b.google.com [IPv6:2607:f8b0:4864:20::102b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7DEC2101 for ; Tue, 28 Mar 2023 14:58:21 -0700 (PDT) Received: by mail-pj1-x102b.google.com with SMTP id j13so12205216pjd.1 for ; Tue, 28 Mar 2023 14:58:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; t=1680040701; 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=RxwDziOTETlNB1TsasU187NvE1wajWuHVah14pxhtB8=; b=5IgrwfOligvR2jM7jZP1lB59a4YqbzPl+YDPGihoIlBdDLyxpg4A1MVQBlvb5yXTvq x0lD9WAqbJ1N3bB6aaoSBUJtpbHMjxjcQv2S+KGX2nLbK93HzJavDePtwWxQiIiEmJ6f vjLgsGObxcCsD7dyFZkcWshg0cTtd3U8IMNz9iVbN9+g/fspznHAjWI24ZfduR69pEZw ZA6rApCMO0HlJM9ikN7eH/b2kKLCP7m35CxHVSUgVZsRvOMVZbZzqagdCeL+w2Si2tsC qC+cV7+E2iqfnyaR9vJoJGe6zOA8H7eXwfhCx0cY0IhRIpDHf+IBg9Z2QeoFgVf1SfNU JyUg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680040701; 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=RxwDziOTETlNB1TsasU187NvE1wajWuHVah14pxhtB8=; b=CGkHmrktkObG2SmcH3MclZrmwtVNsmxvS/deMlsmR3BYDfpQJJz8l2oSiZYiEaGRVK Q7C4xDNyX/rCoE6fOPJDb9y18ESCrSJ93SYTKhpVH7989ZakmjP+lbeHVJ2DJ/pvhDXl AlWdbYbPg3jSmZOsAM+wAOuKO+YxLayH8459HV2NhQ5zbdcvhDdk9jUEA7YFTs5Qs+sR rBjkcIWfy+ed9ngP64riHKxYmXKbW/Cup2xO5EbGKQJ1OON5il5j1ly9KBRZZ4I7Zmui zfSne6UCIk5ky1js0hjWUpWLkKTjNmcKp4p4n6Q7zWVsW44Mo7+JgZ08tHcHC2bJfzu8 3hHw== X-Gm-Message-State: AAQBX9fW5ARHc8/6XvO0RrQtcan3lFShYnuhrU9s8XkywCyaH8tEWZtR bgAoBmczH4tUP0WFdPEACXcdNvPp1ow6Nop/4vxKDw== X-Google-Smtp-Source: AKy350bYNOyK8KvY4iAeRzqFeh3GJVjtKmufYAPFMLGqXM0SJ4w9JrH5MHz3+C4+Pybv2Mj5i1f2lg== X-Received: by 2002:a17:902:ecd1:b0:1a0:53ba:ff1f with SMTP id a17-20020a170902ecd100b001a053baff1fmr15126619plh.0.1680040700744; Tue, 28 Mar 2023 14:58:20 -0700 (PDT) Received: from localhost.localdomain ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id t20-20020a1709028c9400b001a04b92ddffsm21560171plo.140.2023.03.28.14.58.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 14:58:20 -0700 (PDT) From: Jens Axboe To: linux-fsdevel@vger.kernel.org Cc: torvalds@linux-foundation.org, brauner@kernel.org, viro@zeniv.linux.org.uk, Jens Axboe Subject: [PATCH 5/9] IB/hfi1: check for user backed iterator, not specific iterator type Date: Tue, 28 Mar 2023 15:58:07 -0600 Message-Id: <20230328215811.903557-6-axboe@kernel.dk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230328215811.903557-1-axboe@kernel.dk> References: <20230328215811.903557-1-axboe@kernel.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org In preparation for switching single segment iterators to using ITER_UBUF, swap the check for whether we are user backed or not. While at it, move it outside the srcu locking area to clean up the code a bit. Signed-off-by: Jens Axboe --- drivers/infiniband/hw/hfi1/file_ops.c | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/drivers/infiniband/hw/hfi1/file_ops.c b/drivers/infiniband/hw/hfi1/file_ops.c index b1d6ca7e9708..fc2257c09b03 100644 --- a/drivers/infiniband/hw/hfi1/file_ops.c +++ b/drivers/infiniband/hw/hfi1/file_ops.c @@ -267,6 +267,8 @@ static ssize_t hfi1_write_iter(struct kiocb *kiocb, struct iov_iter *from) if (!HFI1_CAP_IS_KSET(SDMA)) return -EINVAL; + if (!from->user_backed) + return -EINVAL; idx = srcu_read_lock(&fd->pq_srcu); pq = srcu_dereference(fd->pq, &fd->pq_srcu); if (!cq || !pq) { @@ -274,11 +276,6 @@ static ssize_t hfi1_write_iter(struct kiocb *kiocb, struct iov_iter *from) return -EIO; } - if (!iter_is_iovec(from) || !dim) { - srcu_read_unlock(&fd->pq_srcu, idx); - return -EINVAL; - } - trace_hfi1_sdma_request(fd->dd, fd->uctxt->ctxt, fd->subctxt, dim); if (atomic_read(&pq->n_reqs) == pq->n_max_reqs) { From patchwork Tue Mar 28 21:58:08 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 13191595 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 312F6C761A6 for ; Tue, 28 Mar 2023 21:58:29 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230060AbjC1V61 (ORCPT ); Tue, 28 Mar 2023 17:58:27 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55502 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230039AbjC1V6X (ORCPT ); Tue, 28 Mar 2023 17:58:23 -0400 Received: from mail-pl1-x62a.google.com (mail-pl1-x62a.google.com [IPv6:2607:f8b0:4864:20::62a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8EC0C113 for ; Tue, 28 Mar 2023 14:58:22 -0700 (PDT) Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-1a25eabf3f1so892445ad.0 for ; Tue, 28 Mar 2023 14:58:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; t=1680040702; 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=xRPYYmE7VkoLdpt+drXZZpXzRgkrnkDfDvNKqz80KmM=; b=DRbBf8YB7W49+t4/7+pcCX3Gne0jF4X69YdZtuIZEm5hfS6HYsccfIBZKY8GJAiPoJ PBrpjyMEMx8Ag1yIEL4XF8tViXN3w2unegxeEe0mGfE3K/SLlTSYN6kxVymZ6HL+njDF qemawMGx30FCub3QUX5kZyhWo19dFX3UBG3L0ZonE+Slil06GoWWpY3F+XAZhdjTisV2 6q9WWOKC3ATc21f8LKlSxykKouY9l8osOzrFt0BMPoCIAJkA/XlurkPB9JBJjq1D6XAH 3PFQXNZeClVo6Pq8t2EDTShcEnBxfeVg21VdgLCvREKPu4q5fprClVJr6JJnxwkc/dWu 6NkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680040702; 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=xRPYYmE7VkoLdpt+drXZZpXzRgkrnkDfDvNKqz80KmM=; b=5BHaiqPRPEHLwjLPTx3BipnAmj6U8aZX167HMjJ7TUJcz9/+ZT+R5Ip4VnWJ2SK9eT mAeKnO7ar4RzLW9L++EMgHJtiF+1/+OVO2fUTKdb3yNtWbCzcN90L0+s427sE+Ndh818 35eC5HdMDPHUMMEufKMb1GbLm25Tz00Jv55Xl0B0EV1vY+4RGMxxp04gSLjrtny4ESX4 HwDRpA+Jj9dHDZC4fyG8f4PBlxC9gWsxm7VHH+9z31qeJZAE93eW+03xy8COknAIGPZ6 Azs7sL9Q1WtSM5EGRCMlzWTSLRNjphulktufXsKRXGJDn+7evkCW59bRUdZMjUzBgLyF JDLw== X-Gm-Message-State: AAQBX9fFjXasVoUXaVNI/alIf8bfABy9L4V9vzUUIYrDq6ko1/Zhk5Bs NJE3OkuA0qhr+C2gsWAnW34W4gWfdRjrQQMTCNXHQA== X-Google-Smtp-Source: AKy350bh1gfLTbi6GLuMqsZIOkpQYA48lH8bURIMtRX0WSgfI1yvz1l8NAaxZqAO/OgreQPsO4siYg== X-Received: by 2002:a17:90b:4007:b0:23f:6872:e37c with SMTP id ie7-20020a17090b400700b0023f6872e37cmr12405816pjb.0.1680040702025; Tue, 28 Mar 2023 14:58:22 -0700 (PDT) Received: from localhost.localdomain ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id t20-20020a1709028c9400b001a04b92ddffsm21560171plo.140.2023.03.28.14.58.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 14:58:21 -0700 (PDT) From: Jens Axboe To: linux-fsdevel@vger.kernel.org Cc: torvalds@linux-foundation.org, brauner@kernel.org, viro@zeniv.linux.org.uk, Jens Axboe Subject: [PATCH 6/9] IB/qib: check for user backed iterator, not specific iterator type Date: Tue, 28 Mar 2023 15:58:08 -0600 Message-Id: <20230328215811.903557-7-axboe@kernel.dk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230328215811.903557-1-axboe@kernel.dk> References: <20230328215811.903557-1-axboe@kernel.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org In preparation for switching single segment iterators to using ITER_UBUF, swap the check for whether we are user backed or not. Signed-off-by: Jens Axboe --- drivers/infiniband/hw/qib/qib_file_ops.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/infiniband/hw/qib/qib_file_ops.c b/drivers/infiniband/hw/qib/qib_file_ops.c index 80fe92a21f96..425de3bc3abf 100644 --- a/drivers/infiniband/hw/qib/qib_file_ops.c +++ b/drivers/infiniband/hw/qib/qib_file_ops.c @@ -2245,7 +2245,7 @@ static ssize_t qib_write_iter(struct kiocb *iocb, struct iov_iter *from) struct qib_ctxtdata *rcd = ctxt_fp(iocb->ki_filp); struct qib_user_sdma_queue *pq = fp->pq; - if (!iter_is_iovec(from) || !from->nr_segs || !pq) + if (!from->user_backed || !from->nr_segs || !pq) return -EINVAL; return qib_user_sdma_writev(rcd, pq, from->iov, from->nr_segs); From patchwork Tue Mar 28 21:58:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 13191596 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id A6272C6FD18 for ; Tue, 28 Mar 2023 21:58:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230063AbjC1V6g (ORCPT ); Tue, 28 Mar 2023 17:58:36 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55514 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230023AbjC1V6Y (ORCPT ); Tue, 28 Mar 2023 17:58:24 -0400 Received: from mail-pj1-x1036.google.com (mail-pj1-x1036.google.com [IPv6:2607:f8b0:4864:20::1036]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D77C39D for ; Tue, 28 Mar 2023 14:58:23 -0700 (PDT) Received: by mail-pj1-x1036.google.com with SMTP id x15so12201045pjk.2 for ; Tue, 28 Mar 2023 14:58:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; t=1680040703; x=1682632703; 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=kqXz3jKUOGYMfoB2fVfbZkg4ok5uwxBojJ+q0N/MO50=; b=v0kII7enXzDQtsNe2aHoy7IY3IFfasxoRdJul4DcyZBSECh7runwrstcL7201Asqm+ LHeSN0iSXtlTi6q3uu3/wfU/9nyhrIE/Xc+We/xr2L3w1vGe4org/kxuB0JbpmkldMJK WPQRhFKAqlumaNWfG+nItns5jD+Xdd7UqvuNQUWLKf4iCC/UzCEdqvSD2Kjqqz5XmbFp TLV8HQ+32BpukpfrUZYAFK2uNB7vyc6MG3do7p9PIFA5L+PmfW7lnl50UyupQFnelorq HrHj1CeLVpmntq2Y2R1B5mDeJBMMPcvt7DQ1HAtTQ/dUx/7Hh+wS2X5Ub2aWo8PSdgmH HTOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680040703; x=1682632703; 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=kqXz3jKUOGYMfoB2fVfbZkg4ok5uwxBojJ+q0N/MO50=; b=qJ0mXv9KouqZyDYFR72aryVU0LApWMZtNXGVcq+YQ4587UxNnEfcb1UUh0U0C9trwC xSOg+KB0VRQU7Et71jP2hYScec+vHpV69WAjFbVwlGw2gUfn2jZoblJzxZZIoTDJPpzf WuvVbQOU7lLqzEKxnyUONL8wj5GoWFzOxZGUwc4TERTJZl0ZIaO1zG1Jc3SaYeDEygkC LxHpw9aG7e0UdEs9FLkEC1VLnKk2IoI9f1wfD7mNpSJC3qc1A+cDgkoGH6P9lWZSZ25w nIWZBB+jHUqsad31NjMNRIzyk60Tpz9XnRMFuo4bUr6pzyG7Sj1AVzs+vZejFybRlQHN vMXQ== X-Gm-Message-State: AAQBX9d30Nabfegrioac0GtlOyGOTSo5Q2qxclUnNeuAceYm5f4uUkrV nBcj9Tg3WApsJzCQAWbbZdDwg0ZtAEmAWsLPJUJTTw== X-Google-Smtp-Source: AKy350Ylh4oAVC+KUc9SpRSILAeqF0geA1ZnRnE5IsUVUwKPZC6oReIX3r8V3w5x64cbi230ZciPjg== X-Received: by 2002:a17:902:9309:b0:1a1:956d:2281 with SMTP id bc9-20020a170902930900b001a1956d2281mr14193655plb.3.1680040703138; Tue, 28 Mar 2023 14:58:23 -0700 (PDT) Received: from localhost.localdomain ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id t20-20020a1709028c9400b001a04b92ddffsm21560171plo.140.2023.03.28.14.58.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 14:58:22 -0700 (PDT) From: Jens Axboe To: linux-fsdevel@vger.kernel.org Cc: torvalds@linux-foundation.org, brauner@kernel.org, viro@zeniv.linux.org.uk, Jens Axboe Subject: [PATCH 7/9] ALSA: pcm: check for user backed iterator, not specific iterator type Date: Tue, 28 Mar 2023 15:58:09 -0600 Message-Id: <20230328215811.903557-8-axboe@kernel.dk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230328215811.903557-1-axboe@kernel.dk> References: <20230328215811.903557-1-axboe@kernel.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org In preparation for switching single segment iterators to using ITER_UBUF, swap the check for whether we are user backed or not. Signed-off-by: Jens Axboe --- sound/core/pcm_native.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sound/core/pcm_native.c b/sound/core/pcm_native.c index 331380c2438b..8bfc40b358da 100644 --- a/sound/core/pcm_native.c +++ b/sound/core/pcm_native.c @@ -3530,7 +3530,7 @@ static ssize_t snd_pcm_readv(struct kiocb *iocb, struct iov_iter *to) if (runtime->state == SNDRV_PCM_STATE_OPEN || runtime->state == SNDRV_PCM_STATE_DISCONNECTED) return -EBADFD; - if (!iter_is_iovec(to)) + if (!to->user_backed) return -EINVAL; if (to->nr_segs > 1024 || to->nr_segs != runtime->channels) return -EINVAL; @@ -3567,7 +3567,7 @@ static ssize_t snd_pcm_writev(struct kiocb *iocb, struct iov_iter *from) if (runtime->state == SNDRV_PCM_STATE_OPEN || runtime->state == SNDRV_PCM_STATE_DISCONNECTED) return -EBADFD; - if (!iter_is_iovec(from)) + if (!from->user_backed) return -EINVAL; if (from->nr_segs > 128 || from->nr_segs != runtime->channels || !frame_aligned(runtime, from->iov->iov_len)) From patchwork Tue Mar 28 21:58:10 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 13191598 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6CF77C761A6 for ; Tue, 28 Mar 2023 21:58:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230072AbjC1V6j (ORCPT ); Tue, 28 Mar 2023 17:58:39 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55550 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230058AbjC1V60 (ORCPT ); Tue, 28 Mar 2023 17:58:26 -0400 Received: from mail-pl1-x631.google.com (mail-pl1-x631.google.com [IPv6:2607:f8b0:4864:20::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F2A210CC for ; Tue, 28 Mar 2023 14:58:25 -0700 (PDT) Received: by mail-pl1-x631.google.com with SMTP id iw3so13057077plb.6 for ; Tue, 28 Mar 2023 14:58:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; t=1680040704; x=1682632704; 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=oNiZElylqd4oRsTQgc5WV3Ag1/Bvc2tTEOYDdozkUio=; b=iEgLbG9r6XFXfGtaFXYy7mZRK4UqzdhYqC84CtABUu5KKp3+efJcbGIAJ1/LAf0hob tkYdnCYJrC5UcutiQ3Km4pyRNp/llUDC53N0dc4/jsCC/Tpq+tTaaRqTvOWb2d5gTaLS 4h4cCxuvtVnNRV7ezypeBWbXyZgVkw+YFDb+bPgMGrbUovySXMoNbqVAmPkPyu+iwyRg 8SP6JoLCEOPdTFKWUzOUXK3EXY1SgYayGpfptiz4jhQ7yhh4i6ciDS0lfGEhbVvWfgQv 8FpAAwJPrdqgaJ4ZR8fM7r8sBCKviktOcUGFHpbQoPn8EDCCCLeZKiQU33RkhyWsha0O 6NIQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680040704; x=1682632704; 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=oNiZElylqd4oRsTQgc5WV3Ag1/Bvc2tTEOYDdozkUio=; b=wudn5dypM4SlADKco1ifJMiBvBG6AeBaaGMYbqE4QsTHQ0ZfY/vH0dFvZwTV1a2w8L a8wQL69BtVqVCBilD88VDVdxAVjDDL25xEMUtWFVtF6dwyBK3VDYlaTu3QvsnUwe6K5N tBdYbxsxtdznZnertRzfDpACkAcwDSrNbr2PzYMwYMMCPhgi3MBC2yq5wslOG3YjVhmN bEsPbHW+EqBb20rhKuLB9IOX/aXm8bjNnIjDlzBuUOqsmtFTAO9PT1kaBfHjbmVqB2R1 OAzlnifvjBiHVD2Z7n7ljyudrsHcr1iUfa455gaE2oW5ewQAnlGco/vKDGDfONXnBiWa R11w== X-Gm-Message-State: AAQBX9fTkjAXKaJr2onoJZ0D+LK/mG3xste4daRW9qOAhdXY7ibc7jcF OU9Zo5JTKuiXwiytY6DUTtLSL3kLxx9VL5O4FG+R6Q== X-Google-Smtp-Source: AKy350aBZmSxVCYzTJ87/4lMPgOjJSn67tUb/ixJ/7DpMtLCk4TXH9KmIYAMrrF9JHYn/MfDrF0xwg== X-Received: by 2002:a17:902:f943:b0:19a:839d:b67a with SMTP id kx3-20020a170902f94300b0019a839db67amr14620207plb.5.1680040704275; Tue, 28 Mar 2023 14:58:24 -0700 (PDT) Received: from localhost.localdomain ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id t20-20020a1709028c9400b001a04b92ddffsm21560171plo.140.2023.03.28.14.58.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 14:58:23 -0700 (PDT) From: Jens Axboe To: linux-fsdevel@vger.kernel.org Cc: torvalds@linux-foundation.org, brauner@kernel.org, viro@zeniv.linux.org.uk, Jens Axboe Subject: [PATCH 8/9] iov_iter: convert import_single_range() to ITER_UBUF Date: Tue, 28 Mar 2023 15:58:10 -0600 Message-Id: <20230328215811.903557-9-axboe@kernel.dk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230328215811.903557-1-axboe@kernel.dk> References: <20230328215811.903557-1-axboe@kernel.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org Since we're just importing a single vector, we don't have to turn it into an ITER_IOVEC. Instead turn it into an ITER_UBUF, which is cheaper to iterate. Signed-off-by: Jens Axboe --- lib/iov_iter.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/iov_iter.c b/lib/iov_iter.c index 274014e4eafe..fc82cc42ffe6 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -1866,9 +1866,7 @@ int import_single_range(int rw, void __user *buf, size_t len, if (unlikely(!access_ok(buf, len))) return -EFAULT; - iov->iov_base = buf; - iov->iov_len = len; - iov_iter_init(i, rw, iov, 1, len); + iov_iter_ubuf(i, rw, buf, len); return 0; } EXPORT_SYMBOL(import_single_range); From patchwork Tue Mar 28 21:58:11 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jens Axboe X-Patchwork-Id: 13191597 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 93000C76196 for ; Tue, 28 Mar 2023 21:58:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230064AbjC1V6h (ORCPT ); Tue, 28 Mar 2023 17:58:37 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:55588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230039AbjC1V62 (ORCPT ); Tue, 28 Mar 2023 17:58:28 -0400 Received: from mail-pl1-x62e.google.com (mail-pl1-x62e.google.com [IPv6:2607:f8b0:4864:20::62e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3C6A22133 for ; Tue, 28 Mar 2023 14:58:26 -0700 (PDT) Received: by mail-pl1-x62e.google.com with SMTP id o11so13077131ple.1 for ; Tue, 28 Mar 2023 14:58:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20210112.gappssmtp.com; s=20210112; t=1680040705; x=1682632705; 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=VRuLnY8LfItYmha1a1+5ihq4yOs2ex342r7sq+hJ1lo=; b=MTVixB4gdxpihVL1VGQWs5h5wNMMUS/gfef/ejNAZ5guuyhHrUtFCx29PeOdr2y+HR hwkUgBoFc94Vw7bz2OErGxr9W3FJjDfKMARKDcAhlgr+PsNIAEnK7Ts5ay5Ab6B6Bp8c x5/N+E8clWHS1g5x+ekIdCgJUdO/r4VYc35V5SNwlN+4Z1JG/jAKNsZF8IbPm//o4fcj +AQec/iDjPlyDpq6FDHmnlx1+tAOOjrUtL5UCyVzRRAvNU1OfpZIjufmx2BJfVF5gtjy hK3RgITIWW7QNsO6rdBVmuL/E+cyYcpLVVkAKS711vog4GHDc4HoKv/QKcVmjj3UpENR cDMw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680040705; x=1682632705; 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=VRuLnY8LfItYmha1a1+5ihq4yOs2ex342r7sq+hJ1lo=; b=RBXwm4Lpyw0j0qYAqbud3gtKdjCK+N+nglsqPpyGVQnnNrEkMWwx2PwCafzI4+NHWt MIQdmfPW+ewjq1hrb4DZoiQKd/icCZ8qeDCtgC8kUf05fvekuDxyHzgO4/m2rNDaMcp3 Fu+HhwU4x0DL9kcUSVt0Hh20+93tb2u6v84etAj8XsTJFhmgNQ/F4VIDnZO3WfpqU85Z WY56qFc5sB3wi/A6gBDVN6vF+RsQGvfNrzLjFvMtqEQBh0bV1erp6+/yUI8251yOfkgW MvUSZmSvUxLkJvZSZ3De/VCGr3s2wxRWS71SyQOLrTwTWh6pGR2OE6JEOF9+TrbhKyzt PoxQ== X-Gm-Message-State: AAQBX9cBFhnQZu5Bwgye+A8rwZrBXXNJwsuUSUJa7SSDVch/M87+LETI KBhekOz2l3BCr7djydT6gyvl0L/MnvAkznJzeQIRGQ== X-Google-Smtp-Source: AKy350bTARPh+OLDk+YoaIZ1t9lgnmu5eizU5k8KG6Jqs5dOkgP1MDvtEeat17jk6NfcYDPjTEB/aA== X-Received: by 2002:a17:903:788:b0:1a1:bf37:7c2e with SMTP id kn8-20020a170903078800b001a1bf377c2emr14314208plb.4.1680040705379; Tue, 28 Mar 2023 14:58:25 -0700 (PDT) Received: from localhost.localdomain ([198.8.77.157]) by smtp.gmail.com with ESMTPSA id t20-20020a1709028c9400b001a04b92ddffsm21560171plo.140.2023.03.28.14.58.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 28 Mar 2023 14:58:24 -0700 (PDT) From: Jens Axboe To: linux-fsdevel@vger.kernel.org Cc: torvalds@linux-foundation.org, brauner@kernel.org, viro@zeniv.linux.org.uk, Jens Axboe Subject: [PATCH 9/9] iov_iter: import single vector iovecs as ITER_UBUF Date: Tue, 28 Mar 2023 15:58:11 -0600 Message-Id: <20230328215811.903557-10-axboe@kernel.dk> X-Mailer: git-send-email 2.39.2 In-Reply-To: <20230328215811.903557-1-axboe@kernel.dk> References: <20230328215811.903557-1-axboe@kernel.dk> MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org Add a special case to __import_iovec(), which imports a single segment iovec as an ITER_UBUF rather than an ITER_IOVEC. ITER_UBUF is cheaper to iterate than ITER_IOVEC, and for a single segment iovec, there's no point in using a segmented iterator. Signed-off-by: Jens Axboe --- lib/iov_iter.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/lib/iov_iter.c b/lib/iov_iter.c index fc82cc42ffe6..63cf9997bd50 100644 --- a/lib/iov_iter.c +++ b/lib/iov_iter.c @@ -1780,6 +1780,30 @@ struct iovec *iovec_from_user(const struct iovec __user *uvec, return iov; } +/* + * Single segment iovec supplied by the user, import it as ITER_UBUF. + */ +static ssize_t __import_iovec_ubuf(int type, const struct iovec __user *uvec, + struct iovec **iovp, struct iov_iter *i, + bool compat) +{ + struct iovec *iov = *iovp; + ssize_t ret; + + if (compat) + ret = copy_compat_iovec_from_user(iov, uvec, 1); + else + ret = copy_iovec_from_user(iov, uvec, 1); + if (unlikely(ret)) + return ret; + + ret = import_ubuf(type, iov->iov_base, iov->iov_len, i); + if (unlikely(ret)) + return ret; + *iovp = NULL; + return i->count; +} + 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) @@ -1788,6 +1812,9 @@ ssize_t __import_iovec(int type, const struct iovec __user *uvec, unsigned long seg; struct iovec *iov; + if (nr_segs == 1) + return __import_iovec_ubuf(type, uvec, iovp, i, compat); + iov = iovec_from_user(uvec, nr_segs, fast_segs, *iovp, compat); if (IS_ERR(iov)) { *iovp = NULL;