From patchwork Sat Jul 1 06:23:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arseniy Krasnov X-Patchwork-Id: 114983 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:994d:0:b0:3d9:f83d:47d9 with SMTP id k13csp10871142vqr; Fri, 30 Jun 2023 23:53:57 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7hP6oiiPUhXLXxn6mOkJYao+5v7JzmOAb6atJl+c73CPInG5k3a+o4+WRg+4Y1nVI7d/Bu X-Received: by 2002:a05:6808:f8f:b0:3a3:6f89:5de1 with SMTP id o15-20020a0568080f8f00b003a36f895de1mr6323889oiw.49.1688194437368; Fri, 30 Jun 2023 23:53:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688194437; cv=none; d=google.com; s=arc-20160816; b=nc95jJe2eGtXOjypp8y5ZtNBKT9pq9+EEm2wlMjNeX3wRhC6q/ngcKip/j2e8dye9j 3VQ1Xrjx3rQ22YNyob3kYIltdlWtilx7/t8GVGYyPxo1/h9mlwRMUigjOPOZ6dUrV/oT IOtSb7JMnnsonmmR8nYVDTG7DfUAXlwAGCnpOyqGSln6MzW4Tv5daQ9iY6klIH0YrLmJ Mfeuro8gdvpbsl60gsS81OzAwWIhYyIIPMeyKze0xLZDoZk3dFOEXHcReBjMmGK1tIJ6 BNp/p4ZV6owxVt25aJqlvnlgxV9E5XXay9Qp4uu/dwP2JXLZSVgF8m0pcGpFvtcPRTmF WClA== 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:dkim-filter; bh=UprXoHq7Bqi5L60D4m4n3ECZ9Zuve/BBPpn+ZPhJids=; fh=PzWIi6JmlJNekYqVy23433fKO6OE4+V62ucRx731HUI=; b=kU742Y6W3PFAoMmFi+ZWyJwgPqqNRqmiE6Q2XHsFwnBW/8+zbEU9UWLqX+Jsp4eYo1 Tn9Tvog6jBJQ7FM7wzt1+JZg0DRGObvSSM9soPzLMzv5Re4QDAABg9ufCvPo8S425VVI Xj7f9QHTMC578ajMJ1d8dRwbEd3iC863WgUgdkrPfDyhdOaivGAwf0fujWP1LRTWa2z4 TKkqJeTU67jJTA+b8v7ehnxg/C6vKFwItaYrGt+68o968Lc05m1c4mn/3cvs6wtVe5TH QMxBxUl4TMlk51V2W1eV5/jqs+FJYEbeAWPGFAxPUDODJ3ADOMKXJrHs6PuP2BjIeGTa 2Kww== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@sberdevices.ru header.s=mail header.b=l1fIFjg0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=sberdevices.ru Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id br12-20020a056a00440c00b0063b8a054e06si12701458pfb.259.2023.06.30.23.53.42; Fri, 30 Jun 2023 23:53:57 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@sberdevices.ru header.s=mail header.b=l1fIFjg0; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=sberdevices.ru Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230086AbjGAGjl (ORCPT + 99 others); Sat, 1 Jul 2023 02:39:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:39942 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229890AbjGAGjW (ORCPT ); Sat, 1 Jul 2023 02:39:22 -0400 Received: from mx1.sberdevices.ru (mx2.sberdevices.ru [45.89.224.132]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E03F44237; Fri, 30 Jun 2023 23:39:13 -0700 (PDT) Received: from p-infra-ksmg-sc-msk02 (localhost [127.0.0.1]) by mx1.sberdevices.ru (Postfix) with ESMTP id C676812000E; Sat, 1 Jul 2023 09:28:44 +0300 (MSK) DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.sberdevices.ru C676812000E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sberdevices.ru; s=mail; t=1688192924; bh=UprXoHq7Bqi5L60D4m4n3ECZ9Zuve/BBPpn+ZPhJids=; h=From:To:Subject:Date:Message-ID:MIME-Version:Content-Type:From; b=l1fIFjg0bsJNU8nXttK7I4WaCQhvF7u05F5ojLkYPS9hlepzoGV+7p9G4WEr2Gd1f UWoGSnj3vJs85PBvdYEJ3POiPFc71m+MxKRMWLhk1ESiOJTGmLDs/uTxJKvyP0WJb1 iodDilyoFW8/gnEGRFy6ssfduFkiTan+wWA5gQnIjJIYdewHeCvQovw8q6L+unj/B0 Iev6nWrOOK4GbVY8zCt4LQTplv8PBdvnOtl6j5MLR40/qgjnD6yZmUPqZbyvsDnZ+v n/rW/YZnQ+DdGhqhKPCzvHgaUoeFT1b0tOrUWcrVhDRYlJmHYGfP50Yf7dl6NdrzD1 a1zdi0o4E4P8w== Received: from p-i-exch-sc-m01.sberdevices.ru (p-i-exch-sc-m01.sberdevices.ru [172.16.192.107]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mx1.sberdevices.ru (Postfix) with ESMTPS; Sat, 1 Jul 2023 09:28:43 +0300 (MSK) Received: from localhost.localdomain (100.64.160.123) by p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1118.30; Sat, 1 Jul 2023 09:28:21 +0300 From: Arseniy Krasnov To: Stefan Hajnoczi , Stefano Garzarella , "David S. Miller" , Eric Dumazet , Jakub Kicinski , Paolo Abeni , "Michael S. Tsirkin" , Jason Wang , Bobby Eshleman CC: , , , , , , , Arseniy Krasnov Subject: [RFC PATCH v5 07/17] vsock: read from socket's error queue Date: Sat, 1 Jul 2023 09:23:00 +0300 Message-ID: <20230701062310.3397129-8-AVKrasnov@sberdevices.ru> X-Mailer: git-send-email 2.35.0 In-Reply-To: <20230701062310.3397129-1-AVKrasnov@sberdevices.ru> References: <20230701062310.3397129-1-AVKrasnov@sberdevices.ru> MIME-Version: 1.0 X-Originating-IP: [100.64.160.123] X-ClientProxiedBy: p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) To p-i-exch-sc-m01.sberdevices.ru (172.16.192.107) X-KSMG-Rule-ID: 10 X-KSMG-Message-Action: clean X-KSMG-AntiSpam-Lua-Profiles: 178380 [Jun 30 2023] X-KSMG-AntiSpam-Version: 5.9.59.0 X-KSMG-AntiSpam-Envelope-From: AVKrasnov@sberdevices.ru X-KSMG-AntiSpam-Rate: 0 X-KSMG-AntiSpam-Status: not_detected X-KSMG-AntiSpam-Method: none X-KSMG-AntiSpam-Auth: dkim=none X-KSMG-AntiSpam-Info: LuaCore: 517 517 b0056c19d8e10afbb16cb7aad7258dedb0179a79, {Tracking_from_domain_doesnt_match_to}, sberdevices.ru:5.0.1,7.1.1;d41d8cd98f00b204e9800998ecf8427e.com:7.1.1;p-i-exch-sc-m01.sberdevices.ru:5.0.1,7.1.1;127.0.0.199:7.1.2;100.64.160.123:7.1.2, FromAlignment: s, {Tracking_white_helo}, ApMailHostAddress: 100.64.160.123 X-MS-Exchange-Organization-SCL: -1 X-KSMG-AntiSpam-Interceptor-Info: scan successful X-KSMG-AntiPhishing: Clean X-KSMG-LinksScanning: Clean X-KSMG-AntiVirus: Kaspersky Secure Mail Gateway, version 2.0.1.6960, bases: 2023/07/01 00:58:00 #21597365 X-KSMG-AntiVirus-Status: Clean, skipped X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_NONE, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED 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-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770200170554369013?= X-GMAIL-MSGID: =?utf-8?q?1770200170554369013?= This adds handling of MSG_ERRQUEUE input flag in receive call. This flag is used to read socket's error queue instead of data queue. Possible scenario of error queue usage is receiving completions for transmission with MSG_ZEROCOPY flag. This patch also adds 'SOL_VSOCK' define. Signed-off-by: Arseniy Krasnov --- Changelog: v4 -> v5: * Update commit message by adding sentence that 'SOL_VSOCK' is also added. include/linux/socket.h | 1 + net/vmw_vsock/af_vsock.c | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/include/linux/socket.h b/include/linux/socket.h index bd1cc3238851..d79efd026880 100644 --- a/include/linux/socket.h +++ b/include/linux/socket.h @@ -382,6 +382,7 @@ struct ucred { #define SOL_MPTCP 284 #define SOL_MCTP 285 #define SOL_SMC 286 +#define SOL_VSOCK 287 /* IPX options */ #define IPX_TYPE 1 diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 45fd20c4ed50..07803d9fbf6d 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -110,6 +110,7 @@ #include #include #include +#include static int __vsock_bind(struct sock *sk, struct sockaddr_vm *addr); static void vsock_sk_destruct(struct sock *sk); @@ -2135,6 +2136,10 @@ vsock_connectible_recvmsg(struct socket *sock, struct msghdr *msg, size_t len, int err; sk = sock->sk; + + if (unlikely(flags & MSG_ERRQUEUE)) + return sock_recv_errqueue(sk, msg, len, SOL_VSOCK, 0); + vsk = vsock_sk(sk); err = 0;