CC: [email protected] CC: [email protected] In-Reply-To: <[email protected]> References: <[email protected]> TO: Heikki Krogerus <[email protected]> TO: "Rafael J. Wysocki" <[email protected]> TO: "Greg Kroah-Hartman" <[email protected]> CC: Andy Shevchenko <[email protected]> CC: Sakari Ailus <[email protected]> CC: Prashant Malani <[email protected]> CC: [email protected] CC: [email protected] CC: [email protected]
Hi Heikki, I love your patch! Perhaps something to improve: [auto build test WARNING on usb/usb-testing] [also build test WARNING on rafael-pm/linux-next linus/master v5.16-rc4] [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] url: https://github.com/0day-ci/linux/commits/Heikki-Krogerus/acpi-Store-_PLD-information-and-convert-users/20211207-223940 base: https://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git usb-testing :::::: branch date: 5 days ago :::::: commit date: 5 days ago config: i386-randconfig-c001-20211207 (https://download.01.org/0day-ci/archive/20211212/[email protected]/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/447d4051cf4a7ba3c5f9277c945528a5efd787f3 git remote add linux-review https://github.com/0day-ci/linux git fetch --no-tags linux-review Heikki-Krogerus/acpi-Store-_PLD-information-and-convert-users/20211207-223940 git checkout 447d4051cf4a7ba3c5f9277c945528a5efd787f3 # save the config file to linux build tree 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 <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) ^~~ drivers/net/ethernet/intel/ice/ice_devlink.c:619:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = ice_pf_to_dev(pf); ^~~ drivers/net/ethernet/intel/ice/ice_devlink.c:676:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = ice_pf_to_dev(pf); ^~~ drivers/net/ethernet/intel/ice/ice_devlink.c:676:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = ice_pf_to_dev(pf); ^~~ 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. drivers/net/ethernet/intel/ice/ice_fw_update.c:366:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = ice_pf_to_dev(pf); ^~~ drivers/net/ethernet/intel/ice/ice_fw_update.c:366:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = ice_pf_to_dev(pf); ^~~ 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. 14 warnings generated. drivers/net/ethernet/intel/ice/ice_lag.c:65:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = &lag->pf->pdev->dev; ^~~ ~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:65:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = &lag->pf->pdev->dev; ^~~ ~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:67:2: warning: Value stored to 'name' is never read [clang-analyzer-deadcode.DeadStores] name = lag->netdev ? netdev_name(lag->netdev) : "unset"; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:67:2: note: Value stored to 'name' is never read name = lag->netdev ? netdev_name(lag->netdev) : "unset"; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:68:2: warning: Value stored to 'peer' is never read [clang-analyzer-deadcode.DeadStores] peer = lag->peer_netdev ? netdev_name(lag->peer_netdev) : "unset"; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:68:2: note: Value stored to 'peer' is never read peer = lag->peer_netdev ? netdev_name(lag->peer_netdev) : "unset"; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:69:2: warning: Value stored to 'upper' is never read [clang-analyzer-deadcode.DeadStores] upper = lag->upper_netdev ? netdev_name(lag->upper_netdev) : "unset"; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:69:2: note: Value stored to 'upper' is never read upper = lag->upper_netdev ? netdev_name(lag->upper_netdev) : "unset"; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:70:2: warning: Value stored to 'master' is never read [clang-analyzer-deadcode.DeadStores] master = lag->master ? "TRUE" : "FALSE"; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:70:2: note: Value stored to 'master' is never read master = lag->master ? "TRUE" : "FALSE"; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:71:2: warning: Value stored to 'bonded' is never read [clang-analyzer-deadcode.DeadStores] bonded = lag->bonded ? "BONDED" : "UNBONDED"; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:71:2: note: Value stored to 'bonded' is never read bonded = lag->bonded ? "BONDED" : "UNBONDED"; ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:75:3: warning: Value stored to 'role' is never read [clang-analyzer-deadcode.DeadStores] role = "NONE"; ^ ~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:75:3: note: Value stored to 'role' is never read role = "NONE"; ^ ~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:78:3: warning: Value stored to 'role' is never read [clang-analyzer-deadcode.DeadStores] role = "PRIMARY"; ^ ~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:78:3: note: Value stored to 'role' is never read role = "PRIMARY"; ^ ~~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:81:3: warning: Value stored to 'role' is never read [clang-analyzer-deadcode.DeadStores] role = "BACKUP"; ^ ~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:81:3: note: Value stored to 'role' is never read role = "BACKUP"; ^ ~~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:84:3: warning: Value stored to 'role' is never read [clang-analyzer-deadcode.DeadStores] role = "UNSET"; ^ ~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:84:3: note: Value stored to 'role' is never read role = "UNSET"; ^ ~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:87:3: warning: Value stored to 'role' is never read [clang-analyzer-deadcode.DeadStores] role = "ERROR"; ^ ~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:87:3: note: Value stored to 'role' is never read role = "ERROR"; ^ ~~~~~~~ drivers/net/ethernet/intel/ice/ice_lag.c:348:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores] struct device *dev = ice_pf_to_dev(lag->pf); ^~~ drivers/net/ethernet/intel/ice/ice_lag.c:348:17: note: Value stored to 'dev' during its initialization is never read struct device *dev = ice_pf_to_dev(lag->pf); ^~~ 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. 1 warning generated. Suppressed 1 warnings (1 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. >> drivers/usb/typec/port-mapper.c:45:2: warning: Dereference of null pointer >> [clang-analyzer-core.NullDereference] list_for_each_entry(adev, &location->devices, location_list) { ^ include/linux/list.h:632:13: note: expanded from macro 'list_for_each_entry' pos = list_next_entry(pos, member)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/list.h:557:2: note: expanded from macro 'list_next_entry' list_entry((pos)->member.next, typeof(*(pos)), member) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/list.h:513:2: note: expanded from macro 'list_entry' container_of(ptr, type, member) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/container_of.h:18:25: note: expanded from macro 'container_of' void *__mptr = (void *)(ptr); \ ^~~~~ drivers/usb/typec/port-mapper.c:40:38: note: Assuming the condition is true location = acpi_device_get_location(ACPI_COMPANION(&con->dev)); ^ include/linux/acpi.h:43:30: note: expanded from macro 'ACPI_COMPANION' #define ACPI_COMPANION(dev) to_acpi_device_node((dev)->fwnode) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/acpi/acpi_bus.h:426:3: note: expanded from macro 'to_acpi_device_node' is_acpi_device_node(__to_acpi_device_node_fwnode) ? \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/usb/typec/port-mapper.c:40:38: note: '?' condition is true location = acpi_device_get_location(ACPI_COMPANION(&con->dev)); ^ include/linux/acpi.h:43:30: note: expanded from macro 'ACPI_COMPANION' #define ACPI_COMPANION(dev) to_acpi_device_node((dev)->fwnode) ^ include/acpi/acpi_bus.h:426:3: note: expanded from macro 'to_acpi_device_node' is_acpi_device_node(__to_acpi_device_node_fwnode) ? \ ^ drivers/usb/typec/port-mapper.c:41:6: note: Assuming 'location' is non-null if (!location) ^ 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/usb/typec/port-mapper.c:41:2: note: '?' condition is false if (!location) ^ 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/usb/typec/port-mapper.c:41:7: note: 'location' is non-null if (!location) ^ 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/usb/typec/port-mapper.c:41:2: note: '?' condition is false if (!location) ^ 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/usb/typec/port-mapper.c:41:2: note: Taking false branch if (!location) ^ include/linux/compiler.h:56:23: note: expanded from macro 'if' #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) ) ^ drivers/usb/typec/port-mapper.c:45:2: note: Loop condition is true. Entering loop body list_for_each_entry(adev, &location->devices, location_list) { ^ include/linux/list.h:630:2: note: expanded from macro 'list_for_each_entry' for (pos = list_first_entry(head, typeof(*pos), member); \ ^ drivers/usb/typec/port-mapper.c:46:15: note: Assuming the condition is false if (adev == ACPI_COMPANION(&con->dev)) ^ include/linux/acpi.h:43:30: note: expanded from macro 'ACPI_COMPANION' #define ACPI_COMPANION(dev) to_acpi_device_node((dev)->fwnode) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/acpi/acpi_bus.h:426:3: note: expanded from macro 'to_acpi_device_node' is_acpi_device_node(__to_acpi_device_node_fwnode) ? \ ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 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)) vim +45 drivers/usb/typec/port-mapper.c ae196ddb0d3186 Heikki Krogerus 2021-04-07 33 447d4051cf4a7b Heikki Krogerus 2021-12-07 34 int typec_link_ports(struct typec_port *con) ae196ddb0d3186 Heikki Krogerus 2021-04-07 35 { 447d4051cf4a7b Heikki Krogerus 2021-12-07 36 struct acpi_device_location *location; 447d4051cf4a7b Heikki Krogerus 2021-12-07 37 struct component_match *match = NULL; 447d4051cf4a7b Heikki Krogerus 2021-12-07 38 struct acpi_device *adev; ae196ddb0d3186 Heikki Krogerus 2021-04-07 39 447d4051cf4a7b Heikki Krogerus 2021-12-07 40 location = acpi_device_get_location(ACPI_COMPANION(&con->dev)); 447d4051cf4a7b Heikki Krogerus 2021-12-07 41 if (!location) ae196ddb0d3186 Heikki Krogerus 2021-04-07 42 return 0; ae196ddb0d3186 Heikki Krogerus 2021-04-07 43 447d4051cf4a7b Heikki Krogerus 2021-12-07 44 /* Component match for every device that shares the same _PLD. */ 447d4051cf4a7b Heikki Krogerus 2021-12-07 @45 list_for_each_entry(adev, &location->devices, location_list) { 447d4051cf4a7b Heikki Krogerus 2021-12-07 46 if (adev == ACPI_COMPANION(&con->dev)) 447d4051cf4a7b Heikki Krogerus 2021-12-07 47 continue; ae196ddb0d3186 Heikki Krogerus 2021-04-07 48 447d4051cf4a7b Heikki Krogerus 2021-12-07 49 component_match_add(&con->dev, &match, typec_port_compare, 447d4051cf4a7b Heikki Krogerus 2021-12-07 50 acpi_fwnode_handle(adev)); ae196ddb0d3186 Heikki Krogerus 2021-04-07 51 } ae196ddb0d3186 Heikki Krogerus 2021-04-07 52 447d4051cf4a7b Heikki Krogerus 2021-12-07 53 /* 447d4051cf4a7b Heikki Krogerus 2021-12-07 54 * REVISIT: Now each connector can have only a single component master. 447d4051cf4a7b Heikki Krogerus 2021-12-07 55 * So far only the USB ports connected to the USB Type-C connector share 447d4051cf4a7b Heikki Krogerus 2021-12-07 56 * the _PLD with it, but if there one day is something else (like maybe 447d4051cf4a7b Heikki Krogerus 2021-12-07 57 * the DisplayPort ACPI device object) that also shares the _PLD with 447d4051cf4a7b Heikki Krogerus 2021-12-07 58 * the connector, every one of those needs to have its own component 447d4051cf4a7b Heikki Krogerus 2021-12-07 59 * master, because each different type of component needs to be bind to 447d4051cf4a7b Heikki Krogerus 2021-12-07 60 * the connector independently of the other components. That requires 447d4051cf4a7b Heikki Krogerus 2021-12-07 61 * improvements to the component framework. Right now you can only have 447d4051cf4a7b Heikki Krogerus 2021-12-07 62 * one master per device. ae196ddb0d3186 Heikki Krogerus 2021-04-07 63 */ ee64fc599b721c Heikki Krogerus 2021-04-07 64 447d4051cf4a7b Heikki Krogerus 2021-12-07 65 return component_master_add_with_match(&con->dev, &typec_aggregate_ops, match); ee64fc599b721c Heikki Krogerus 2021-04-07 66 } ee64fc599b721c Heikki Krogerus 2021-04-07 67 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/[email protected] _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
