:::::: 
:::::: Manual check reason: "low confidence static check warning: 
net/dsa/tag_sja1105.c:168:3: warning: Undefined or garbage value returned to 
caller [clang-analyzer-core.uninitialized.UndefReturn]"
:::::: 

CC: [email protected]
CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Vladimir Oltean <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   4b35035bcf80ddb47c0112c4fbd84a63a2836a18
commit: 8ded9160928e545c2e694b77a87263fa078ff4c6 net: dsa: tag_sja1105: stop 
asking the sja1105 driver in sja1105_xmit_tpid
date:   10 months ago
:::::: branch date: 3 days ago
:::::: commit date: 10 months ago
config: arm-randconfig-c002-20220617 
(https://download.01.org/0day-ci/archive/20220620/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
d764aa7fc6b9cc3fbe960019018f5f9e941eb0a6)
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
        # install arm cross compiling tool for clang build
        # apt-get install binutils-arm-linux-gnueabi
        # 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=8ded9160928e545c2e694b77a87263fa078ff4c6
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout 8ded9160928e545c2e694b77a87263fa078ff4c6
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm 
clang-analyzer 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
               ^~~~~~~~~~~~~~~
   net/ipv4/fib_semantics.c:1527:22: note: Left side of '&&' is false
           if (fi->fib_prefsrc && !fib_valid_prefsrc(cfg, fi->fib_prefsrc)) {
                               ^
   net/ipv4/fib_semantics.c:1532:11: note: Field 'nh' is non-null
           if (!fi->nh) {
                    ^
   net/ipv4/fib_semantics.c:1532:2: note: Taking false branch
           if (!fi->nh) {
           ^
   net/ipv4/fib_semantics.c:1545:6: note: Assuming 'ofi' is null
           if (ofi) {
               ^~~
   net/ipv4/fib_semantics.c:1545:2: note: Taking false branch
           if (ofi) {
           ^
   net/ipv4/fib_semantics.c:1556:25: note: Calling 'fib_info_hashfn'
                          &fib_info_hash[fib_info_hashfn(fi)]);
                                         ^~~~~~~~~~~~~~~~~~~
   net/ipv4/fib_semantics.c:353:6: note: Assuming field 'nh' is non-null
           if (fi->nh) {
               ^~~~~~
   net/ipv4/fib_semantics.c:353:2: note: Taking true branch
           if (fi->nh) {
           ^
   net/ipv4/fib_semantics.c:361:2: note: Returning without writing to 'fi->nh', 
which participates in a condition later
           return fib_info_hashfn_result(val);
           ^
   net/ipv4/fib_semantics.c:1556:25: note: Returning from 'fib_info_hashfn'
                          &fib_info_hash[fib_info_hashfn(fi)]);
                                         ^~~~~~~~~~~~~~~~~~~
   net/ipv4/fib_semantics.c:1557:6: note: Assuming field 'fib_prefsrc' is 0
           if (fi->fib_prefsrc) {
               ^~~~~~~~~~~~~~~
   net/ipv4/fib_semantics.c:1557:2: note: Taking false branch
           if (fi->fib_prefsrc) {
           ^
   net/ipv4/fib_semantics.c:1563:6: note: Assuming field 'nh' is non-null
           if (fi->nh) {
               ^~~~~~
   net/ipv4/fib_semantics.c:1563:2: note: Taking true branch
           if (fi->nh) {
           ^
   net/ipv4/fib_semantics.c:1564:26: note: Passing null pointer value via 2nd 
parameter 'head'
                   list_add(&fi->nh_list, &nh->fi_list);
                                          ^~~~~~~~~~~~
   net/ipv4/fib_semantics.c:1564:3: note: Calling 'list_add'
                   list_add(&fi->nh_list, &nh->fi_list);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/list.h:86:24: note: Access to field 'next' results in a 
dereference of a null pointer (loaded from variable 'head')
           __list_add(new, head, head->next);
                                 ^~~~
   Suppressed 3 warnings (2 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (2 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (2 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (2 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (2 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (2 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (2 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (2 in non-user code, 1 with check filters).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
>> net/dsa/tag_sja1105.c:168:3: warning: Undefined or garbage value returned to 
>> caller [clang-analyzer-core.uninitialized.UndefReturn]
                   return proto;
                   ^
   net/dsa/tag_sja1105.c:270:6: note: Assuming field 'offload_fwd_mark' is 0
           if (skb->offload_fwd_mark)
               ^~~~~~~~~~~~~~~~~~~~~
   net/dsa/tag_sja1105.c:270:2: note: Taking false branch
           if (skb->offload_fwd_mark)
           ^
   net/dsa/tag_sja1105.c:277:2: note: Taking true branch
           if (likely(!sja1105_is_link_local(skb)))
           ^
   net/dsa/tag_sja1105.c:278:38: note: Calling 'sja1105_xmit_tpid'
                   return dsa_8021q_xmit(skb, netdev, sja1105_xmit_tpid(dp),
                                                      ^~~~~~~~~~~~~~~~~~~~~
   net/dsa/tag_sja1105.c:143:2: note: 'proto' declared without an initial value
           u16 proto;
           ^~~~~~~~~
   net/dsa/tag_sja1105.c:148:6: note: Assuming the condition is false
           if (!dsa_port_is_vlan_filtering(dp))
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   net/dsa/tag_sja1105.c:148:2: note: Taking false branch
           if (!dsa_port_is_vlan_filtering(dp))
           ^
   net/dsa/tag_sja1105.c:155:2: note: Left side of '&&' is false
           list_for_each_entry(other_dp, &ds->dst->ports, list) {
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   net/dsa/tag_sja1105.c:155:2: note: Taking false branch
           list_for_each_entry(other_dp, &ds->dst->ports, list) {
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/compiler_types.h:328:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:308:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   net/dsa/tag_sja1105.c:155:2: note: Loop condition is false.  Exiting loop
           list_for_each_entry(other_dp, &ds->dst->ports, list) {
           ^
   include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
                      ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   note: (skipping 2 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/compiler_types.h:328:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:316:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:306:2: note: expanded from macro 
'__compiletime_assert'
           do {                                                            \
           ^
   net/dsa/tag_sja1105.c:155:2: note: Loop condition is true.  Entering loop 
body
           list_for_each_entry(other_dp, &ds->dst->ports, list) {
           ^
   include/linux/list.h:628:2: note: expanded from macro 'list_for_each_entry'
           for (pos = list_first_entry(head, typeof(*pos), member);        \
           ^
   net/dsa/tag_sja1105.c:156:7: note: Assuming 'ds' is equal to field 'ds'
                   if (other_dp->ds != ds)
                       ^~~~~~~~~~~~~~~~~~
   net/dsa/tag_sja1105.c:156:3: note: Taking false branch
                   if (other_dp->ds != ds)
                   ^
   net/dsa/tag_sja1105.c:159:7: note: Assuming field 'bridge_dev' is non-null
                   if (!other_dp->bridge_dev)
                       ^~~~~~~~~~~~~~~~~~~~~
   net/dsa/tag_sja1105.c:159:3: note: Taking false branch
                   if (!other_dp->bridge_dev)
                   ^

vim +168 net/dsa/tag_sja1105.c

a68578c20a9667 Vladimir Oltean 2020-01-04  135  
8ded9160928e54 Vladimir Oltean 2021-08-24  136  /* Send VLAN tags with a TPID 
that blends in with whatever VLAN protocol a
8ded9160928e54 Vladimir Oltean 2021-08-24  137   * bridge spanning ports of 
this switch might have.
8ded9160928e54 Vladimir Oltean 2021-08-24  138   */
994d2cbb08ca05 Vladimir Oltean 2021-08-17  139  static u16 
sja1105_xmit_tpid(struct dsa_port *dp)
38b5beeae7a4cd Vladimir Oltean 2020-05-12  140  {
8ded9160928e54 Vladimir Oltean 2021-08-24  141          struct dsa_switch *ds = 
dp->ds;
8ded9160928e54 Vladimir Oltean 2021-08-24  142          struct dsa_port 
*other_dp;
8ded9160928e54 Vladimir Oltean 2021-08-24  143          u16 proto;
8ded9160928e54 Vladimir Oltean 2021-08-24  144  
8ded9160928e54 Vladimir Oltean 2021-08-24  145          /* Since VLAN awareness 
is global, then if this port is VLAN-unaware,
8ded9160928e54 Vladimir Oltean 2021-08-24  146           * all ports are. Use 
the VLAN-unaware TPID used for tag_8021q.
8ded9160928e54 Vladimir Oltean 2021-08-24  147           */
8ded9160928e54 Vladimir Oltean 2021-08-24  148          if 
(!dsa_port_is_vlan_filtering(dp))
8ded9160928e54 Vladimir Oltean 2021-08-24  149                  return 
ETH_P_SJA1105;
8ded9160928e54 Vladimir Oltean 2021-08-24  150  
8ded9160928e54 Vladimir Oltean 2021-08-24  151          /* Port is VLAN-aware, 
so there is a bridge somewhere (a single one,
8ded9160928e54 Vladimir Oltean 2021-08-24  152           * we're sure about 
that). It may not be on this port though, so we
8ded9160928e54 Vladimir Oltean 2021-08-24  153           * need to find it.
8ded9160928e54 Vladimir Oltean 2021-08-24  154           */
8ded9160928e54 Vladimir Oltean 2021-08-24  155          
list_for_each_entry(other_dp, &ds->dst->ports, list) {
8ded9160928e54 Vladimir Oltean 2021-08-24  156                  if 
(other_dp->ds != ds)
8ded9160928e54 Vladimir Oltean 2021-08-24  157                          
continue;
8ded9160928e54 Vladimir Oltean 2021-08-24  158  
8ded9160928e54 Vladimir Oltean 2021-08-24  159                  if 
(!other_dp->bridge_dev)
8ded9160928e54 Vladimir Oltean 2021-08-24  160                          
continue;
8ded9160928e54 Vladimir Oltean 2021-08-24  161  
8ded9160928e54 Vladimir Oltean 2021-08-24  162                  /* Error is 
returned only if CONFIG_BRIDGE_VLAN_FILTERING,
8ded9160928e54 Vladimir Oltean 2021-08-24  163                   * which seems 
pointless to handle, as our port cannot become
8ded9160928e54 Vladimir Oltean 2021-08-24  164                   * VLAN-aware 
in that case.
8ded9160928e54 Vladimir Oltean 2021-08-24  165                   */
8ded9160928e54 Vladimir Oltean 2021-08-24  166                  
br_vlan_get_proto(other_dp->bridge_dev, &proto);
8ded9160928e54 Vladimir Oltean 2021-08-24  167  
8ded9160928e54 Vladimir Oltean 2021-08-24 @168                  return proto;
8ded9160928e54 Vladimir Oltean 2021-08-24  169          }
994d2cbb08ca05 Vladimir Oltean 2021-08-17  170  
8ded9160928e54 Vladimir Oltean 2021-08-24  171          WARN_ONCE(1, "Port is 
VLAN-aware but cannot find associated bridge!\n");
994d2cbb08ca05 Vladimir Oltean 2021-08-17  172  
8ded9160928e54 Vladimir Oltean 2021-08-24  173          return ETH_P_SJA1105;
38b5beeae7a4cd Vladimir Oltean 2020-05-12  174  }
38b5beeae7a4cd Vladimir Oltean 2020-05-12  175  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to