Hi Leonard,
Thank you for the patch! Perhaps something to improve:
[auto build test WARNING on 1fe5b01262844be03de98afdd56d1d393df04d7e]
url:
https://github.com/0day-ci/linux/commits/Leonard-Crestez/tcp-Initial-supp...
base: 1fe5b01262844be03de98afdd56d1d393df04d7e
config: m68k-randconfig-s031-20211209
(
https://download.01.org/0day-ci/archive/20211210/202112100044.EM5GEcUJ-lk...)
compiler: m68k-linux-gcc (GCC) 11.2.0
reproduce:
wget
https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O
~/bin/make.cross
chmod +x ~/bin/make.cross
# apt-get install sparse
# sparse version: v0.6.4-dirty
#
https://github.com/0day-ci/linux/commit/8082f98bdfa221e0dc891e89beecb5d1e...
git remote add linux-review
https://github.com/0day-ci/linux
git fetch --no-tags linux-review
Leonard-Crestez/tcp-Initial-support-for-RFC5925-auth-option/20211208-194125
git checkout 8082f98bdfa221e0dc891e89beecb5d1e3ac64ac
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=gcc-11.2.0 make.cross C=1
CF='-fdiagnostic-prefix -D__CHECK_ENDIAN__' O=build_dir ARCH=m68k SHELL=/bin/bash
net/ipv4/
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp(a)intel.com>
sparse warnings: (new ones prefixed by >>)
> net/ipv4/tcp_authopt.c:343:23: sparse: sparse: incompatible types
in comparison expression (different address spaces):
> net/ipv4/tcp_authopt.c:343:23: sparse: struct tcp_authopt_key_info [noderef] __rcu
*
> net/ipv4/tcp_authopt.c:343:23: sparse: struct tcp_authopt_key_info *
net/ipv4/tcp_authopt.c:345:23: sparse: sparse: incompatible types in comparison expression
(different address spaces):
net/ipv4/tcp_authopt.c:345:23: sparse: struct tcp_authopt_key_info [noderef] __rcu
*
net/ipv4/tcp_authopt.c:345:23: sparse: struct tcp_authopt_key_info *
net/ipv4/tcp_authopt.c:369:25: sparse: sparse: incompatible types in comparison
expression (different address spaces):
net/ipv4/tcp_authopt.c:369:25: sparse: struct tcp_authopt_key_info [noderef] __rcu
*
net/ipv4/tcp_authopt.c:369:25: sparse: struct tcp_authopt_key_info *
net/ipv4/tcp_authopt.c:509:20: sparse: sparse: incompatible types in comparison
expression (different address spaces):
net/ipv4/tcp_authopt.c:509:20: sparse: struct tcp_authopt_key_info [noderef] __rcu
*
net/ipv4/tcp_authopt.c:509:20: sparse: struct tcp_authopt_key_info *
net/ipv4/tcp_authopt.c:528:13: sparse: sparse: incompatible types in comparison
expression (different address spaces):
net/ipv4/tcp_authopt.c:528:13: sparse: struct tcp_authopt_key_info [noderef] __rcu
*
net/ipv4/tcp_authopt.c:528:13: sparse: struct tcp_authopt_key_info *
net/ipv4/tcp_authopt.c:529:17: sparse: sparse: incompatible types in comparison
expression (different address spaces):
net/ipv4/tcp_authopt.c:529:17: sparse: struct tcp_authopt_key_info [noderef] __rcu
*
net/ipv4/tcp_authopt.c:529:17: sparse: struct tcp_authopt_key_info *
vim +343 net/ipv4/tcp_authopt.c
306
307 /**
308 * __tcp_authopt_select_key - select key for sending
309 *
310 * @sk: socket
311 * @info: socket's tcp_authopt_info
312 * @addr_sk: socket used for address lookup. Same as sk except for synack case
313 * @rnextkeyid: value of rnextkeyid caller should write in packet
314 * @locked: If we're holding the socket lock. This is false for some timewait
and reset cases
315 *
316 * Result is protected by RCU and can't be stored, it may only be passed to
317 * tcp_authopt_hash and only under a single rcu_read_lock.
318 */
319 struct tcp_authopt_key_info *__tcp_authopt_select_key(const struct sock *sk,
320 struct tcp_authopt_info *info,
321 const struct sock *addr_sk,
322 u8 *rnextkeyid,
323 bool locked)
324 {
325 struct tcp_authopt_key_info *key, *new_key = NULL;
326
327 /* Listen sockets don't refer to any specific connection so we don't try
328 * to keep using the same key and ignore any received keyids.
329 */
330 if (sk->sk_state == TCP_LISTEN) {
331 int send_keyid = -1;
332
333 if (info->flags & TCP_AUTHOPT_FLAG_LOCK_KEYID)
334 send_keyid = info->send_keyid;
335 key = tcp_authopt_lookup_send(info, addr_sk, send_keyid);
336 if (key)
337 *rnextkeyid = key->recv_id;
338
339 return key;
340 }
341
342 if (locked)
343 key = rcu_dereference_protected(info->send_key,
lockdep_sock_is_held(sk));
344 else
345 key = rcu_dereference(info->send_key);
346
347 /* Try to keep the same sending key unless user or peer requires a different key
348 * User request (via TCP_AUTHOPT_FLAG_LOCK_KEYID) always overrides peer request.
349 */
350 if (info->flags & TCP_AUTHOPT_FLAG_LOCK_KEYID) {
351 int send_keyid = info->send_keyid;
352
353 if (!key || key->send_id != send_keyid)
354 new_key = tcp_authopt_lookup_send(info, addr_sk, send_keyid);
355 } else {
356 if (!key || key->send_id != info->recv_rnextkeyid)
357 new_key = tcp_authopt_lookup_send(info, addr_sk, info->recv_rnextkeyid);
358 }
359 /* If no key found with specific send_id try anything else. */
360 if (!key && !new_key)
361 new_key = tcp_authopt_lookup_send(info, addr_sk, -1);
362
363 /* Update current key only if we hold the socket lock, otherwise we might
364 * store a pointer that goes stale
365 */
366 if (new_key && key != new_key) {
367 key = new_key;
368 if (locked)
369 rcu_assign_pointer(info->send_key, key);
370 }
371
372 if (key) {
373 if (info->flags & TCP_AUTHOPT_FLAG_LOCK_RNEXTKEYID)
374 *rnextkeyid = info->send_rnextkeyid;
375 else
376 *rnextkeyid = info->send_rnextkeyid = key->recv_id;
377 }
378
379 return key;
380 }
381 EXPORT_SYMBOL(__tcp_authopt_select_key);
382
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org