Received: by 2002:a05:6602:2086:0:0:0:0 with SMTP id a6csp4383703ioa; Wed, 27 Apr 2022 02:35:04 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzwNskAtgtXY25tfp2/mr99PCaQmB6/n29+x+N6HRhA9Cxt287ud7MGj1kmGbO/Gsi8cYMw X-Received: by 2002:a17:902:ce01:b0:15c:eedb:f00c with SMTP id k1-20020a170902ce0100b0015ceedbf00cmr19808051plg.122.1651052103983; Wed, 27 Apr 2022 02:35:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651052103; cv=none; d=google.com; s=arc-20160816; b=yEs48+9J+tAkk0tmlyWUovpA+R2pNrDh4/9NzAhndvOyq050mTF+j0cDraTowMFI7p 2ZD/Mc/x9IMA8mWHNcmCXXaRwv41Juk5Ya5/So/4493D3b+sEUyMQt6RqZF0SDtIXQr6 H/G73EqgpS8VFvmoo3fmMa5OycM9iqAjKMP64hB5BymRQGT2gLJ3SO5AZWucXV9e4i4g RNY4tKoPgobV3C//DcXeeCINaJPzWl/Hi4zg62CpqaMsWWZRNY0GnNn+VZ3M9QARLWxe 63Wada/ytZTPuuKjIOo+u3TlRyO6aaCOmO73+WLCnIdl0unfqEcYa7yRkIGY7g+fZ24h O+sw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from; bh=FzckNonWkrkNMPZl0OQjxl5CVS4ObuVlS8XriNIjfVI=; b=IOkBs9YJ5XuVM6AaWP4nnTh3JXVNGksW+M4MLzDSOuYHBsV44kCuDICiWNM0ZfQVau ssgrQBzRCKstTKFZjOkgCAvOHfIX4hGC3k7O6GEhRcsFz/U+1pHK2Fjj6tpNYXYfal89 qIokD225mSlvqX//uPtnEFqiIuL/0C293esDGH2yt7Y+bYxwzJmSUTm8sWHMn0sbrgVU 9LXA6esu2mHOCui0tzTjGJbs4JPek46w5e8c6bodGO0OCrPoweIw4ne5u1+heXQjH+Te w5/Hd4WoJWLl0BpkqqWU/FiIJyw6GHsMoerGwe9xlTtiPhlfrBk764WUU0ioJBF6J2+Q Rp1A== ARC-Authentication-Results: i=1; mx.google.com; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from lindbergh.monkeyblade.net (lindbergh.monkeyblade.net. [23.128.96.19]) by mx.google.com with ESMTPS id w10-20020a63c10a000000b003abaf9f081bsi908298pgf.752.2022.04.27.02.35.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Apr 2022 02:35:03 -0700 (PDT) Received-SPF: softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) client-ip=23.128.96.19; Authentication-Results: mx.google.com; spf=softfail (google.com: domain of transitioning linux-kernel-owner@vger.kernel.org does not designate 23.128.96.19 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 3769826887B; Wed, 27 Apr 2022 02:14:41 -0700 (PDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1358438AbiD0G4b (ORCPT + 99 others); Wed, 27 Apr 2022 02:56:31 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:46280 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1358378AbiD0G4V (ORCPT ); Wed, 27 Apr 2022 02:56:21 -0400 Received: from 1wt.eu (wtarreau.pck.nerim.net [62.212.114.60]) by lindbergh.monkeyblade.net (Postfix) with ESMTP id 4556D50B34; Tue, 26 Apr 2022 23:53:10 -0700 (PDT) Received: (from willy@localhost) by pcw.home.local (8.15.2/8.15.2/Submit) id 23R6qoCf002125; Wed, 27 Apr 2022 08:52:50 +0200 From: Willy Tarreau To: netdev@vger.kernel.org Cc: David Miller , Jakub Kicinski , Eric Dumazet , Moshe Kol , Yossi Gilad , Amit Klein , linux-kernel@vger.kernel.org, Willy Tarreau , "Jason A . Donenfeld" Subject: [PATCH net 1/7] secure_seq: return the full 64-bit of the siphash Date: Wed, 27 Apr 2022 08:52:27 +0200 Message-Id: <20220427065233.2075-2-w@1wt.eu> X-Mailer: git-send-email 2.17.5 In-Reply-To: <20220427065233.2075-1-w@1wt.eu> References: <20220427065233.2075-1-w@1wt.eu> X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,RDNS_NONE, SPF_HELO_NONE autolearn=no 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 SipHash replaced MD5 in secure_ipv4_port_ephemeral() via commit 7cd23e5300c1 ("secure_seq: use SipHash in place of MD5"), but the output remained truncated to 32-bit only. In order to exploit more bits from the hash, let's make the function return the full 64-bit of siphash_3u32(). Cc: Jason A. Donenfeld Cc: Moshe Kol Cc: Yossi Gilad Cc: Amit Klein Reviewed-by: Eric Dumazet Signed-off-by: Willy Tarreau --- include/net/inet_hashtables.h | 2 +- include/net/secure_seq.h | 2 +- net/core/secure_seq.c | 2 +- net/ipv4/inet_hashtables.c | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h index f72ec113ae56..98e1ec1a14f0 100644 --- a/include/net/inet_hashtables.h +++ b/include/net/inet_hashtables.h @@ -425,7 +425,7 @@ static inline void sk_rcv_saddr_set(struct sock *sk, __be32 addr) } int __inet_hash_connect(struct inet_timewait_death_row *death_row, - struct sock *sk, u32 port_offset, + struct sock *sk, u64 port_offset, int (*check_established)(struct inet_timewait_death_row *, struct sock *, __u16, struct inet_timewait_sock **)); diff --git a/include/net/secure_seq.h b/include/net/secure_seq.h index d7d2495f83c2..5cea9ed9c773 100644 --- a/include/net/secure_seq.h +++ b/include/net/secure_seq.h @@ -4,7 +4,7 @@ #include -u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport); +u64 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport); u32 secure_ipv6_port_ephemeral(const __be32 *saddr, const __be32 *daddr, __be16 dport); u32 secure_tcp_seq(__be32 saddr, __be32 daddr, diff --git a/net/core/secure_seq.c b/net/core/secure_seq.c index 9b8443774449..2cdd43a63f64 100644 --- a/net/core/secure_seq.c +++ b/net/core/secure_seq.c @@ -142,7 +142,7 @@ u32 secure_tcp_seq(__be32 saddr, __be32 daddr, } EXPORT_SYMBOL_GPL(secure_tcp_seq); -u32 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport) +u64 secure_ipv4_port_ephemeral(__be32 saddr, __be32 daddr, __be16 dport) { net_secret_init(); return siphash_3u32((__force u32)saddr, (__force u32)daddr, diff --git a/net/ipv4/inet_hashtables.c b/net/ipv4/inet_hashtables.c index 17440840a791..09cbad0488ca 100644 --- a/net/ipv4/inet_hashtables.c +++ b/net/ipv4/inet_hashtables.c @@ -504,7 +504,7 @@ static int __inet_check_established(struct inet_timewait_death_row *death_row, return -EADDRNOTAVAIL; } -static u32 inet_sk_port_offset(const struct sock *sk) +static u64 inet_sk_port_offset(const struct sock *sk) { const struct inet_sock *inet = inet_sk(sk); @@ -734,7 +734,7 @@ EXPORT_SYMBOL_GPL(inet_unhash); static u32 table_perturb[1 << INET_TABLE_PERTURB_SHIFT]; int __inet_hash_connect(struct inet_timewait_death_row *death_row, - struct sock *sk, u32 port_offset, + struct sock *sk, u64 port_offset, int (*check_established)(struct inet_timewait_death_row *, struct sock *, __u16, struct inet_timewait_sock **)) { @@ -859,7 +859,7 @@ int __inet_hash_connect(struct inet_timewait_death_row *death_row, int inet_hash_connect(struct inet_timewait_death_row *death_row, struct sock *sk) { - u32 port_offset = 0; + u64 port_offset = 0; if (!inet_sk(sk)->inet_num) port_offset = inet_sk_port_offset(sk); -- 2.17.5