All of lore.kernel.org
 help / color / mirror / Atom feed
* Re: [PATCH v2 bpf-next 2/5] bpf: af_unix: Use batching algorithm in bpf unix iter.
@ 2022-01-13 17:20 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-01-13 17:20 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 4336 bytes --]

CC: kbuild-all(a)lists.01.org
In-Reply-To: <20220113002849.4384-3-kuniyu@amazon.co.jp>
References: <20220113002849.4384-3-kuniyu@amazon.co.jp>
TO: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
TO: "David S. Miller" <davem@davemloft.net>
CC: netdev(a)vger.kernel.org
TO: Jakub Kicinski <kuba@kernel.org>
TO: Alexei Starovoitov <ast@kernel.org>
TO: Daniel Borkmann <daniel@iogearbox.net>
TO: Andrii Nakryiko <andrii@kernel.org>
CC: Martin KaFai Lau <kafai@fb.com>
CC: Benjamin Herrenschmidt <benh@amazon.com>
CC: Kuniyuki Iwashima <kuniyu@amazon.co.jp>
CC: bpf(a)vger.kernel.org

Hi Kuniyuki,

Thank you for the patch! Perhaps something to improve:

[auto build test WARNING on bpf-next/master]

url:    https://github.com/0day-ci/linux/commits/Kuniyuki-Iwashima/bpf-Batching-iter-for-AF_UNIX-sockets/20220113-083151
base:   https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master
:::::: branch date: 17 hours ago
:::::: commit date: 17 hours ago
config: arm-randconfig-m031-20220113 (https://download.01.org/0day-ci/archive/20220114/202201140137.dztxZIjJ-lkp(a)intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.2.0

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

New smatch warnings:
net/unix/af_unix.c:3464 bpf_iter_unix_batch() warn: sleeping in atomic context

Old smatch warnings:
net/unix/af_unix.c:1586 unix_stream_connect() warn: variable dereferenced before check 'other' (see line 1469)
net/unix/af_unix.c:2652 manage_oob() warn: returning freed memory 'skb'

vim +3464 net/unix/af_unix.c

a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3436  
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3437  static struct sock *bpf_iter_unix_batch(struct seq_file *seq,
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3438  					loff_t *pos)
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3439  {
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3440  	struct bpf_unix_iter_state *iter = seq->private;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3441  	unsigned int expected;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3442  	bool resized = false;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3443  	struct sock *sk;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3444  
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3445  	if (iter->st_bucket_done)
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3446  		*pos = set_bucket_offset(get_bucket(*pos) + 1, 1);
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3447  
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3448  again:
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3449  	/* Get a new batch */
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3450  	iter->cur_sk = 0;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3451  	iter->end_sk = 0;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3452  
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3453  	sk = unix_get_first(seq, pos);
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3454  	if (!sk)
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3455  		return NULL; /* Done */
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3456  
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3457  	expected = bpf_iter_unix_hold_batch(seq, sk);
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3458  
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3459  	if (iter->end_sk == expected) {
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3460  		iter->st_bucket_done = true;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3461  		return sk;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3462  	}
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3463  
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13 @3464  	if (!resized && !bpf_iter_unix_realloc_batch(iter, expected * 3 / 2)) {
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3465  		resized = true;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3466  		goto again;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3467  	}
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3468  
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3469  	return sk;
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3470  }
a8f4be17743b80 Kuniyuki Iwashima 2022-01-13  3471  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 2+ messages in thread
* [PATCH v2 bpf-next 0/5] bpf: Batching iter for AF_UNIX sockets.
@ 2022-01-13  0:28 Kuniyuki Iwashima
  2022-01-13  0:28 ` [PATCH v2 bpf-next 2/5] bpf: af_unix: Use batching algorithm in bpf unix iter Kuniyuki Iwashima
  0 siblings, 1 reply; 2+ messages in thread
From: Kuniyuki Iwashima @ 2022-01-13  0:28 UTC (permalink / raw)
  To: David S. Miller, Jakub Kicinski, Alexei Starovoitov,
	Daniel Borkmann, Andrii Nakryiko
  Cc: Martin KaFai Lau, Benjamin Herrenschmidt, Kuniyuki Iwashima,
	Kuniyuki Iwashima, bpf, netdev

Last year the commit afd20b9290e1 ("af_unix: Replace the big lock with
small locks.") landed on bpf-next.  Now we can use a batching algorithm
for AF_UNIX bpf iter as TCP bpf iter.


Changelog:
- Add the 1st patch.
- Call unix_get_first() in .start()/.next() to always acquire a lock in
  each iteration in the 2nd patch.


Kuniyuki Iwashima (5):
  af_unix: Refactor unix_next_socket().
  bpf: af_unix: Use batching algorithm in bpf unix iter.
  bpf: Support bpf_(get|set)sockopt() in bpf unix iter.
  selftest/bpf: Test batching and bpf_(get|set)sockopt in bpf unix iter.
  selftest/bpf: Fix a stale comment.

 net/unix/af_unix.c                            | 250 ++++++++++++++++--
 .../bpf/prog_tests/bpf_iter_setsockopt_unix.c | 100 +++++++
 .../bpf/progs/bpf_iter_setsockopt_unix.c      |  60 +++++
 .../selftests/bpf/progs/bpf_iter_unix.c       |   2 +-
 .../selftests/bpf/progs/bpf_tracing_net.h     |   2 +
 5 files changed, 385 insertions(+), 29 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/prog_tests/bpf_iter_setsockopt_unix.c
 create mode 100644 tools/testing/selftests/bpf/progs/bpf_iter_setsockopt_unix.c

-- 
2.30.2


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-01-13 17:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-13 17:20 [PATCH v2 bpf-next 2/5] bpf: af_unix: Use batching algorithm in bpf unix iter kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2022-01-13  0:28 [PATCH v2 bpf-next 0/5] bpf: Batching iter for AF_UNIX sockets Kuniyuki Iwashima
2022-01-13  0:28 ` [PATCH v2 bpf-next 2/5] bpf: af_unix: Use batching algorithm in bpf unix iter Kuniyuki Iwashima

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.