Re: [net-next v2 2/2] net: sched: support hash/classid selecting tx queue

kernel test robot
2021-12-08T22:33:04Z

Hi,

Thank you for the patch! Perhaps something to improve:

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

url: https://github.com/0day-ci/linux/commits/xiangxia-m-yue-gmail-com/net-sched-allow-user-to-select-txqueue/20211208-223656
base: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git 1fe5b01262844be03de98afdd56d1d393df04d7e
config: i386-randconfig-a015-20211207 (https://download.01.org/0day-ci/archive/20211209/202112090601.FrUCO7HV-lkp@intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 097a1cb1d5ebb3a0ec4bcaed8ba3ff6a8e33c00a)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://github.com/0day-ci/linux/commit/522fbcfdde012bc46d29aa216bdfa73f512adcbd
git remote add linux-review https://github.com/0day-ci/linux
git fetch --no-tags linux-review xiangxia-m-yue-gmail-com/net-sched-allow-user-to-select-txqueue/20211208-223656
git checkout 522fbcfdde012bc46d29aa216bdfa73f512adcbd
# save the config file to linux build tree
mkdir build_dir
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross W=1 O=build_dir ARCH=i386 SHELL=/bin/bash net/sched/

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

All warnings (new ones prefixed by >>):

>> net/sched/act_skbedit.c:39:11: warning: variable 'hash' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
else if (params->flags & SKBEDIT_F_QUEUE_MAPPING_HASH)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/sched/act_skbedit.c:42:34: note: uninitialized use occurs here
queue_mapping = queue_mapping + hash % mapping_mod;
^~~~
net/sched/act_skbedit.c:39:7: note: remove the 'if' if its condition is always true
else if (params->flags & SKBEDIT_F_QUEUE_MAPPING_HASH)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/sched/act_skbedit.c:32:10: note: initialize the variable 'hash' to silence this warning
u32 hash;
^
= 0
1 warning generated.

vim +39 net/sched/act_skbedit.c

26
27 static u16 tcf_skbedit_hash(struct tcf_skbedit_params *params,
28 struct sk_buff *skb)
29 {
30 u16 queue_mapping = params->queue_mapping;
31 u16 mapping_mod = params->mapping_mod;
32 u32 hash;
33
34 if (!(params->flags & SKBEDIT_F_QUEUE_MAPPING_HASH_MASK))
35 return netdev_cap_txqueue(skb->dev, queue_mapping);
36
37 if (params->flags & SKBEDIT_F_QUEUE_MAPPING_CLASSID)
38 hash = jhash_1word(task_get_classid(skb), 0);
> 39 else if (params->flags & SKBEDIT_F_QUEUE_MAPPING_HASH)
40 hash = skb_get_hash(skb);
41
42 queue_mapping = queue_mapping + hash % mapping_mod;
43 return netdev_cap_txqueue(skb->dev, queue_mapping);
44 }
45

---
0-DAY CI Kernel Test Service, Intel Corporation