From mboxrd@z Thu Jan  1 00:00:00 1970
Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42])
	(using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits))
	(No client certificate requested)
	by smtp.subspace.kernel.org (Postfix) with ESMTPS id C3A631DDA0E
	for <io-uring@vger.kernel.org>; Fri, 28 Mar 2025 17:17:31 +0000 (UTC)
Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.218.42
ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116;
	t=1743182253; cv=none; b=NdBdyEJ1+adkk9x39AHCU6Hm9LuX07fXswrNmQpbfrBxT4AEOWJrQiVGJ8+1HV4oq+swTDraZxQCkxNTbHYVgQN3y/fVsdqUMfNpnbLM5cipP6ZOFPFFo/vacg8DNN2McHFQEOCBDAjLebjZUjJMASH+8Baz4a9pnPQ1t9TMtEw=
ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org;
	s=arc-20240116; t=1743182253; c=relaxed/simple;
	bh=MMSoHF8K8evUlXh2bnms3L6Jpg+BgcGLAuu1sg+wuSI=;
	h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From:
	 In-Reply-To:Content-Type; b=plwFvctCF2maLIff0U1ySYMoCqdgVk6gYPkCQvG5MzZ5luMILu5BHMI8YN/kFPj6aa6BY0zcHs2AbyFVoKKkPRpoqJJd9MKBVhGFCGCpDxs6soXP9zygkLylVKasjUbRTJMGzDx6TYC4X9QJbbGlcWI4yqTgceZGMc7kZaXc8gg=
ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=S6s+Ueqi; arc=none smtp.client-ip=209.85.218.42
Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com
Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com
Authentication-Results: smtp.subspace.kernel.org;
	dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="S6s+Ueqi"
Received: by mail-ej1-f42.google.com with SMTP id a640c23a62f3a-ac2a089fbbdso433685766b.1
        for <io-uring@vger.kernel.org>; Fri, 28 Mar 2025 10:17:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1743182250; x=1743787050; darn=vger.kernel.org;
        h=content-transfer-encoding:in-reply-to:from:content-language
         :references:cc:to:subject:user-agent:mime-version:date:message-id
         :from:to:cc:subject:date:message-id:reply-to;
        bh=pZMplH2Y8kOtm0nIS7sQEe2+Im4C9cst7jX70q8WsLM=;
        b=S6s+UeqiPxlH7AbTTy/JL4f0qvZlGqJBsMB9ETNt2aoRYXYcz67FINWdd5farxtOhL
         o+tLT7vNXE0tRm7st98QtFzFiBMfGonj5o2zPmAmcJHDIy0fQsEU/AcYCnkkNFtsMof9
         0PfFlLUHRyVfYvAf7ISRudr3DB5xpgFrEbCEsVIBOvuBoOJnJ3RqQF5ADbw1ALM0Adou
         be9wzt1k2bVHnz16ESe8j8etbqibQznxg+7V+sdBAtF0krgr1u1jNZktpGfONwZMTDZR
         s+7uYLrtH7O03eXosiIQn/msK9I+S+cgUO5B/gNhDBmymtQnohHGPbCtdQqxF7SWMd1a
         VRtA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1743182250; x=1743787050;
        h=content-transfer-encoding:in-reply-to:from:content-language
         :references:cc:to:subject:user-agent:mime-version:date:message-id
         :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
        bh=pZMplH2Y8kOtm0nIS7sQEe2+Im4C9cst7jX70q8WsLM=;
        b=tbKcFmFMBIhmt+2IPnJuSxsFpPjBcW57wBVpcACjXiwqNgjcASEAUAeQeTB6aB3RMo
         B/kw3zvqnZZvT4eUZGaUHvBGgGAuH8kFKk8MVZ4ZSRVGGH55P61oYeL06m17K5Z1tuPl
         GgZmKvW/+frHMtxckhghCSDi8lcb8/Dg5YphbDXRd/VlwY/vWHfhzFQv77P81Uv9gILg
         9RCxw6DOoa8KsdBseDXTlCZljhaAxnqtKfuiIkE2MluQ/iaexO1lCHG4baUdfWZP19fN
         bJBvB53oWmSKgz/cSstD87XYeQW1vJK2OiHMyUlkipReoD/0AX9omyKivuPosFkDIcvO
         yISg==
X-Gm-Message-State: AOJu0YzDTRAbsu9IhVN/1NNAK0BSM3H8Bu4A+OUQbKqMFKaD4iPzOw7U
	9MXlSYJ4Vhs89jzWLz75WkmQZFJgVTI2H8IojbGNzZPYRna+pA4X
