All of lore.kernel.org
 help / color / mirror / Atom feed
From: kernel test robot <lkp@intel.com>
To: Willy Tarreau <w@1wt.eu>, netdev@vger.kernel.org
Cc: kbuild-all@lists.01.org, Jakub Kicinski <kuba@kernel.org>,
	Eric Dumazet <edumazet@google.com>,
	Moshe Kol <moshe.kol@mail.huji.ac.il>,
	Yossi Gilad <yossi.gilad@mail.huji.ac.il>,
	Amit Klein <aksecurity@gmail.com>,
	linux-kernel@vger.kernel.org, Willy Tarreau <w@1wt.eu>,
	"Jason A . Donenfeld" <Jason@zx2c4.com>
Subject: Re: [PATCH net 1/7] secure_seq: return the full 64-bit of the siphash
Date: Thu, 28 Apr 2022 09:59:39 +0800	[thread overview]
Message-ID: <202204280348.UBtfnU6Q-lkp@intel.com> (raw)
In-Reply-To: <20220427065233.2075-2-w@1wt.eu>

Hi Willy,

I love your patch! Yet something to improve:

[auto build test ERROR on net/master]

url:    https://github.com/intel-lab-lkp/linux/commits/Willy-Tarreau/insufficient-TCP-source-port-randomness/20220427-145651
base:   https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git 71cffebf6358a7f5031f5b208bbdc1cb4db6e539
config: i386-randconfig-a011-20220425 (https://download.01.org/0day-ci/archive/20220428/202204280348.UBtfnU6Q-lkp@intel.com/config)
compiler: gcc-11 (Debian 11.2.0-20) 11.2.0
reproduce (this is a W=1 build):
        # https://github.com/intel-lab-lkp/linux/commit/01b26e522b598adf346b809075880feab3dcdc08
        git remote add linux-review https://github.com/intel-lab-lkp/linux
        git fetch --no-tags linux-review Willy-Tarreau/insufficient-TCP-source-port-randomness/20220427-145651
        git checkout 01b26e522b598adf346b809075880feab3dcdc08
        # save the config file
        mkdir build_dir && cp config build_dir/.config
        make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>

All errors (new ones prefixed by >>):

   ld: net/ipv4/inet_hashtables.o: in function `__inet_hash_connect':
>> net/ipv4/inet_hashtables.c:780: undefined reference to `__umoddi3'


vim +780 net/ipv4/inet_hashtables.c

190cc82489f46f Eric Dumazet             2021-02-09  735  
5ee31fc1ecdcbc Pavel Emelyanov          2008-01-31  736  int __inet_hash_connect(struct inet_timewait_death_row *death_row,
01b26e522b598a Willy Tarreau            2022-04-27  737  		struct sock *sk, u64 port_offset,
5ee31fc1ecdcbc Pavel Emelyanov          2008-01-31  738  		int (*check_established)(struct inet_timewait_death_row *,
b4d6444ea3b50b Eric Dumazet             2015-03-18  739  			struct sock *, __u16, struct inet_timewait_sock **))
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  740  {
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  741  	struct inet_hashinfo *hinfo = death_row->hashinfo;
1580ab63fc9a03 Eric Dumazet             2016-02-11  742  	struct inet_timewait_sock *tw = NULL;
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  743  	struct inet_bind_hashbucket *head;
1580ab63fc9a03 Eric Dumazet             2016-02-11  744  	int port = inet_sk(sk)->inet_num;
3b1e0a655f8eba YOSHIFUJI Hideaki        2008-03-26  745  	struct net *net = sock_net(sk);
1580ab63fc9a03 Eric Dumazet             2016-02-11  746  	struct inet_bind_bucket *tb;
1580ab63fc9a03 Eric Dumazet             2016-02-11  747  	u32 remaining, offset;
1580ab63fc9a03 Eric Dumazet             2016-02-11  748  	int ret, i, low, high;
3c82a21f4320c8 Robert Shearman          2018-11-07  749  	int l3mdev;
190cc82489f46f Eric Dumazet             2021-02-09  750  	u32 index;
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  751  
1580ab63fc9a03 Eric Dumazet             2016-02-11  752  	if (port) {
1580ab63fc9a03 Eric Dumazet             2016-02-11  753  		head = &hinfo->bhash[inet_bhashfn(net, port,
1580ab63fc9a03 Eric Dumazet             2016-02-11  754  						  hinfo->bhash_size)];
1580ab63fc9a03 Eric Dumazet             2016-02-11  755  		tb = inet_csk(sk)->icsk_bind_hash;
1580ab63fc9a03 Eric Dumazet             2016-02-11  756  		spin_lock_bh(&head->lock);
1580ab63fc9a03 Eric Dumazet             2016-02-11  757  		if (sk_head(&tb->owners) == sk && !sk->sk_bind_node.next) {
01770a16616573 Ricardo Dias             2020-11-20  758  			inet_ehash_nolisten(sk, NULL, NULL);
1580ab63fc9a03 Eric Dumazet             2016-02-11  759  			spin_unlock_bh(&head->lock);
1580ab63fc9a03 Eric Dumazet             2016-02-11  760  			return 0;
1580ab63fc9a03 Eric Dumazet             2016-02-11  761  		}
1580ab63fc9a03 Eric Dumazet             2016-02-11  762  		spin_unlock(&head->lock);
1580ab63fc9a03 Eric Dumazet             2016-02-11  763  		/* No definite answer... Walk to established hash table */
1580ab63fc9a03 Eric Dumazet             2016-02-11  764  		ret = check_established(death_row, sk, port, NULL);
1580ab63fc9a03 Eric Dumazet             2016-02-11  765  		local_bh_enable();
1580ab63fc9a03 Eric Dumazet             2016-02-11  766  		return ret;
1580ab63fc9a03 Eric Dumazet             2016-02-11  767  	}
227b60f5102cda Stephen Hemminger        2007-10-10  768  
3c82a21f4320c8 Robert Shearman          2018-11-07  769  	l3mdev = inet_sk_bound_l3mdev(sk);
3c82a21f4320c8 Robert Shearman          2018-11-07  770  
1580ab63fc9a03 Eric Dumazet             2016-02-11  771  	inet_get_local_port_range(net, &low, &high);
1580ab63fc9a03 Eric Dumazet             2016-02-11  772  	high++; /* [32768, 60999] -> [32768, 61000[ */
1580ab63fc9a03 Eric Dumazet             2016-02-11  773  	remaining = high - low;
1580ab63fc9a03 Eric Dumazet             2016-02-11  774  	if (likely(remaining > 1))
1580ab63fc9a03 Eric Dumazet             2016-02-11  775  		remaining &= ~1U;
1580ab63fc9a03 Eric Dumazet             2016-02-11  776  
190cc82489f46f Eric Dumazet             2021-02-09  777  	net_get_random_once(table_perturb, sizeof(table_perturb));
190cc82489f46f Eric Dumazet             2021-02-09  778  	index = hash_32(port_offset, INET_TABLE_PERTURB_SHIFT);
190cc82489f46f Eric Dumazet             2021-02-09  779  
190cc82489f46f Eric Dumazet             2021-02-09 @780  	offset = (READ_ONCE(table_perturb[index]) + port_offset) % remaining;
1580ab63fc9a03 Eric Dumazet             2016-02-11  781  	/* In first pass we try ports of @low parity.
1580ab63fc9a03 Eric Dumazet             2016-02-11  782  	 * inet_csk_get_port() does the opposite choice.
07f4c90062f8fc Eric Dumazet             2015-05-24  783  	 */
1580ab63fc9a03 Eric Dumazet             2016-02-11  784  	offset &= ~1U;
1580ab63fc9a03 Eric Dumazet             2016-02-11  785  other_parity_scan:
1580ab63fc9a03 Eric Dumazet             2016-02-11  786  	port = low + offset;
1580ab63fc9a03 Eric Dumazet             2016-02-11  787  	for (i = 0; i < remaining; i += 2, port += 2) {
1580ab63fc9a03 Eric Dumazet             2016-02-11  788  		if (unlikely(port >= high))
1580ab63fc9a03 Eric Dumazet             2016-02-11  789  			port -= remaining;
122ff243f5f104 WANG Cong                2014-05-12  790  		if (inet_is_local_reserved_port(net, port))
e3826f1e946e7d Amerigo Wang             2010-05-05  791  			continue;
7f635ab71eef8d Pavel Emelyanov          2008-06-16  792  		head = &hinfo->bhash[inet_bhashfn(net, port,
7f635ab71eef8d Pavel Emelyanov          2008-06-16  793  						  hinfo->bhash_size)];
1580ab63fc9a03 Eric Dumazet             2016-02-11  794  		spin_lock_bh(&head->lock);
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  795  
1580ab63fc9a03 Eric Dumazet             2016-02-11  796  		/* Does not bother with rcv_saddr checks, because
1580ab63fc9a03 Eric Dumazet             2016-02-11  797  		 * the established check is already unique enough.
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  798  		 */
b67bfe0d42cac5 Sasha Levin              2013-02-27  799  		inet_bind_bucket_for_each(tb, &head->chain) {
3c82a21f4320c8 Robert Shearman          2018-11-07  800  			if (net_eq(ib_net(tb), net) && tb->l3mdev == l3mdev &&
3c82a21f4320c8 Robert Shearman          2018-11-07  801  			    tb->port == port) {
da5e36308d9f71 Tom Herbert              2013-01-22  802  				if (tb->fastreuse >= 0 ||
da5e36308d9f71 Tom Herbert              2013-01-22  803  				    tb->fastreuseport >= 0)
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  804  					goto next_port;
a9d8f9110d7e95 Evgeniy Polyakov         2009-01-19  805  				WARN_ON(hlist_empty(&tb->owners));
5ee31fc1ecdcbc Pavel Emelyanov          2008-01-31  806  				if (!check_established(death_row, sk,
5ee31fc1ecdcbc Pavel Emelyanov          2008-01-31  807  						       port, &tw))
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  808  					goto ok;
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  809  				goto next_port;
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  810  			}
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  811  		}
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  812  
941b1d22cc035a Pavel Emelyanov          2008-01-31  813  		tb = inet_bind_bucket_create(hinfo->bind_bucket_cachep,
3c82a21f4320c8 Robert Shearman          2018-11-07  814  					     net, head, port, l3mdev);
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  815  		if (!tb) {
1580ab63fc9a03 Eric Dumazet             2016-02-11  816  			spin_unlock_bh(&head->lock);
1580ab63fc9a03 Eric Dumazet             2016-02-11  817  			return -ENOMEM;
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  818  		}
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  819  		tb->fastreuse = -1;
da5e36308d9f71 Tom Herbert              2013-01-22  820  		tb->fastreuseport = -1;
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  821  		goto ok;
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  822  next_port:
1580ab63fc9a03 Eric Dumazet             2016-02-11  823  		spin_unlock_bh(&head->lock);
1580ab63fc9a03 Eric Dumazet             2016-02-11  824  		cond_resched();
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  825  	}
1580ab63fc9a03 Eric Dumazet             2016-02-11  826  
1580ab63fc9a03 Eric Dumazet             2016-02-11  827  	offset++;
1580ab63fc9a03 Eric Dumazet             2016-02-11  828  	if ((offset & 1) && remaining > 1)
1580ab63fc9a03 Eric Dumazet             2016-02-11  829  		goto other_parity_scan;
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  830  
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  831  	return -EADDRNOTAVAIL;
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  832  
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  833  ok:
c579bd1b4021c4 Eric Dumazet             2021-02-09  834  	/* If our first attempt found a candidate, skip next candidate
c579bd1b4021c4 Eric Dumazet             2021-02-09  835  	 * in 1/16 of cases to add some noise.
c579bd1b4021c4 Eric Dumazet             2021-02-09  836  	 */
c579bd1b4021c4 Eric Dumazet             2021-02-09  837  	if (!i && !(prandom_u32() % 16))
c579bd1b4021c4 Eric Dumazet             2021-02-09  838  		i = 2;
190cc82489f46f Eric Dumazet             2021-02-09  839  	WRITE_ONCE(table_perturb[index], READ_ONCE(table_perturb[index]) + i + 2);
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  840  
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  841  	/* Head lock still held and bh's disabled */
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  842  	inet_bind_hash(sk, tb, port);
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  843  	if (sk_unhashed(sk)) {
c720c7e8383aff Eric Dumazet             2009-10-15  844  		inet_sk(sk)->inet_sport = htons(port);
01770a16616573 Ricardo Dias             2020-11-20  845  		inet_ehash_nolisten(sk, (struct sock *)tw, NULL);
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  846  	}
3cdaedae635b17 Eric Dumazet             2009-12-04  847  	if (tw)
fc01538f9fb755 Eric Dumazet             2015-07-08  848  		inet_twsk_bind_unhash(tw, hinfo);
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  849  	spin_unlock(&head->lock);
dbe7faa4045ea8 Eric Dumazet             2015-07-08  850  	if (tw)
dbe7faa4045ea8 Eric Dumazet             2015-07-08  851  		inet_twsk_deschedule_put(tw);
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  852  	local_bh_enable();
1580ab63fc9a03 Eric Dumazet             2016-02-11  853  	return 0;
a7f5e7f164788a Arnaldo Carvalho de Melo 2005-12-13  854  }
5ee31fc1ecdcbc Pavel Emelyanov          2008-01-31  855  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

  parent reply	other threads:[~2022-04-28  2:00 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-27  6:52 [PATCH net 0/7] insufficient TCP source port randomness Willy Tarreau
2022-04-27  6:52 ` [PATCH net 1/7] secure_seq: return the full 64-bit of the siphash Willy Tarreau
2022-04-27  9:56   ` kernel test robot
2022-04-27 10:07     ` Willy Tarreau
2022-04-27 10:07       ` Willy Tarreau
2022-04-27 16:35       ` Willy Tarreau
2022-04-27 16:35         ` Willy Tarreau
2022-04-27 16:50         ` Eric Dumazet
2022-04-27 16:50           ` Eric Dumazet
2022-04-27 16:56           ` Willy Tarreau
2022-04-27 16:56             ` Willy Tarreau
2022-04-27 17:18   ` Jason A. Donenfeld
2022-04-27 20:19     ` Willy Tarreau
2022-04-28  1:59   ` kernel test robot [this message]
2022-04-27  6:52 ` [PATCH net 2/7] tcp: use different parts of the port_offset for index and offset Willy Tarreau
2022-04-27  6:52 ` [PATCH net 3/7] tcp: resalt the secret every 10 seconds Willy Tarreau
2022-04-27 15:56   ` Stephen Hemminger
2022-04-27 16:21     ` Willy Tarreau
2022-04-27  6:52 ` [PATCH net 4/7] tcp: add small random increments to the source port Willy Tarreau
2022-04-27  6:52 ` [PATCH net 5/7] tcp: dynamically allocate the perturb table used by source ports Willy Tarreau
2022-04-27  6:52 ` [PATCH net 6/7] tcp: increase source port perturb table to 2^16 Willy Tarreau
2022-04-27  8:07   ` David Laight
2022-04-27  8:19     ` Willy Tarreau
2022-04-27  6:52 ` [PATCH net 7/7] tcp: drop the hash_32() part from the index calculation Willy Tarreau

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=202204280348.UBtfnU6Q-lkp@intel.com \
    --to=lkp@intel.com \
    --cc=Jason@zx2c4.com \
    --cc=aksecurity@gmail.com \
    --cc=edumazet@google.com \
    --cc=kbuild-all@lists.01.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=moshe.kol@mail.huji.ac.il \
    --cc=netdev@vger.kernel.org \
    --cc=w@1wt.eu \
    --cc=yossi.gilad@mail.huji.ac.il \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.