Re: [PATCH 2/4] netlink: Move an assignment for the variable “sk” in __netlink_kernel_create()

From: kernel test robot
Date: Sun Dec 31 2023 - 19:54:48 EST


Hi Markus,

kernel test robot noticed the following build warnings:

[auto build test WARNING on net/main]
[also build test WARNING on net-next/main linus/master horms-ipvs/master v6.7-rc8 next-20231222]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]

url: https://github.com/intel-lab-lkp/linux/commits/Markus-Elfring/netlink-Improve-exception-handling-in-__netlink_kernel_create/20240101-015025
base: net/main
patch link: https://lore.kernel.org/r/223a61e9-f826-4f37-b514-ca6ed53b1269%40web.de
patch subject: [PATCH 2/4] netlink: Move an assignment for the variable “sk” in __netlink_kernel_create()
config: arm-randconfig-001-20240101 (https://download.01.org/0day-ci/archive/20240101/202401010855.4iU6im1B-lkp@xxxxxxxxx/config)
compiler: clang version 18.0.0git (https://github.com/llvm/llvm-project 8a4266a626914765c0c69839e8a51be383013c1a)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240101/202401010855.4iU6im1B-lkp@xxxxxxxxx/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@xxxxxxxxx>
| Closes: https://lore.kernel.org/oe-kbuild-all/202401010855.4iU6im1B-lkp@xxxxxxxxx/

All warnings (new ones prefixed by >>):

>> net/netlink/af_netlink.c:2044:6: warning: variable 'sk' is used uninitialized whenever 'if' condition is true [-Wsometimes-uninitialized]
2044 | if (!listeners)
| ^~~~~~~~~~
net/netlink/af_netlink.c:2081:25: note: uninitialized use occurs here
2081 | netlink_kernel_release(sk);
| ^~
net/netlink/af_netlink.c:2044:2: note: remove the 'if' if its condition is always false
2044 | if (!listeners)
| ^~~~~~~~~~~~~~~
2045 | goto out_netlink_release_sock;
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/netlink/af_netlink.c:2021:17: note: initialize the variable 'sk' to silence this warning
2021 | struct sock *sk;
| ^
| = NULL
1 warning generated.


vim +2044 net/netlink/af_netlink.c

^1da177e4c3f41 Linus Torvalds 2005-04-16 2009
^1da177e4c3f41 Linus Torvalds 2005-04-16 2010 /*
^1da177e4c3f41 Linus Torvalds 2005-04-16 2011 * We export these functions to other modules. They provide a
^1da177e4c3f41 Linus Torvalds 2005-04-16 2012 * complete set of kernel non-blocking support for message
^1da177e4c3f41 Linus Torvalds 2005-04-16 2013 * queueing.
^1da177e4c3f41 Linus Torvalds 2005-04-16 2014 */
^1da177e4c3f41 Linus Torvalds 2005-04-16 2015
^1da177e4c3f41 Linus Torvalds 2005-04-16 2016 struct sock *
9f00d9776bc5be Pablo Neira Ayuso 2012-09-08 2017 __netlink_kernel_create(struct net *net, int unit, struct module *module,
a31f2d17b331db Pablo Neira Ayuso 2012-06-29 2018 struct netlink_kernel_cfg *cfg)
^1da177e4c3f41 Linus Torvalds 2005-04-16 2019 {
^1da177e4c3f41 Linus Torvalds 2005-04-16 2020 struct socket *sock;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2021 struct sock *sk;
77247bbb309424 Patrick McHardy 2005-08-14 2022 struct netlink_sock *nlk;
5c398dc8f5a58b Eric Dumazet 2010-10-24 2023 struct listeners *listeners = NULL;
a31f2d17b331db Pablo Neira Ayuso 2012-06-29 2024 struct mutex *cb_mutex = cfg ? cfg->cb_mutex : NULL;
a31f2d17b331db Pablo Neira Ayuso 2012-06-29 2025 unsigned int groups;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2026
fab2caf62ed03d Akinobu Mita 2006-08-29 2027 BUG_ON(!nl_table);
^1da177e4c3f41 Linus Torvalds 2005-04-16 2028
^1da177e4c3f41 Linus Torvalds 2005-04-16 2029 if (unit < 0 || unit >= MAX_LINKS)
^1da177e4c3f41 Linus Torvalds 2005-04-16 2030 return NULL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2031
^1da177e4c3f41 Linus Torvalds 2005-04-16 2032 if (sock_create_lite(PF_NETLINK, SOCK_DGRAM, unit, &sock))
^1da177e4c3f41 Linus Torvalds 2005-04-16 2033 return NULL;
13d3078e22f565 Eric W. Biederman 2015-05-08 2034
13d3078e22f565 Eric W. Biederman 2015-05-08 2035 if (__netlink_create(net, sock, cb_mutex, unit, 1) < 0)
23fe18669e7fda Pavel Emelyanov 2008-01-30 2036 goto out_sock_release_nosk;
23fe18669e7fda Pavel Emelyanov 2008-01-30 2037
a31f2d17b331db Pablo Neira Ayuso 2012-06-29 2038 if (!cfg || cfg->groups < 32)
4277a083ecd2c8 Patrick McHardy 2006-03-20 2039 groups = 32;
a31f2d17b331db Pablo Neira Ayuso 2012-06-29 2040 else
a31f2d17b331db Pablo Neira Ayuso 2012-06-29 2041 groups = cfg->groups;
4277a083ecd2c8 Patrick McHardy 2006-03-20 2042
5c398dc8f5a58b Eric Dumazet 2010-10-24 2043 listeners = kzalloc(sizeof(*listeners) + NLGRPSZ(groups), GFP_KERNEL);
4277a083ecd2c8 Patrick McHardy 2006-03-20 @2044 if (!listeners)
90ae404765d263 Markus Elfring 2023-12-31 2045 goto out_netlink_release_sock;
4277a083ecd2c8 Patrick McHardy 2006-03-20 2046
e547df909ec09d Markus Elfring 2023-12-31 2047 sk = sock->sk;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2048 sk->sk_data_ready = netlink_data_ready;
a31f2d17b331db Pablo Neira Ayuso 2012-06-29 2049 if (cfg && cfg->input)
a31f2d17b331db Pablo Neira Ayuso 2012-06-29 2050 nlk_sk(sk)->netlink_rcv = cfg->input;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2051
8ea65f4a2dfaaf Herbert Xu 2015-01-26 2052 if (netlink_insert(sk, 0))
77247bbb309424 Patrick McHardy 2005-08-14 2053 goto out_sock_release;
4fdb3bb723db46 Harald Welte 2005-08-09 2054
77247bbb309424 Patrick McHardy 2005-08-14 2055 nlk = nlk_sk(sk);
8fe08d70a2b61b Eric Dumazet 2023-08-11 2056 set_bit(NETLINK_F_KERNEL_SOCKET, &nlk->flags);
4fdb3bb723db46 Harald Welte 2005-08-09 2057
4fdb3bb723db46 Harald Welte 2005-08-09 2058 netlink_table_grab();
b4b510290b056b Eric W. Biederman 2007-09-12 2059 if (!nl_table[unit].registered) {
4277a083ecd2c8 Patrick McHardy 2006-03-20 2060 nl_table[unit].groups = groups;
5c398dc8f5a58b Eric Dumazet 2010-10-24 2061 rcu_assign_pointer(nl_table[unit].listeners, listeners);
af65bdfce98d79 Patrick McHardy 2007-04-20 2062 nl_table[unit].cb_mutex = cb_mutex;
77247bbb309424 Patrick McHardy 2005-08-14 2063 nl_table[unit].module = module;
9785e10aedfa0f Pablo Neira Ayuso 2012-09-08 2064 if (cfg) {
9785e10aedfa0f Pablo Neira Ayuso 2012-09-08 2065 nl_table[unit].bind = cfg->bind;
6251edd932ce3f Hiroaki SHIMODA 2014-11-13 2066 nl_table[unit].unbind = cfg->unbind;
a4c9a56e6a2cde Anjali Kulkarni 2023-07-19 2067 nl_table[unit].release = cfg->release;
9785e10aedfa0f Pablo Neira Ayuso 2012-09-08 2068 nl_table[unit].flags = cfg->flags;
9785e10aedfa0f Pablo Neira Ayuso 2012-09-08 2069 }
ab33a1711cf60b Patrick McHardy 2005-08-14 2070 nl_table[unit].registered = 1;
f937f1f46b6d2f Jesper Juhl 2007-10-15 2071 } else {
f937f1f46b6d2f Jesper Juhl 2007-10-15 2072 kfree(listeners);
869e58f87094b1 Denis V. Lunev 2008-01-18 2073 nl_table[unit].registered++;
b4b510290b056b Eric W. Biederman 2007-09-12 2074 }
4fdb3bb723db46 Harald Welte 2005-08-09 2075 netlink_table_ungrab();
77247bbb309424 Patrick McHardy 2005-08-14 2076 return sk;
77247bbb309424 Patrick McHardy 2005-08-14 2077
4fdb3bb723db46 Harald Welte 2005-08-09 2078 out_sock_release:
4277a083ecd2c8 Patrick McHardy 2006-03-20 2079 kfree(listeners);
90ae404765d263 Markus Elfring 2023-12-31 2080 out_netlink_release_sock:
9dfbec1fb2bedf Denis V. Lunev 2008-02-29 2081 netlink_kernel_release(sk);
23fe18669e7fda Pavel Emelyanov 2008-01-30 2082 return NULL;
23fe18669e7fda Pavel Emelyanov 2008-01-30 2083
23fe18669e7fda Pavel Emelyanov 2008-01-30 2084 out_sock_release_nosk:
4fdb3bb723db46 Harald Welte 2005-08-09 2085 sock_release(sock);
77247bbb309424 Patrick McHardy 2005-08-14 2086 return NULL;
^1da177e4c3f41 Linus Torvalds 2005-04-16 2087 }
9f00d9776bc5be Pablo Neira Ayuso 2012-09-08 2088 EXPORT_SYMBOL(__netlink_kernel_create);
b7c6ba6eb1234e Denis V. Lunev 2008-01-28 2089

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki