Received: by 2002:a6b:500f:0:0:0:0:0 with SMTP id e15csp6402297iob; Tue, 10 May 2022 18:23:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxtncbX3BhP/jNhUtIIJPfDZp5N22rLN5cTqwnNOWTy/aL3v/R9WJnBKlPTedkVFLQGRUvu X-Received: by 2002:a17:902:d48d:b0:15e:a480:78b2 with SMTP id c13-20020a170902d48d00b0015ea48078b2mr23147128plg.19.1652232237870; Tue, 10 May 2022 18:23:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1652232237; cv=none; d=google.com; s=arc-20160816; b=P9Rz3UHmduntEu+SxQO3D5l5SQNcc3C+DIh7qCPMpCOQ7nxTuz0oFnEEjk4TI0mmml WZ9kLNFZZM/E8A8btojxRn7DDVb0NA1bU2msw7LPkYJR/FUp8IiVUUkH7Zs5S+VZy54v VejyEKHeE5dlHeBnOn5oFRfX4Y0gpZaBpkGgymhRD6GUuX2Lk/L4V3lYxNR62lkjxFet R8zJMet8S+QAKspYfNKDwviHwE+a1VGnmSAX5h03LRbnaASFlgnSzbV3DWtLoXd2Hq6b LOZVGbZoROZ54Q6bl638wiU8PRfH04ollmr7kWbbQz6Kno37d7/OgG/RTgkTrurvduKG Y8gg== 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 :user-agent:references:in-reply-to:message-id:date:subject:cc:to :from:dkim-signature; bh=6yaRqWkwa1nfqzHsp06wMgFGAtGATgseCgCiuGa1uDc=; b=wvpzR2v7r4BpTGPLEADMgjX5R6BTL5dRMnRP4V6Jx2P1cjqhDZlloHe0uWBz+aRQBc TRwdCWsVO+QUrV94T8UmLFLEwkahg4+oGu9knUtl+wxy62PCExbdU9uoxgGbaaXOrlAc Yplg77irgJtlrqDvJ0MihUmtfVqxx9PYkqgF/KgEt0j6o1md8UXmtu5n3cH4BQRexMcy gdWIl4rVLDhkT9ZAJ3TzUCf5spi8MvdeDak5+KtmHwxMEu4Uiek2e3Dj0GpdvxvzX8cj a99Y5j8O3qJwfOaHBQTtMFGd2A45p3HzTUS8JTY90V6hvvHlLYUmoMjSxg66dPbvGhj9 3NjQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@linuxfoundation.org header.s=korg header.b="xOe/q7B3"; 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=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id ip6-20020a17090b314600b001d27a7d1737si1048295pjb.1.2022.05.10.18.23.41; Tue, 10 May 2022 18:23: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=@linuxfoundation.org header.s=korg header.b="xOe/q7B3"; 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=NONE sp=NONE dis=NONE) header.from=linuxfoundation.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1344191AbiEJOaY (ORCPT + 99 others); Tue, 10 May 2022 10:30:24 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43934 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S243915AbiEJOAp (ORCPT ); Tue, 10 May 2022 10:00:45 -0400 Received: from dfw.source.kernel.org (dfw.source.kernel.org [139.178.84.217]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6F9322DE58A; Tue, 10 May 2022 06:40:00 -0700 (PDT) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 41BD7617E4; Tue, 10 May 2022 13:40:00 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id 4311DC385C6; Tue, 10 May 2022 13:39:59 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=linuxfoundation.org; s=korg; t=1652189999; bh=X0ixFeNEvURfQKTkFaXnL+ELjrFBVzXxY/dWtVPiXhY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=xOe/q7B3Z55x7d9z0HdaOt7suPOx0BE5FIuOvzwgbLk5N8SEAYykXGZplkFqEBzT5 xDU41GnfUQBi//Ng53TWJUa22YYHAi4q2wCugjjHdBpQqj+hLch/5EvzqLxulM8xLV D2G6Y37kWc/Doc96MQLY8Oju+VWYZ4VQvfeSf2l0= From: Greg Kroah-Hartman To: linux-kernel@vger.kernel.org Cc: Greg Kroah-Hartman , stable@vger.kernel.org, Marc Dionne , David Howells , Xin Long , Vadim Fedorenko , "David S. Miller" , linux-afs@lists.infradead.org Subject: [PATCH 5.17 097/140] rxrpc: Enable IPv6 checksums on transport socket Date: Tue, 10 May 2022 15:08:07 +0200 Message-Id: <20220510130744.380429390@linuxfoundation.org> X-Mailer: git-send-email 2.36.1 In-Reply-To: <20220510130741.600270947@linuxfoundation.org> References: <20220510130741.600270947@linuxfoundation.org> User-Agent: quilt/0.66 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-7.7 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_HI, SPF_HELO_NONE,SPF_PASS,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 From: David Howells commit 39cb9faa5d46d0d0694f4b594ef905f517600c8e upstream. AF_RXRPC doesn't currently enable IPv6 UDP Tx checksums on the transport socket it opens and the checksums in the packets it generates end up 0. It probably should also enable IPv6 UDP Rx checksums and IPv4 UDP checksums. The latter only seem to be applied if the socket family is AF_INET and don't seem to apply if it's AF_INET6. IPv4 packets from an IPv6 socket seem to have checksums anyway. What seems to have happened is that the inet_inv_convert_csum() call didn't get converted to the appropriate udp_port_cfg parameters - and udp_sock_create() disables checksums unless explicitly told not too. Fix this by enabling the three udp_port_cfg checksum options. Fixes: 1a9b86c9fd95 ("rxrpc: use udp tunnel APIs instead of open code in rxrpc_open_socket") Reported-by: Marc Dionne Signed-off-by: David Howells Reviewed-by: Xin Long Reviewed-by: Marc Dionne cc: Vadim Fedorenko cc: David S. Miller cc: linux-afs@lists.infradead.org Signed-off-by: David S. Miller Signed-off-by: Greg Kroah-Hartman --- net/rxrpc/local_object.c | 3 +++ 1 file changed, 3 insertions(+) --- a/net/rxrpc/local_object.c +++ b/net/rxrpc/local_object.c @@ -117,6 +117,7 @@ static int rxrpc_open_socket(struct rxrp local, srx->transport_type, srx->transport.family); udp_conf.family = srx->transport.family; + udp_conf.use_udp_checksums = true; if (udp_conf.family == AF_INET) { udp_conf.local_ip = srx->transport.sin.sin_addr; udp_conf.local_udp_port = srx->transport.sin.sin_port; @@ -124,6 +125,8 @@ static int rxrpc_open_socket(struct rxrp } else { udp_conf.local_ip6 = srx->transport.sin6.sin6_addr; udp_conf.local_udp_port = srx->transport.sin6.sin6_port; + udp_conf.use_udp6_tx_checksums = true; + udp_conf.use_udp6_rx_checksums = true; #endif } ret = udp_sock_create(net, &udp_conf, &local->socket);