X-Gm-Gg: ASbGncv1CRu6I+1k5dUZ/a+Q7uZyoUAUuIAwwfRV2bm0uZEW/pehPx8AyxUSNXSyIZH
	YiCMtvG9hMwPfN4V2uYq74LE2N0c2ibTyuetuFs531XbGZRy7mUb3dv1lCWnwn8Hu3xhEqrLDv/
	HQblEpP6zDedKXFsl2NN9k0RV6Sv+nPLraph12sEZZwMYmdgdbrk9zd0CDAuBmCjP6IHREzkquE
	weNxitkJVXVILTGJ+ufQqiCmOwtY3Qkyjxswojh0q1nsb50s3y94fnbja5eW9ChSFfrY1BeGuIX
	oR1ieRSkcF2nHzTISN6C2ebcE1B9xct54nLuPVX36sIgYNmJGg1voDI=
X-Google-Smtp-Source: AGHT+IF4lCS9f+WkZ39nu+qt/sjy4/XfuKyaCbisgF7Hpf6BmO4Xh6zFMW65NSVcjuKRPID2geJ3Pg==
X-Received: by 2002:a17:907:3da7:b0:ac3:cbbf:1d1b with SMTP id a640c23a62f3a-ac71ee5959amr281949566b.21.1743182249659;
        Fri, 28 Mar 2025 10:17:29 -0700 (PDT)
Received: from [192.168.8.100] ([148.252.129.232])
        by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ac7196988edsm190501366b.145.2025.03.28.10.17.28
        (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
        Fri, 28 Mar 2025 10:17:28 -0700 (PDT)
Message-ID: <e5cac037-f729-4d3a-9fe6-2c9ba9d55894@gmail.com>
Date: Fri, 28 Mar 2025 17:18:15 +0000
Precedence: bulk
X-Mailing-List: io-uring@vger.kernel.org
List-Id: <io-uring.vger.kernel.org>
List-Subscribe: <mailto:io-uring+subscribe@vger.kernel.org>
List-Unsubscribe: <mailto:io-uring+unsubscribe@vger.kernel.org>
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Subject: Re: SOCKET_URING_OP_GETSOCKOPT SOL_SOCKET restriction
To: Jens Axboe <axboe@kernel.dk>, Stefan Metzmacher <metze@samba.org>
Cc: io-uring <io-uring@vger.kernel.org>, Breno Leitao <leitao@debian.org>
References: <a41d8ee5-e859-4ec6-b01f-c0ea3d753704@samba.org>
 <272ceaca-3e53-45ae-bbd4-2590f36c7ef8@kernel.dk>
 <8ba612c4-c3ed-4b65-9060-d24226f53779@gmail.com>
 <3b59c209-374c-4d04-ad5d-7ad8aa312c0b@kernel.dk>
Content-Language: en-US
From: Pavel Begunkov <asml.silence@gmail.com>
In-Reply-To: <3b59c209-374c-4d04-ad5d-7ad8aa312c0b@kernel.dk>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit

On 3/28/25 16:34, Jens Axboe wrote:
> On 3/28/25 9:02 AM, Pavel Begunkov wrote:
>> On 3/28/25 14:30, Jens Axboe wrote:
>>> On 3/28/25 8:27 AM, Stefan Metzmacher wrote:
>>>> Hi Jens,
>>>>
>>>> while playing with the kernel QUIC driver [1],
>>>> I noticed it does a lot of getsockopt() and setsockopt()
>>>> calls to sync the required state into and out of the kernel.
>>>>
>>>> My long term plan is to let the userspace quic handshake logic
>>>> work with SOCKET_URING_OP_GETSOCKOPT and SOCKET_URING_OP_SETSOCKOPT.
>>>>
>>>> The used level is SOL_QUIC and that won't work
>>>> as io_uring_cmd_getsockopt() has a restriction to
>>>> SOL_SOCKET, while there's no restriction in
>>>> io_uring_cmd_setsockopt().
>>>>
>>>> What's the reason to have that restriction?
>>>> And why is it only for the get path and not
>>>> the set path?
>>>
>>> There's absolutely no reason for that, looks like a pure oversight?!
>>
>> Cc Breno, he can explain better, but IIRC that's because most
>> of set/get sockopt options expect user pointers to be passed in,
>> and io_uring wants to use kernel memory. It's plumbed for
>> SOL_SOCKET with sockptr_t, but there was a push back against
>> converting the rest.
> 
> Gah yes, now I remember. What's pretty annoying though, as it leaves the
> get/setsockopt parts less useful than they should be, compared to the
> regular syscalls.
> 
> Did we ever ponder ways of getting this sorted out on the net side?

I remember Breno looking at several different options.

Breno, can you remind me, why can't we convert ->getsockopt to
take a normal kernel ptr for length while passing a user ptr
for value as before?

-- 
Pavel Begunkov