* [lunn:dsa-ci 22/47] drivers/net/phy/mdio_bus.c:710:9: warning: The expression is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
@ 2022-05-04 12:37 kernel test robot
2022-05-09 5:49 ` kernel test robot
0 siblings, 1 reply; 2+ messages in thread
From: kernel test robot @ 2022-05-04 12:37 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 28052 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Andrew Lunn <andrew@lunn.ch>
tree: https://github.com/lunn/linux.git dsa-ci
head: 1149273e5c97f04e2255421372a8a30c75c0b842
commit: e582444c20a13a52eabf1d982d1f7e96344be2a8 [22/47] net: mdiobus: Rework scanning of bus ready for quirks
:::::: branch date: 11 days ago
:::::: commit date: 2 weeks ago
config: i386-randconfig-c001 (https://download.01.org/0day-ci/archive/20220504/202205042049.SwDh4zxv-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 09325d36061e42b495d1f4c7e933e260eac260ed)
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/lunn/linux/commit/e582444c20a13a52eabf1d982d1f7e96344be2a8
git remote add lunn https://github.com/lunn/linux.git
git fetch --no-tags lunn dsa-ci
git checkout e582444c20a13a52eabf1d982d1f7e96344be2a8
# save the config file
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^
arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
#define memcpy(t, f, n) __builtin_memcpy(t, f, n)
^~~~~~~~~~~~~~~~
drivers/nvme/target/discovery.c:120:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
memcpy(e->traddr, traddr, NVMF_TRADDR_SIZE);
^
arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
#define memcpy(t, f, n) __builtin_memcpy(t, f, n)
^~~~~~~~~~~~~~~~
drivers/nvme/target/discovery.c:120:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
memcpy(e->traddr, traddr, NVMF_TRADDR_SIZE);
^
arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
#define memcpy(t, f, n) __builtin_memcpy(t, f, n)
^~~~~~~~~~~~~~~~
drivers/nvme/target/discovery.c:121:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
memcpy(e->tsas.common, port->disc_addr.tsas.common, NVMF_TSAS_SIZE);
^
arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
#define memcpy(t, f, n) __builtin_memcpy(t, f, n)
^~~~~~~~~~~~~~~~
drivers/nvme/target/discovery.c:121:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
memcpy(e->tsas.common, port->disc_addr.tsas.common, NVMF_TSAS_SIZE);
^
arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
#define memcpy(t, f, n) __builtin_memcpy(t, f, n)
^~~~~~~~~~~~~~~~
drivers/nvme/target/discovery.c:122:2: warning: Call to function 'strncpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'strncpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
strncpy(e->subnqn, subsys_nqn, NVMF_NQN_SIZE);
^~~~~~~
drivers/nvme/target/discovery.c:122:2: note: Call to function 'strncpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'strncpy_s' in case of C11
strncpy(e->subnqn, subsys_nqn, NVMF_NQN_SIZE);
^~~~~~~
drivers/nvme/target/discovery.c:141:3: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
memcpy(traddr, port->disc_addr.traddr, NVMF_TRADDR_SIZE);
^
arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
#define memcpy(t, f, n) __builtin_memcpy(t, f, n)
^~~~~~~~~~~~~~~~
drivers/nvme/target/discovery.c:141:3: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
memcpy(traddr, port->disc_addr.traddr, NVMF_TRADDR_SIZE);
^
arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
#define memcpy(t, f, n) __builtin_memcpy(t, f, n)
^~~~~~~~~~~~~~~~
drivers/nvme/target/discovery.c:269:2: warning: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
memcpy(id->sn, ctrl->subsys->serial, NVMET_SN_MAX_SIZE);
^
arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
#define memcpy(t, f, n) __builtin_memcpy(t, f, n)
^~~~~~~~~~~~~~~~
drivers/nvme/target/discovery.c:269:2: note: Call to function 'memcpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memcpy_s' in case of C11
memcpy(id->sn, ctrl->subsys->serial, NVMET_SN_MAX_SIZE);
^
arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
#define memcpy(t, f, n) __builtin_memcpy(t, f, n)
^~~~~~~~~~~~~~~~
drivers/nvme/target/discovery.c:270:2: warning: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
memset(id->fr, ' ', sizeof(id->fr));
^
arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset'
#define memset(s, c, count) __builtin_memset(s, c, count)
^~~~~~~~~~~~~~~~
drivers/nvme/target/discovery.c:270:2: note: Call to function 'memset' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'memset_s' in case of C11
memset(id->fr, ' ', sizeof(id->fr));
^
arch/x86/include/asm/string_32.h:195:29: note: expanded from macro 'memset'
#define memset(s, c, count) __builtin_memset(s, c, count)
^~~~~~~~~~~~~~~~
Suppressed 42 warnings (42 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.
60 warnings generated.
Suppressed 60 warnings (60 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.
77 warnings generated.
drivers/net/phy/mdio_bus.c:235:9: warning: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
return sprintf(buf, "%llu\n", val);
^~~~~~~
drivers/net/phy/mdio_bus.c:235:9: note: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
return sprintf(buf, "%llu\n", val);
^~~~~~~
drivers/net/phy/mdio_bus.c:254:9: warning: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
return sprintf(buf, "%llu\n", val);
^~~~~~~
drivers/net/phy/mdio_bus.c:254:9: note: Call to function 'sprintf' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'sprintf_s' in case of C11
return sprintf(buf, "%llu\n", val);
^~~~~~~
drivers/net/phy/mdio_bus.c:497:2: warning: Call to function 'strncpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'strncpy_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling]
strncpy(mdiodev->modalias, bi->modalias,
^~~~~~~
drivers/net/phy/mdio_bus.c:497:2: note: Call to function 'strncpy' is insecure as it does not provide security checks introduced in the C11 standard. Replace with analogous functions that support length arguments or provides boundary checks such as 'strncpy_s' in case of C11
strncpy(mdiodev->modalias, bi->modalias,
^~~~~~~
drivers/net/phy/mdio_bus.c:511:21: warning: Value stored to 'phydev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct phy_device *phydev = ERR_PTR(-ENODEV);
^~~~~~ ~~~~~~~~~~~~~~~~
drivers/net/phy/mdio_bus.c:511:21: note: Value stored to 'phydev' during its initialization is never read
struct phy_device *phydev = ERR_PTR(-ENODEV);
^~~~~~ ~~~~~~~~~~~~~~~~
>> drivers/net/phy/mdio_bus.c:710:9: warning: The expression is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
while (--i >= 0) {
^ ~
drivers/net/phy/mdio_bus.c:621:6: note: 'i' declared without an initial value
int i, err;
^
drivers/net/phy/mdio_bus.c:624:6: note: Assuming 'bus' is not equal to null
if (NULL == bus || NULL == bus->name)
^
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
#define NULL ((void *)0)
^
include/linux/compiler.h:56:47: note: expanded from macro 'if'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
drivers/net/phy/mdio_bus.c:624:6: note: Left side of '||' is false
if (NULL == bus || NULL == bus->name)
^
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
#define NULL ((void *)0)
^
drivers/net/phy/mdio_bus.c:624:21: note: Assuming null is not equal to field 'name'
if (NULL == bus || NULL == bus->name)
^
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
#define NULL ((void *)0)
^
include/linux/compiler.h:56:47: note: expanded from macro 'if'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
drivers/net/phy/mdio_bus.c:624:2: note: '?' condition is false
if (NULL == bus || NULL == bus->name)
^
include/linux/compiler.h:56:28: note: expanded from macro 'if'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^
include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^
drivers/net/phy/mdio_bus.c:624:14: note: 'bus' is not equal to null
if (NULL == bus || NULL == bus->name)
^
include/linux/compiler.h:56:47: note: expanded from macro 'if'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^~~~
include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value'
(cond) ? \
^~~~
drivers/net/phy/mdio_bus.c:624:6: note: Left side of '||' is false
if (NULL == bus || NULL == bus->name)
^
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
#define NULL ((void *)0)
^
drivers/net/phy/mdio_bus.c:624:21: note: Null is not equal to field 'name'
if (NULL == bus || NULL == bus->name)
^
include/linux/stddef.h:8:14: note: expanded from macro 'NULL'
#define NULL ((void *)0)
^~~~~~~~~~~
include/linux/compiler.h:56:47: note: expanded from macro 'if'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^~~~
include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^~~~
include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value'
(cond) ? \
^~~~
drivers/net/phy/mdio_bus.c:624:2: note: '?' condition is false
if (NULL == bus || NULL == bus->name)
^
include/linux/compiler.h:56:28: note: expanded from macro 'if'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^
include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var'
#define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
^
include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value'
(cond) ? \
^
drivers/net/phy/mdio_bus.c:624:2: note: Taking false branch
if (NULL == bus || NULL == bus->name)
^
include/linux/compiler.h:56:23: note: expanded from macro 'if'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
^
drivers/net/phy/mdio_bus.c:627:6: note: Assuming field 'read' is non-null
if (!bus->read != !bus->write)
^
include/linux/compiler.h:56:47: note: expanded from macro 'if'
#define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
vim +710 drivers/net/phy/mdio_bus.c
4ed8df519849887 Andrew Lunn 2022-04-20 603
b3df0da886ffdb3 Randy Dunlap 2007-03-06 604 /**
59f069789c98678 Russell King 2015-09-25 605 * __mdiobus_register - bring up all the PHYs on a given bus and attach them to bus
b3df0da886ffdb3 Randy Dunlap 2007-03-06 606 * @bus: target mii_bus
59f069789c98678 Russell King 2015-09-25 607 * @owner: module containing bus accessor functions
e13934563db0470 Andy Fleming 2005-08-24 608 *
b3df0da886ffdb3 Randy Dunlap 2007-03-06 609 * Description: Called by a bus driver to bring up all the PHYs
59f069789c98678 Russell King 2015-09-25 610 * on a given bus, and attach them to the bus. Drivers should use
59f069789c98678 Russell King 2015-09-25 611 * mdiobus_register() rather than __mdiobus_register() unless they
f89df3f381f1e12 Andrew Lunn 2016-01-06 612 * need to pass a specific owner module. MDIO devices which are not
fec76125baf7390 Peng Li 2021-03-30 613 * PHYs will not be brought up by this function. They are expected
f89df3f381f1e12 Andrew Lunn 2016-01-06 614 * to be explicitly listed in DT and instantiated by of_mdiobus_register().
b3df0da886ffdb3 Randy Dunlap 2007-03-06 615 *
b3df0da886ffdb3 Randy Dunlap 2007-03-06 616 * Returns 0 on success or < 0 on error.
e13934563db0470 Andy Fleming 2005-08-24 617 */
3e3aaf649416988 Russell King 2015-09-24 618 int __mdiobus_register(struct mii_bus *bus, struct module *owner)
e13934563db0470 Andy Fleming 2005-08-24 619 {
711fdba37a3dd7e Andrew Lunn 2016-01-06 620 struct mdio_device *mdiodev;
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 621 int i, err;
69226896ad636b9 Roger Quadros 2017-04-21 622 struct gpio_desc *gpiod;
e13934563db0470 Andy Fleming 2005-08-24 623
effd7e805c90de8 Andrew Lunn 2022-04-02 624 if (NULL == bus || NULL == bus->name)
effd7e805c90de8 Andrew Lunn 2022-04-02 625 return -EINVAL;
effd7e805c90de8 Andrew Lunn 2022-04-02 626
effd7e805c90de8 Andrew Lunn 2022-04-02 627 if (!bus->read != !bus->write)
effd7e805c90de8 Andrew Lunn 2022-04-02 628 return -EINVAL;
effd7e805c90de8 Andrew Lunn 2022-04-02 629
effd7e805c90de8 Andrew Lunn 2022-04-02 630 if (!bus->read_c45 != !bus->write_c45)
effd7e805c90de8 Andrew Lunn 2022-04-02 631 return -EINVAL;
effd7e805c90de8 Andrew Lunn 2022-04-02 632
effd7e805c90de8 Andrew Lunn 2022-04-02 633 if (!bus->read && !bus->read_c45)
e13934563db0470 Andy Fleming 2005-08-24 634 return -EINVAL;
e13934563db0470 Andy Fleming 2005-08-24 635
04f41c68f18886a Saravana Kannan 2021-09-15 636 if (bus->parent && bus->parent->of_node)
04f41c68f18886a Saravana Kannan 2021-09-15 637 bus->parent->of_node->fwnode.flags |=
04f41c68f18886a Saravana Kannan 2021-09-15 638 FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD;
04f41c68f18886a Saravana Kannan 2021-09-15 639
867ae8a7993b26f Florian Fainelli 2021-11-17 640 WARN(bus->state != MDIOBUS_ALLOCATED &&
867ae8a7993b26f Florian Fainelli 2021-11-17 641 bus->state != MDIOBUS_UNREGISTERED,
867ae8a7993b26f Florian Fainelli 2021-11-17 642 "%s: not in ALLOCATED or UNREGISTERED state\n", bus->id);
46abc02175b3c24 Lennert Buytenhek 2008-10-08 643
3e3aaf649416988 Russell King 2015-09-24 644 bus->owner = owner;
46abc02175b3c24 Lennert Buytenhek 2008-10-08 645 bus->dev.parent = bus->parent;
46abc02175b3c24 Lennert Buytenhek 2008-10-08 646 bus->dev.class = &mdio_bus_class;
46abc02175b3c24 Lennert Buytenhek 2008-10-08 647 bus->dev.groups = NULL;
036b66879addb28 Stephen Hemminger 2009-02-26 648 dev_set_name(&bus->dev, "%s", bus->id);
46abc02175b3c24 Lennert Buytenhek 2008-10-08 649
ca6e11c337daf79 Pavel Skripkin 2021-09-30 650 /* We need to set state to MDIOBUS_UNREGISTERED to correctly release
ca6e11c337daf79 Pavel Skripkin 2021-09-30 651 * the device in mdiobus_free()
ca6e11c337daf79 Pavel Skripkin 2021-09-30 652 *
ca6e11c337daf79 Pavel Skripkin 2021-09-30 653 * State will be updated later in this function in case of success
ca6e11c337daf79 Pavel Skripkin 2021-09-30 654 */
ca6e11c337daf79 Pavel Skripkin 2021-09-30 655 bus->state = MDIOBUS_UNREGISTERED;
ca6e11c337daf79 Pavel Skripkin 2021-09-30 656
46abc02175b3c24 Lennert Buytenhek 2008-10-08 657 err = device_register(&bus->dev);
46abc02175b3c24 Lennert Buytenhek 2008-10-08 658 if (err) {
8d242488ce4627d Joe Perches 2012-06-09 659 pr_err("mii_bus %s failed to register\n", bus->id);
46abc02175b3c24 Lennert Buytenhek 2008-10-08 660 return -EINVAL;
46abc02175b3c24 Lennert Buytenhek 2008-10-08 661 }
46abc02175b3c24 Lennert Buytenhek 2008-10-08 662
d1e7fe4d92742dd Adrian Bunk 2008-02-20 663 mutex_init(&bus->mdio_lock);
6349084746ff4f5 Michael Walle 2020-05-06 664 mutex_init(&bus->shared_lock);
d1e7fe4d92742dd Adrian Bunk 2008-02-20 665
e0183b974d3008a Mike Looijmans 2021-02-02 666 /* assert bus level PHY GPIO reset */
e0183b974d3008a Mike Looijmans 2021-02-02 667 gpiod = devm_gpiod_get_optional(&bus->dev, "reset", GPIOD_OUT_HIGH);
69226896ad636b9 Roger Quadros 2017-04-21 668 if (IS_ERR(gpiod)) {
0a12ad592955619 Grygorii Strashko 2020-11-19 669 err = dev_err_probe(&bus->dev, PTR_ERR(gpiod),
0a12ad592955619 Grygorii Strashko 2020-11-19 670 "mii_bus %s couldn't get reset GPIO\n",
69226896ad636b9 Roger Quadros 2017-04-21 671 bus->id);
e40e2a2e78664fa Thomas Petazzoni 2019-01-16 672 device_del(&bus->dev);
0a12ad592955619 Grygorii Strashko 2020-11-19 673 return err;
fe0e4052fb11d5c Sergei Shtylyov 2017-06-12 674 } else if (gpiod) {
d396e84c56047b3 Sergei Shtylyov 2017-06-12 675 bus->reset_gpiod = gpiod;
6259e0f5478d7a7 Bruno Thomsen 2020-07-30 676 fsleep(bus->reset_delay_us);
69226896ad636b9 Roger Quadros 2017-04-21 677 gpiod_set_value_cansleep(gpiod, 0);
bb3831294cd5075 Bruno Thomsen 2020-07-30 678 if (bus->reset_post_delay_us > 0)
bb3831294cd5075 Bruno Thomsen 2020-07-30 679 fsleep(bus->reset_post_delay_us);
69226896ad636b9 Roger Quadros 2017-04-21 680 }
69226896ad636b9 Roger Quadros 2017-04-21 681
c290d1ab12d3385 Florian Fainelli 2020-04-18 682 if (bus->reset) {
c290d1ab12d3385 Florian Fainelli 2020-04-18 683 err = bus->reset(bus);
c290d1ab12d3385 Florian Fainelli 2020-04-18 684 if (err)
c290d1ab12d3385 Florian Fainelli 2020-04-18 685 goto error_reset_gpiod;
c290d1ab12d3385 Florian Fainelli 2020-04-18 686 }
df0c8d911abf6ba Florian Fainelli 2017-05-11 687
e582444c20a13a5 Andrew Lunn 2022-04-20 688 if (bus->probe_capabilities == MDIOBUS_NO_CAP ||
e582444c20a13a5 Andrew Lunn 2022-04-20 689 bus->probe_capabilities == MDIOBUS_C22 ||
e582444c20a13a5 Andrew Lunn 2022-04-20 690 bus->probe_capabilities == MDIOBUS_C22_C45) {
e582444c20a13a5 Andrew Lunn 2022-04-20 691 err = mdiobus_scan_bus_c22(bus);
e582444c20a13a5 Andrew Lunn 2022-04-20 692 if (err)
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 693 goto error;
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 694 }
e582444c20a13a5 Andrew Lunn 2022-04-20 695
e582444c20a13a5 Andrew Lunn 2022-04-20 696 if (bus->probe_capabilities == MDIOBUS_C45 ||
e582444c20a13a5 Andrew Lunn 2022-04-20 697 bus->probe_capabilities == MDIOBUS_C22_C45) {
e582444c20a13a5 Andrew Lunn 2022-04-20 698 err = mdiobus_scan_bus_c45(bus);
e582444c20a13a5 Andrew Lunn 2022-04-20 699 if (err)
e582444c20a13a5 Andrew Lunn 2022-04-20 700 goto error;
64b1c2b42b555ef Herbert Valerio Riedel 2006-05-10 701 }
f896424cbc61225 Matt Porter 2005-11-02 702
d0281a56b00c63a Florian Fainelli 2017-03-28 703 mdiobus_setup_mdiodev_from_board_info(bus, mdiobus_create_device);
648ea0134069cda Florian Fainelli 2017-02-04 704
e8e5752dc0a56a0 Krzysztof Halasa 2008-12-17 705 bus->state = MDIOBUS_REGISTERED;
7590fc6f80ac2cb Florian Fainelli 2022-01-03 706 dev_dbg(&bus->dev, "probed\n");
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 707 return 0;
e13934563db0470 Andy Fleming 2005-08-24 708
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 709 error:
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 @710 while (--i >= 0) {
711fdba37a3dd7e Andrew Lunn 2016-01-06 711 mdiodev = bus->mdio_map[i];
711fdba37a3dd7e Andrew Lunn 2016-01-06 712 if (!mdiodev)
711fdba37a3dd7e Andrew Lunn 2016-01-06 713 continue;
711fdba37a3dd7e Andrew Lunn 2016-01-06 714
711fdba37a3dd7e Andrew Lunn 2016-01-06 715 mdiodev->device_remove(mdiodev);
711fdba37a3dd7e Andrew Lunn 2016-01-06 716 mdiodev->device_free(mdiodev);
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 717 }
c290d1ab12d3385 Florian Fainelli 2020-04-18 718 error_reset_gpiod:
69226896ad636b9 Roger Quadros 2017-04-21 719 /* Put PHYs in RESET to save power */
a010a2f6540ecc3 Florian Fainelli 2017-09-08 720 if (bus->reset_gpiod)
d396e84c56047b3 Sergei Shtylyov 2017-06-12 721 gpiod_set_value_cansleep(bus->reset_gpiod, 1);
69226896ad636b9 Roger Quadros 2017-04-21 722
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 723 device_del(&bus->dev);
4fd5f812c23c7de Lennert Buytenhek 2008-08-26 724 return err;
4fd5f812c23c7de Lennert Buytenhek 2008-08-26 725 }
3e3aaf649416988 Russell King 2015-09-24 726 EXPORT_SYMBOL(__mdiobus_register);
4fd5f812c23c7de Lennert Buytenhek 2008-08-26 727
:::::: The code at line 710 was first introduced by commit
:::::: 161c8d2f50109b44b664eaf23831ea1587979a61 net: PHYLIB mdio fixes #2
:::::: TO: Krzysztof Halasa <khc@pm.waw.pl>
:::::: 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
* [lunn:dsa-ci 22/47] drivers/net/phy/mdio_bus.c:710:9: warning: The expression is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
2022-05-04 12:37 [lunn:dsa-ci 22/47] drivers/net/phy/mdio_bus.c:710:9: warning: The expression is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign] kernel test robot
@ 2022-05-09 5:49 ` kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-05-09 5:49 UTC (permalink / raw)
To: Andrew Lunn; +Cc: llvm, kbuild-all, Linux Kernel Mailing List
tree: https://github.com/lunn/linux.git dsa-ci
head: 1149273e5c97f04e2255421372a8a30c75c0b842
commit: e582444c20a13a52eabf1d982d1f7e96344be2a8 [22/47] net: mdiobus: Rework scanning of bus ready for quirks
config: i386-randconfig-c001 (https://download.01.org/0day-ci/archive/20220504/202205042049.SwDh4zxv-lkp@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 09325d36061e42b495d1f4c7e933e260eac260ed)
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/lunn/linux/commit/e582444c20a13a52eabf1d982d1f7e96344be2a8
git remote add lunn https://github.com/lunn/linux.git
git fetch --no-tags lunn dsa-ci
git checkout e582444c20a13a52eabf1d982d1f7e96344be2a8
# save the config file
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <yujie.liu@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
>> drivers/net/phy/mdio_bus.c:710:9: warning: The expression is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
while (--i >= 0) {
^ ~
drivers/net/phy/mdio_bus.c:621:6: note: 'i' declared without an initial value
int i, err;
^
vim +710 drivers/net/phy/mdio_bus.c
4ed8df519849887 Andrew Lunn 2022-04-20 603
b3df0da886ffdb3 Randy Dunlap 2007-03-06 604 /**
59f069789c98678 Russell King 2015-09-25 605 * __mdiobus_register - bring up all the PHYs on a given bus and attach them to bus
b3df0da886ffdb3 Randy Dunlap 2007-03-06 606 * @bus: target mii_bus
59f069789c98678 Russell King 2015-09-25 607 * @owner: module containing bus accessor functions
e13934563db0470 Andy Fleming 2005-08-24 608 *
b3df0da886ffdb3 Randy Dunlap 2007-03-06 609 * Description: Called by a bus driver to bring up all the PHYs
59f069789c98678 Russell King 2015-09-25 610 * on a given bus, and attach them to the bus. Drivers should use
59f069789c98678 Russell King 2015-09-25 611 * mdiobus_register() rather than __mdiobus_register() unless they
f89df3f381f1e12 Andrew Lunn 2016-01-06 612 * need to pass a specific owner module. MDIO devices which are not
fec76125baf7390 Peng Li 2021-03-30 613 * PHYs will not be brought up by this function. They are expected
f89df3f381f1e12 Andrew Lunn 2016-01-06 614 * to be explicitly listed in DT and instantiated by of_mdiobus_register().
b3df0da886ffdb3 Randy Dunlap 2007-03-06 615 *
b3df0da886ffdb3 Randy Dunlap 2007-03-06 616 * Returns 0 on success or < 0 on error.
e13934563db0470 Andy Fleming 2005-08-24 617 */
3e3aaf649416988 Russell King 2015-09-24 618 int __mdiobus_register(struct mii_bus *bus, struct module *owner)
e13934563db0470 Andy Fleming 2005-08-24 619 {
711fdba37a3dd7e Andrew Lunn 2016-01-06 620 struct mdio_device *mdiodev;
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 @621 int i, err;
69226896ad636b9 Roger Quadros 2017-04-21 622 struct gpio_desc *gpiod;
e13934563db0470 Andy Fleming 2005-08-24 623
effd7e805c90de8 Andrew Lunn 2022-04-02 624 if (NULL == bus || NULL == bus->name)
effd7e805c90de8 Andrew Lunn 2022-04-02 625 return -EINVAL;
effd7e805c90de8 Andrew Lunn 2022-04-02 626
effd7e805c90de8 Andrew Lunn 2022-04-02 627 if (!bus->read != !bus->write)
effd7e805c90de8 Andrew Lunn 2022-04-02 628 return -EINVAL;
effd7e805c90de8 Andrew Lunn 2022-04-02 629
effd7e805c90de8 Andrew Lunn 2022-04-02 630 if (!bus->read_c45 != !bus->write_c45)
effd7e805c90de8 Andrew Lunn 2022-04-02 631 return -EINVAL;
effd7e805c90de8 Andrew Lunn 2022-04-02 632
effd7e805c90de8 Andrew Lunn 2022-04-02 633 if (!bus->read && !bus->read_c45)
e13934563db0470 Andy Fleming 2005-08-24 634 return -EINVAL;
e13934563db0470 Andy Fleming 2005-08-24 635
04f41c68f18886a Saravana Kannan 2021-09-15 636 if (bus->parent && bus->parent->of_node)
04f41c68f18886a Saravana Kannan 2021-09-15 637 bus->parent->of_node->fwnode.flags |=
04f41c68f18886a Saravana Kannan 2021-09-15 638 FWNODE_FLAG_NEEDS_CHILD_BOUND_ON_ADD;
04f41c68f18886a Saravana Kannan 2021-09-15 639
867ae8a7993b26f Florian Fainelli 2021-11-17 640 WARN(bus->state != MDIOBUS_ALLOCATED &&
867ae8a7993b26f Florian Fainelli 2021-11-17 641 bus->state != MDIOBUS_UNREGISTERED,
867ae8a7993b26f Florian Fainelli 2021-11-17 642 "%s: not in ALLOCATED or UNREGISTERED state\n", bus->id);
46abc02175b3c24 Lennert Buytenhek 2008-10-08 643
3e3aaf649416988 Russell King 2015-09-24 644 bus->owner = owner;
46abc02175b3c24 Lennert Buytenhek 2008-10-08 645 bus->dev.parent = bus->parent;
46abc02175b3c24 Lennert Buytenhek 2008-10-08 646 bus->dev.class = &mdio_bus_class;
46abc02175b3c24 Lennert Buytenhek 2008-10-08 647 bus->dev.groups = NULL;
036b66879addb28 Stephen Hemminger 2009-02-26 648 dev_set_name(&bus->dev, "%s", bus->id);
46abc02175b3c24 Lennert Buytenhek 2008-10-08 649
ca6e11c337daf79 Pavel Skripkin 2021-09-30 650 /* We need to set state to MDIOBUS_UNREGISTERED to correctly release
ca6e11c337daf79 Pavel Skripkin 2021-09-30 651 * the device in mdiobus_free()
ca6e11c337daf79 Pavel Skripkin 2021-09-30 652 *
ca6e11c337daf79 Pavel Skripkin 2021-09-30 653 * State will be updated later in this function in case of success
ca6e11c337daf79 Pavel Skripkin 2021-09-30 654 */
ca6e11c337daf79 Pavel Skripkin 2021-09-30 655 bus->state = MDIOBUS_UNREGISTERED;
ca6e11c337daf79 Pavel Skripkin 2021-09-30 656
46abc02175b3c24 Lennert Buytenhek 2008-10-08 657 err = device_register(&bus->dev);
46abc02175b3c24 Lennert Buytenhek 2008-10-08 658 if (err) {
8d242488ce4627d Joe Perches 2012-06-09 659 pr_err("mii_bus %s failed to register\n", bus->id);
46abc02175b3c24 Lennert Buytenhek 2008-10-08 660 return -EINVAL;
46abc02175b3c24 Lennert Buytenhek 2008-10-08 661 }
46abc02175b3c24 Lennert Buytenhek 2008-10-08 662
d1e7fe4d92742dd Adrian Bunk 2008-02-20 663 mutex_init(&bus->mdio_lock);
6349084746ff4f5 Michael Walle 2020-05-06 664 mutex_init(&bus->shared_lock);
d1e7fe4d92742dd Adrian Bunk 2008-02-20 665
e0183b974d3008a Mike Looijmans 2021-02-02 666 /* assert bus level PHY GPIO reset */
e0183b974d3008a Mike Looijmans 2021-02-02 667 gpiod = devm_gpiod_get_optional(&bus->dev, "reset", GPIOD_OUT_HIGH);
69226896ad636b9 Roger Quadros 2017-04-21 668 if (IS_ERR(gpiod)) {
0a12ad592955619 Grygorii Strashko 2020-11-19 669 err = dev_err_probe(&bus->dev, PTR_ERR(gpiod),
0a12ad592955619 Grygorii Strashko 2020-11-19 670 "mii_bus %s couldn't get reset GPIO\n",
69226896ad636b9 Roger Quadros 2017-04-21 671 bus->id);
e40e2a2e78664fa Thomas Petazzoni 2019-01-16 672 device_del(&bus->dev);
0a12ad592955619 Grygorii Strashko 2020-11-19 673 return err;
fe0e4052fb11d5c Sergei Shtylyov 2017-06-12 674 } else if (gpiod) {
d396e84c56047b3 Sergei Shtylyov 2017-06-12 675 bus->reset_gpiod = gpiod;
6259e0f5478d7a7 Bruno Thomsen 2020-07-30 676 fsleep(bus->reset_delay_us);
69226896ad636b9 Roger Quadros 2017-04-21 677 gpiod_set_value_cansleep(gpiod, 0);
bb3831294cd5075 Bruno Thomsen 2020-07-30 678 if (bus->reset_post_delay_us > 0)
bb3831294cd5075 Bruno Thomsen 2020-07-30 679 fsleep(bus->reset_post_delay_us);
69226896ad636b9 Roger Quadros 2017-04-21 680 }
69226896ad636b9 Roger Quadros 2017-04-21 681
c290d1ab12d3385 Florian Fainelli 2020-04-18 682 if (bus->reset) {
c290d1ab12d3385 Florian Fainelli 2020-04-18 683 err = bus->reset(bus);
c290d1ab12d3385 Florian Fainelli 2020-04-18 684 if (err)
c290d1ab12d3385 Florian Fainelli 2020-04-18 685 goto error_reset_gpiod;
c290d1ab12d3385 Florian Fainelli 2020-04-18 686 }
df0c8d911abf6ba Florian Fainelli 2017-05-11 687
e582444c20a13a5 Andrew Lunn 2022-04-20 688 if (bus->probe_capabilities == MDIOBUS_NO_CAP ||
e582444c20a13a5 Andrew Lunn 2022-04-20 689 bus->probe_capabilities == MDIOBUS_C22 ||
e582444c20a13a5 Andrew Lunn 2022-04-20 690 bus->probe_capabilities == MDIOBUS_C22_C45) {
e582444c20a13a5 Andrew Lunn 2022-04-20 691 err = mdiobus_scan_bus_c22(bus);
e582444c20a13a5 Andrew Lunn 2022-04-20 692 if (err)
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 693 goto error;
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 694 }
e582444c20a13a5 Andrew Lunn 2022-04-20 695
e582444c20a13a5 Andrew Lunn 2022-04-20 696 if (bus->probe_capabilities == MDIOBUS_C45 ||
e582444c20a13a5 Andrew Lunn 2022-04-20 697 bus->probe_capabilities == MDIOBUS_C22_C45) {
e582444c20a13a5 Andrew Lunn 2022-04-20 698 err = mdiobus_scan_bus_c45(bus);
e582444c20a13a5 Andrew Lunn 2022-04-20 699 if (err)
e582444c20a13a5 Andrew Lunn 2022-04-20 700 goto error;
64b1c2b42b555ef Herbert Valerio Riedel 2006-05-10 701 }
f896424cbc61225 Matt Porter 2005-11-02 702
d0281a56b00c63a Florian Fainelli 2017-03-28 703 mdiobus_setup_mdiodev_from_board_info(bus, mdiobus_create_device);
648ea0134069cda Florian Fainelli 2017-02-04 704
e8e5752dc0a56a0 Krzysztof Halasa 2008-12-17 705 bus->state = MDIOBUS_REGISTERED;
7590fc6f80ac2cb Florian Fainelli 2022-01-03 706 dev_dbg(&bus->dev, "probed\n");
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 707 return 0;
e13934563db0470 Andy Fleming 2005-08-24 708
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 709 error:
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 @710 while (--i >= 0) {
711fdba37a3dd7e Andrew Lunn 2016-01-06 711 mdiodev = bus->mdio_map[i];
711fdba37a3dd7e Andrew Lunn 2016-01-06 712 if (!mdiodev)
711fdba37a3dd7e Andrew Lunn 2016-01-06 713 continue;
711fdba37a3dd7e Andrew Lunn 2016-01-06 714
711fdba37a3dd7e Andrew Lunn 2016-01-06 715 mdiodev->device_remove(mdiodev);
711fdba37a3dd7e Andrew Lunn 2016-01-06 716 mdiodev->device_free(mdiodev);
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 717 }
c290d1ab12d3385 Florian Fainelli 2020-04-18 718 error_reset_gpiod:
69226896ad636b9 Roger Quadros 2017-04-21 719 /* Put PHYs in RESET to save power */
a010a2f6540ecc3 Florian Fainelli 2017-09-08 720 if (bus->reset_gpiod)
d396e84c56047b3 Sergei Shtylyov 2017-06-12 721 gpiod_set_value_cansleep(bus->reset_gpiod, 1);
69226896ad636b9 Roger Quadros 2017-04-21 722
161c8d2f50109b4 Krzysztof Halasa 2008-12-25 723 device_del(&bus->dev);
4fd5f812c23c7de Lennert Buytenhek 2008-08-26 724 return err;
4fd5f812c23c7de Lennert Buytenhek 2008-08-26 725 }
3e3aaf649416988 Russell King 2015-09-24 726 EXPORT_SYMBOL(__mdiobus_register);
4fd5f812c23c7de Lennert Buytenhek 2008-08-26 727
--
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-05-09 5:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-04 12:37 [lunn:dsa-ci 22/47] drivers/net/phy/mdio_bus.c:710:9: warning: The expression is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign] kernel test robot
2022-05-09 5:49 ` 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.