* include/linux/etherdevice.h:337:19: warning: dereference of NULL 'failover_dev' [CWE-476]
@ 2022-06-19 2:01 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-06-19 2:01 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 9015 bytes --]
::::::
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check first_new_problem: include/linux/etherdevice.h:337:19: warning: dereference of NULL 'failover_dev' [CWE-476] [-Wanalyzer-null-dereference]"
::::::
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Yajun Deng <yajun.deng@linux.dev>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 4b35035bcf80ddb47c0112c4fbd84a63a2836a18
commit: b37a466837393af72fe8bcb8f1436410f3f173f3 netdevice: add the case if dev is NULL
date: 11 months ago
:::::: branch date: 30 hours ago
:::::: commit date: 11 months ago
config: arm-randconfig-c002-20220617 (https://download.01.org/0day-ci/archive/20220619/202206190916.8g53PU1y-lkp(a)intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.3.0
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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b37a466837393af72fe8bcb8f1436410f3f173f3
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout b37a466837393af72fe8bcb8f1436410f3f173f3
# save the config file
ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error'
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
gcc-analyzer warnings: (new ones prefixed by >>)
In file included from net/core/failover.c:11:
net/core/failover.c: In function 'failover_existing_slave_register':
>> include/linux/etherdevice.h:337:19: warning: dereference of NULL 'failover_dev' [CWE-476] [-Wanalyzer-null-dereference]
337 | return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) == 0;
| ~^~~
'failover_register.part.0': events 1-2
|
|net/core/failover.c:242:18:
| 242 | struct failover *failover_register(struct net_device *dev,
| | ^~~~~~~~~~~~~~~~~
| | |
| | (1) entry to 'failover_register.part.0'
|......
| 251 | if (!failover)
| | ~
| | |
| | (2) following 'false' branch...
|
'failover_register.part.0': event 3
|
|include/linux/compiler.h:86:20:
| 86 | # define barrier() __asm__ __volatile__("": : :"memory")
| | ^~~~~~~
| | |
| | (3) ...to here
include/asm-generic/barrier.h:163:9: note: in expansion of macro 'barrier'
| 163 | barrier(); \
| | ^~~~~~~
include/linux/rcupdate.h:452:17: note: in expansion of macro 'smp_store_release'
| 452 | smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \
| | ^~~~~~~~~~~~~~~~~
net/core/failover.c:254:9: note: in expansion of macro 'rcu_assign_pointer'
| 254 | rcu_assign_pointer(failover->ops, ops);
| | ^~~~~~~~~~~~~~~~~~
|
'failover_register.part.0': event 4
|
| 255 | dev_hold(dev);
| | ^~~~~~~~~~~~~
| | |
| | (4) calling 'dev_hold' from 'failover_register.part.0'
|
+--> 'dev_hold': events 5-7
|
|include/linux/netdevice.h:4161:20:
| 4161 | static inline void dev_hold(struct net_device *dev)
| | ^~~~~~~~
| | |
| | (5) entry to 'dev_hold'
| 4162 | {
| 4163 | if (dev) {
| | ~
| | |
| | (6) following 'false' branch (when 'dev' is NULL)...
|......
| 4170 | }
| | ~
| | |
| | (7) ...to here
|
<------+
|
'failover_register.part.0': events 8-9
|
|net/core/failover.c:255:9:
| 255 | dev_hold(dev);
| | ^~~~~~~~~~~~~
| | |
| | (8) returning to 'failover_register.part.0' from 'dev_hold'
|......
| 265 | failover_existing_slave_register(dev);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (9) calling 'failover_existing_slave_register' from 'failover_register.part.0'
|
+--> 'failover_existing_slave_register': event 10
|
| 215 | failover_existing_slave_register(struct net_device *failover_dev)
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (10) entry to 'failover_existing_slave_register'
|
'failover_existing_slave_register': event 11
|
|include/linux/list.h:629:14:
| 629 | !list_entry_is_head(pos, head, member); \
| | ^
| | |
| | (11) following 'true' branch...
include/linux/netdevice.h:2877:17: note: in expansion of macro 'list_for_each_entry'
| 2877 | list_for_each_entry(d, &(net)->dev_base_head, dev_list)
| | ^~~~~~~~~~~~~~~~~~~
net/core/failover.c:221:9: note: in expansion of macro 'for_each_netdev'
| 221 | for_each_netdev(net, dev) {
| | ^~~~~~~~~~~~~~~
|
'failover_existing_slave_register': event 12
|
|include/linux/netdevice.h:5188:19:
| 5188 | return dev->priv_flags & IFF_FAILOVER;
| | ~~~^~~~~~~~~~~~
| | |
| | (12) ...to here
vim +/failover_dev +337 include/linux/etherdevice.h
83a093b486ecfd Bjørn Mork 2013-08-30 316
a599b0f54d233d Joe Perches 2012-05-08 317 /**
a599b0f54d233d Joe Perches 2012-05-08 318 * ether_addr_equal - Compare two Ethernet addresses
a599b0f54d233d Joe Perches 2012-05-08 319 * @addr1: Pointer to a six-byte array containing the Ethernet address
a599b0f54d233d Joe Perches 2012-05-08 320 * @addr2: Pointer other six-byte array containing the Ethernet address
a599b0f54d233d Joe Perches 2012-05-08 321 *
048b899ce38c3e stephen hemminger 2012-05-17 322 * Compare two Ethernet addresses, returns true if equal
0d74c42f788caf Joe Perches 2013-12-05 323 *
0d74c42f788caf Joe Perches 2013-12-05 324 * Please note: addr1 & addr2 must both be aligned to u16.
a599b0f54d233d Joe Perches 2012-05-08 325 */
a599b0f54d233d Joe Perches 2012-05-08 326 static inline bool ether_addr_equal(const u8 *addr1, const u8 *addr2)
a599b0f54d233d Joe Perches 2012-05-08 327 {
0d74c42f788caf Joe Perches 2013-12-05 328 #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
0d74c42f788caf Joe Perches 2013-12-05 329 u32 fold = ((*(const u32 *)addr1) ^ (*(const u32 *)addr2)) |
0d74c42f788caf Joe Perches 2013-12-05 330 ((*(const u16 *)(addr1 + 4)) ^ (*(const u16 *)(addr2 + 4)));
a599b0f54d233d Joe Perches 2012-05-08 331
0d74c42f788caf Joe Perches 2013-12-05 332 return fold == 0;
1f87e235e6fb92 Eric Dumazet 2008-11-23 333 #else
0d74c42f788caf Joe Perches 2013-12-05 334 const u16 *a = (const u16 *)addr1;
0d74c42f788caf Joe Perches 2013-12-05 335 const u16 *b = (const u16 *)addr2;
0d74c42f788caf Joe Perches 2013-12-05 336
0d74c42f788caf Joe Perches 2013-12-05 @337 return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) == 0;
1f87e235e6fb92 Eric Dumazet 2008-11-23 338 #endif
1f87e235e6fb92 Eric Dumazet 2008-11-23 339 }
1f87e235e6fb92 Eric Dumazet 2008-11-23 340
:::::: The code at line 337 was first introduced by commit
:::::: 0d74c42f788caf3cad727c61c490d9459bc8918b ether_addr_equal: Optimize implementation, remove unused compare_ether_addr
:::::: TO: Joe Perches <joe@perches.com>
:::::: CC: David S. Miller <davem@davemloft.net>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 2+ messages in thread
* include/linux/etherdevice.h:337:19: warning: dereference of NULL 'failover_dev' [CWE-476]
@ 2022-06-17 23:25 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-06-17 23:25 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 9014 bytes --]
::::::
:::::: Manual check reason: "low confidence bisect report"
:::::: Manual check reason: "low confidence static check first_new_problem: include/linux/etherdevice.h:337:19: warning: dereference of NULL 'failover_dev' [CWE-476] [-Wanalyzer-null-dereference]"
::::::
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Yajun Deng <yajun.deng@linux.dev>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 4b35035bcf80ddb47c0112c4fbd84a63a2836a18
commit: b37a466837393af72fe8bcb8f1436410f3f173f3 netdevice: add the case if dev is NULL
date: 11 months ago
:::::: branch date: 3 hours ago
:::::: commit date: 11 months ago
config: arm-randconfig-c002-20220617 (https://download.01.org/0day-ci/archive/20220618/202206180726.9Xs1LGbY-lkp(a)intel.com/config)
compiler: arm-linux-gnueabi-gcc (GCC) 11.3.0
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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b37a466837393af72fe8bcb8f1436410f3f173f3
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout b37a466837393af72fe8bcb8f1436410f3f173f3
# save the config file
ARCH=arm KBUILD_USERCFLAGS='-fanalyzer -Wno-error'
If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <lkp@intel.com>
gcc-analyzer warnings: (new ones prefixed by >>)
In file included from net/core/failover.c:11:
net/core/failover.c: In function 'failover_existing_slave_register':
>> include/linux/etherdevice.h:337:19: warning: dereference of NULL 'failover_dev' [CWE-476] [-Wanalyzer-null-dereference]
337 | return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) == 0;
| ~^~~
'failover_register.part.0': events 1-2
|
|net/core/failover.c:242:18:
| 242 | struct failover *failover_register(struct net_device *dev,
| | ^~~~~~~~~~~~~~~~~
| | |
| | (1) entry to 'failover_register.part.0'
|......
| 251 | if (!failover)
| | ~
| | |
| | (2) following 'false' branch...
|
'failover_register.part.0': event 3
|
|include/linux/compiler.h:86:20:
| 86 | # define barrier() __asm__ __volatile__("": : :"memory")
| | ^~~~~~~
| | |
| | (3) ...to here
include/asm-generic/barrier.h:163:9: note: in expansion of macro 'barrier'
| 163 | barrier(); \
| | ^~~~~~~
include/linux/rcupdate.h:452:17: note: in expansion of macro 'smp_store_release'
| 452 | smp_store_release(&p, RCU_INITIALIZER((typeof(p))_r_a_p__v)); \
| | ^~~~~~~~~~~~~~~~~
net/core/failover.c:254:9: note: in expansion of macro 'rcu_assign_pointer'
| 254 | rcu_assign_pointer(failover->ops, ops);
| | ^~~~~~~~~~~~~~~~~~
|
'failover_register.part.0': event 4
|
| 255 | dev_hold(dev);
| | ^~~~~~~~~~~~~
| | |
| | (4) calling 'dev_hold' from 'failover_register.part.0'
|
+--> 'dev_hold': events 5-7
|
|include/linux/netdevice.h:4161:20:
| 4161 | static inline void dev_hold(struct net_device *dev)
| | ^~~~~~~~
| | |
| | (5) entry to 'dev_hold'
| 4162 | {
| 4163 | if (dev) {
| | ~
| | |
| | (6) following 'false' branch (when 'dev' is NULL)...
|......
| 4170 | }
| | ~
| | |
| | (7) ...to here
|
<------+
|
'failover_register.part.0': events 8-9
|
|net/core/failover.c:255:9:
| 255 | dev_hold(dev);
| | ^~~~~~~~~~~~~
| | |
| | (8) returning to 'failover_register.part.0' from 'dev_hold'
|......
| 265 | failover_existing_slave_register(dev);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (9) calling 'failover_existing_slave_register' from 'failover_register.part.0'
|
+--> 'failover_existing_slave_register': event 10
|
| 215 | failover_existing_slave_register(struct net_device *failover_dev)
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (10) entry to 'failover_existing_slave_register'
|
'failover_existing_slave_register': event 11
|
|include/linux/list.h:629:14:
| 629 | !list_entry_is_head(pos, head, member); \
| | ^
| | |
| | (11) following 'true' branch...
include/linux/netdevice.h:2877:17: note: in expansion of macro 'list_for_each_entry'
| 2877 | list_for_each_entry(d, &(net)->dev_base_head, dev_list)
| | ^~~~~~~~~~~~~~~~~~~
net/core/failover.c:221:9: note: in expansion of macro 'for_each_netdev'
| 221 | for_each_netdev(net, dev) {
| | ^~~~~~~~~~~~~~~
|
'failover_existing_slave_register': event 12
|
|include/linux/netdevice.h:5188:19:
| 5188 | return dev->priv_flags & IFF_FAILOVER;
| | ~~~^~~~~~~~~~~~
| | |
| | (12) ...to here
vim +/failover_dev +337 include/linux/etherdevice.h
83a093b486ecfd Bjørn Mork 2013-08-30 316
a599b0f54d233d Joe Perches 2012-05-08 317 /**
a599b0f54d233d Joe Perches 2012-05-08 318 * ether_addr_equal - Compare two Ethernet addresses
a599b0f54d233d Joe Perches 2012-05-08 319 * @addr1: Pointer to a six-byte array containing the Ethernet address
a599b0f54d233d Joe Perches 2012-05-08 320 * @addr2: Pointer other six-byte array containing the Ethernet address
a599b0f54d233d Joe Perches 2012-05-08 321 *
048b899ce38c3e stephen hemminger 2012-05-17 322 * Compare two Ethernet addresses, returns true if equal
0d74c42f788caf Joe Perches 2013-12-05 323 *
0d74c42f788caf Joe Perches 2013-12-05 324 * Please note: addr1 & addr2 must both be aligned to u16.
a599b0f54d233d Joe Perches 2012-05-08 325 */
a599b0f54d233d Joe Perches 2012-05-08 326 static inline bool ether_addr_equal(const u8 *addr1, const u8 *addr2)
a599b0f54d233d Joe Perches 2012-05-08 327 {
0d74c42f788caf Joe Perches 2013-12-05 328 #if defined(CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS)
0d74c42f788caf Joe Perches 2013-12-05 329 u32 fold = ((*(const u32 *)addr1) ^ (*(const u32 *)addr2)) |
0d74c42f788caf Joe Perches 2013-12-05 330 ((*(const u16 *)(addr1 + 4)) ^ (*(const u16 *)(addr2 + 4)));
a599b0f54d233d Joe Perches 2012-05-08 331
0d74c42f788caf Joe Perches 2013-12-05 332 return fold == 0;
1f87e235e6fb92 Eric Dumazet 2008-11-23 333 #else
0d74c42f788caf Joe Perches 2013-12-05 334 const u16 *a = (const u16 *)addr1;
0d74c42f788caf Joe Perches 2013-12-05 335 const u16 *b = (const u16 *)addr2;
0d74c42f788caf Joe Perches 2013-12-05 336
0d74c42f788caf Joe Perches 2013-12-05 @337 return ((a[0] ^ b[0]) | (a[1] ^ b[1]) | (a[2] ^ b[2])) == 0;
1f87e235e6fb92 Eric Dumazet 2008-11-23 338 #endif
1f87e235e6fb92 Eric Dumazet 2008-11-23 339 }
1f87e235e6fb92 Eric Dumazet 2008-11-23 340
:::::: The code at line 337 was first introduced by commit
:::::: 0d74c42f788caf3cad727c61c490d9459bc8918b ether_addr_equal: Optimize implementation, remove unused compare_ether_addr
:::::: TO: Joe Perches <joe@perches.com>
:::::: CC: David S. Miller <davem@davemloft.net>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-06-19 2:01 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-19 2:01 include/linux/etherdevice.h:337:19: warning: dereference of NULL 'failover_dev' [CWE-476] kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2022-06-17 23:25 kernel test robot
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.