Received: by 2002:a05:7412:31a9:b0:e2:908c:2ebd with SMTP id et41csp3524315rdb; Wed, 13 Sep 2023 15:03:11 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHbnEQehsbXHIydVawHbgt181WNrBM121NSb/DQRAzLfe1/pZfBTk1qrrh84Jd0Mv/H/d9i X-Received: by 2002:a05:6a20:8f19:b0:13f:de94:fb97 with SMTP id b25-20020a056a208f1900b0013fde94fb97mr25997pzk.27.1694642590965; Wed, 13 Sep 2023 15:03:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1694642590; cv=none; d=google.com; s=arc-20160816; b=jUpSx4FCPfF9xkLyI8ketI+iBpAZpdLlKHCnt//cBb7NUweOetN2bFAXwuADLz/JvY OlYaGst503nJN4Hn+l1rOwQgfBF3geHCZbdyabBFzNh0+dsn8LOl9G0eBi7kvqWUV7pf TFkVySUNSQuc5k3Qj3n5/5h0kWIvFGmo5GEOTKdLNUybNCXVoq+PSKI5kAS2OE3/31Po ZnN9I1NwQH9QUN/W8pGUNJNQnvlssf9Xfpamnxx7d4fY9zZvdtroKOHam3Rm6DRMjtYk T47Ft0SOXYGOkt8EncRwU4tXELPy+TqTr5VcSgBDANBrGhN3V7Yr6wkBxhNyisG/rf9C LxlQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:in-reply-to:from :references:cc:to:content-language:subject:user-agent:mime-version :date:message-id:dkim-signature; bh=600gHmPTU+Trd8NzTTpGSeg9Z9knkVYO4N8Fmwu8qxw=; fh=OgZByqXsmkAm7NMuccrey0r9K5ZYPJxUgGcEbOylK9g=; b=u36HPrIXqDEihjbR05i8YU+1VOEHUvNfWRycJY/LWDQJGWBFKgV43R6NIialcMp+Z8 4PEZT1RRYQX0XzkU6t4K5ocs8OXTxhe8+Bq1Gt1K6UPB/TW9ZObe1pCb/kqEKO+zWRBh doDtrFSubEQhvEb6+YMMhb2PH8ztduOnqYTNM2evvO14NQ3Bz98uoTpxEooWLesbHhYy snN1Wp60r1LGWcEa5gj1/VGASTk2JIORvp71z1uHH5WawyQlOx3Yx1nhFqPi98RU1Brw AJBJa0rjocneqwuawd+dGfQb1cRSGgOnwrxp0GKzJoHMYCMYPcZDDaSY7DTRCQz4e2+C VaNw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b=GmXeNZIt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from fry.vger.email (fry.vger.email. [23.128.96.38]) by mx.google.com with ESMTPS id t18-20020a056a0021d200b0068fe0f46f27si135843pfj.171.2023.09.13.15.03.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Sep 2023 15:03:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 as permitted sender) client-ip=23.128.96.38; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel-dk.20230601.gappssmtp.com header.s=20230601 header.b=GmXeNZIt; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.38 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 fry.vger.email (Postfix) with ESMTP id 13E5480D7706; Wed, 13 Sep 2023 12:36:48 -0700 (PDT) X-Virus-Status: Clean X-Virus-Scanned: clamav-milter 0.103.10 at fry.vger.email Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232199AbjIMTgl (ORCPT + 99 others); Wed, 13 Sep 2023 15:36:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:32910 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230475AbjIMTgk (ORCPT ); Wed, 13 Sep 2023 15:36:40 -0400 Received: from mail-il1-x134.google.com (mail-il1-x134.google.com [IPv6:2607:f8b0:4864:20::134]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4AAB591 for ; Wed, 13 Sep 2023 12:36:36 -0700 (PDT) Received: by mail-il1-x134.google.com with SMTP id e9e14a558f8ab-34f17290a9cso251425ab.1 for ; Wed, 13 Sep 2023 12:36:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=kernel-dk.20230601.gappssmtp.com; s=20230601; t=1694633795; x=1695238595; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=600gHmPTU+Trd8NzTTpGSeg9Z9knkVYO4N8Fmwu8qxw=; b=GmXeNZItd0tblgxPYbW4mYF7KRlghXHUXTf12uNOu1EDYoeV1HzaHmUIxYqkxC06W4 givmVINMTqiHvdBacoZK9T4sPbmrW20FmqC6tTKacGdZeExDTlbAc5L/r4H/nNoJNhwx UfBQZ6ED9Ufmumm+GdT1rcW4bjrIOMeY+Oq1kOrIXHsltTibFVeTeAEkFrAWgNNUHZeJ /obABc2rO4fMP10hMbnqTmISB4YtV8yxQom2qt/JAstogPTi2f0c0u5TRbdUTqjhNOPP +6bsxucqGz2FfzM0p2s7Ycsnd+IW6/9TaqMR3UxSoNQQeMonVCGey/B47vydDIiUzydE 77IA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1694633795; x=1695238595; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=600gHmPTU+Trd8NzTTpGSeg9Z9knkVYO4N8Fmwu8qxw=; b=qJzpUvWAyilToJ91GZxxRHSJw9bRU1jCTFEsXMPehmb/jkOmkvXXT7+hiu4RcBoMU1 tJfC2jtTr7TkHfjgAQiPNWskcjfd0FQ8FIIGdKWv/Tt+dzmL68N7xErMyUWw2Np0h1dP aeS9Qea6UDaQ7ntqvMi4FVDA9lGO6XdTIaRd+FlCYvZHcgAtvcA9cyYl6+9egIXQsjRI h5IUFJPO7OXIvqqTKvctUkb1qLhZhko7+D12mntZpU6Rn7WClI5AKlZuek+UJyc3CbV6 INZbM0r1S6vdPOza/Yj/RIEVUVYKWPQogDErdEPDrwiBxwlYTj4L9kEf+/d2+7DcWhEh etlA== X-Gm-Message-State: AOJu0YzGdJbQ6F91E+4BIQV+Tu2tbcr8PxUktUjAlmpTfyR7RfAuJc/C SB8pfblFzNT0afimggzSx2f+hA== X-Received: by 2002:a05:6602:488f:b0:792:8a08:1bf9 with SMTP id ee15-20020a056602488f00b007928a081bf9mr3529973iob.0.1694633795603; Wed, 13 Sep 2023 12:36:35 -0700 (PDT) Received: from [192.168.1.94] ([96.43.243.2]) by smtp.gmail.com with ESMTPSA id o26-20020a02c6ba000000b00433f32f6e3dsm3659503jan.29.2023.09.13.12.36.34 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Wed, 13 Sep 2023 12:36:34 -0700 (PDT) Message-ID: Date: Wed, 13 Sep 2023 13:36:33 -0600 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v6 6/8] io_uring/cmd: Introduce SOCKET_URING_OP_GETSOCKOPT Content-Language: en-US To: Breno Leitao , sdf@google.com, asml.silence@gmail.com, willemdebruijn.kernel@gmail.com, kuba@kernel.org, pabeni@redhat.com, martin.lau@linux.dev, krisman@suse.de Cc: bpf@vger.kernel.org, linux-kernel@vger.kernel.org, netdev@vger.kernel.org, io-uring@vger.kernel.org References: <20230913152744.2333228-1-leitao@debian.org> <20230913152744.2333228-7-leitao@debian.org> From: Jens Axboe In-Reply-To: <20230913152744.2333228-7-leitao@debian.org> Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit 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 (fry.vger.email [0.0.0.0]); Wed, 13 Sep 2023 12:36:48 -0700 (PDT) X-Spam-Status: No, score=-0.8 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on fry.vger.email On 9/13/23 9:27 AM, Breno Leitao wrote: > Add support for getsockopt command (SOCKET_URING_OP_GETSOCKOPT), where > level is SOL_SOCKET. This is similar to the getsockopt(2) system > call, and both parameters are pointers to userspace. > > Important to say that userspace needs to keep the pointer alive until > the CQE is completed. Since it's holding the data needed, this is true for any request that is writing data. IOW, this is not unusual and should be taken for granted. I think this may warrant a bit of rewording if the patch is respun, if not then just ignore it. > diff --git a/io_uring/uring_cmd.c b/io_uring/uring_cmd.c > index 5753c3611b74..a2a6ac0c503b 100644 > --- a/io_uring/uring_cmd.c > +++ b/io_uring/uring_cmd.c > @@ -167,6 +167,19 @@ int io_uring_cmd_import_fixed(u64 ubuf, unsigned long len, int rw, > } > EXPORT_SYMBOL_GPL(io_uring_cmd_import_fixed); > > +static inline int io_uring_cmd_getsockopt(struct socket *sock, > + struct io_uring_cmd *cmd, > + unsigned int issue_flags) > +{ > + void __user *optval = u64_to_user_ptr(READ_ONCE(cmd->sqe->optval)); > + int __user *optlen = u64_to_user_ptr(READ_ONCE(cmd->sqe->optlen)); > + bool compat = !!(issue_flags & IO_URING_F_COMPAT); > + int optname = READ_ONCE(cmd->sqe->optname); > + int level = READ_ONCE(cmd->sqe->level); > + > + return do_sock_getsockopt(sock, compat, level, optname, optval, optlen); > +} Personal preference, but any other io_uring generally uses the format of: bool compat = !!(issue_flags & IO_URING_F_COMPAT); void __user *optval; int __user *optlen; int optname, level; optval = u64_to_user_ptr(READ_ONCE(cmd->sqe->optval)); optlen = u64_to_user_ptr(READ_ONCE(cmd->sqe->optlen)); optname = READ_ONCE(cmd->sqe->optname); level = READ_ONCE(cmd->sqe->level); return do_sock_getsockopt(sock, compat, level, optname, optval, optlen); which I find a lot easier to read than bundling variable declarations and reading the values into them. And I always forget that cmd->sqe is a copy for URING_CMD, which makes this just look wrong as they should've been read at prep time rather than issue time. But it's fine! -- Jens Axboe