CC: [email protected] CC: [email protected] CC: [email protected] TO: Dan Williams <[email protected]> CC: Jonathan Cameron <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 038101e6b2cd5c55f888f85db42ea2ad3aecb4b6 commit: 21083f51521fb0f60dbac591f175c3ed48435af4 cxl/pmem: Register 'pmem' / cxl_nvdimm devices date: 8 months ago :::::: branch date: 24 hours ago :::::: commit date: 8 months ago config: riscv-randconfig-c006-20220221 (https://download.01.org/0day-ci/archive/20220223/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e) 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 riscv cross compiling tool for clang build # apt-get install binutils-riscv64-linux-gnu # https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=21083f51521fb0f60dbac591f175c3ed48435af4 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout 21083f51521fb0f60dbac591f175c3ed48435af4 # save the config file to linux build tree COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=riscv 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 >>) ^ fs/jfs/jfs_dtree.c:787:2: note: Assuming the condition is true DT_PUTPAGE(mp); ^ fs/jfs/jfs_dtree.c:131:24: note: expanded from macro 'DT_PUTPAGE' #define DT_PUTPAGE(MP) BT_PUTPAGE(MP) ^~~~~~~~~~~~~~ fs/jfs/jfs_btree.h:87:8: note: expanded from macro 'BT_PUTPAGE' if (! BT_IS_ROOT(MP)) \ ^~~~~~~~~~~~~~ fs/jfs/jfs_btree.h:47:25: note: expanded from macro 'BT_IS_ROOT' #define BT_IS_ROOT(MP) (((MP)->xflag & COMMIT_PAGE) == 0) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/jfs/jfs_dtree.c:787:2: note: Taking false branch DT_PUTPAGE(mp); ^ fs/jfs/jfs_dtree.c:131:24: note: expanded from macro 'DT_PUTPAGE' #define DT_PUTPAGE(MP) BT_PUTPAGE(MP) ^ fs/jfs/jfs_btree.h:87:2: note: expanded from macro 'BT_PUTPAGE' if (! BT_IS_ROOT(MP)) \ ^ fs/jfs/jfs_dtree.c:4528:12: note: Returning from 'dtSearch' if ((rc = dtSearch(ip, key, orig_ino, &btstack, flag))) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/jfs/jfs_dtree.c:4528:7: note: Assuming 'rc' is 0 if ((rc = dtSearch(ip, key, orig_ino, &btstack, flag))) ^~ fs/jfs/jfs_dtree.c:4528:2: note: Taking false branch if ((rc = dtSearch(ip, key, orig_ino, &btstack, flag))) ^ fs/jfs/jfs_dtree.c:4532:2: note: Assigned value is garbage or undefined DT_GETSEARCH(ip, btstack.top, bn, mp, p, index); ^ fs/jfs/jfs_dtree.c:134:2: note: expanded from macro 'DT_GETSEARCH' BT_GETSEARCH(IP, LEAF, BN, MP, dtpage_t, P, INDEX, i_dtroot) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/jfs/jfs_btree.h:144:5: note: expanded from macro 'BT_GETSEARCH' BN = (LEAF)->bn;\ ^ ~~~~~~~~~~ fs/jfs/jfs_types.h:67:33: warning: The left operand of '&' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult] pxd->len_addr = (pxd->len_addr & cpu_to_le32(0xffffff)) | ^ fs/jfs/jfs_dtree.c:946:7: note: Assuming the condition is false sp = DT_PAGE(ip, smp); ^ fs/jfs/jfs_dtree.c:111:25: note: expanded from macro 'DT_PAGE' #define DT_PAGE(IP, MP) BT_PAGE(IP, MP, dtpage_t, i_dtroot) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/jfs/jfs_btree.h:51:3: note: expanded from macro 'BT_PAGE' (BT_IS_ROOT(MP) ? (TYPE *)&JFS_IP(IP)->ROOT : (TYPE *)(MP)->data) ^~~~~~~~~~~~~~ fs/jfs/jfs_btree.h:47:25: note: expanded from macro 'BT_IS_ROOT' #define BT_IS_ROOT(MP) (((MP)->xflag & COMMIT_PAGE) == 0) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/jfs/jfs_dtree.c:946:7: note: '?' condition is false sp = DT_PAGE(ip, smp); ^ fs/jfs/jfs_dtree.c:111:25: note: expanded from macro 'DT_PAGE' #define DT_PAGE(IP, MP) BT_PAGE(IP, MP, dtpage_t, i_dtroot) ^ fs/jfs/jfs_btree.h:51:3: note: expanded from macro 'BT_PAGE' (BT_IS_ROOT(MP) ? (TYPE *)&JFS_IP(IP)->ROOT : (TYPE *)(MP)->data) ^ fs/jfs/jfs_btree.h:47:24: note: expanded from macro 'BT_IS_ROOT' #define BT_IS_ROOT(MP) (((MP)->xflag & COMMIT_PAGE) == 0) ^ fs/jfs/jfs_dtree.c:949:6: note: Assuming field 'name' is non-null if (!key.name) { ^~~~~~~~~ fs/jfs/jfs_dtree.c:949:2: note: Taking false branch if (!key.name) { ^ fs/jfs/jfs_dtree.c:964:6: note: Assuming the condition is true if (sp->header.flag & BT_ROOT) { ^~~~~~~~~~~~~~~~~~~~~~~~~ fs/jfs/jfs_dtree.c:964:2: note: Taking true branch if (sp->header.flag & BT_ROOT) { ^ fs/jfs/jfs_dtree.c:972:7: note: Assuming 'n' is > field 'nslot' if (n <= split->nslot) ^~~~~~~~~~~~~~~~~ fs/jfs/jfs_dtree.c:972:3: note: Taking false branch if (n <= split->nslot) ^ fs/jfs/jfs_dtree.c:974:8: note: Assuming 'rc' is 0 if ((rc = dbAlloc(ip, 0, (s64) xlen, &xaddr))) { ^~ fs/jfs/jfs_dtree.c:974:3: note: Taking false branch if ((rc = dbAlloc(ip, 0, (s64) xlen, &xaddr))) { ^ fs/jfs/jfs_dtree.c:982:3: note: Calling 'PXDaddress' PXDaddress(pxd, xaddr); ^~~~~~~~~~~~~~~~~~~~~~ fs/jfs/jfs_types.h:67:33: note: The left operand of '&' is a garbage value pxd->len_addr = (pxd->len_addr & cpu_to_le32(0xffffff)) | ~~~~~~~~~~~~~ ^ Suppressed 9 warnings (2 in non-user code, 7 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. 10 warnings generated. >> drivers/cxl/pmem.c:143:7: warning: Value stored to 'rc' during its >> initialization is never read [clang-analyzer-deadcode.DeadStores] int rc = bus_rescan_devices(&cxl_bus_type); ^~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/cxl/pmem.c:143:7: note: Value stored to 'rc' during its initialization is never read int rc = bus_rescan_devices(&cxl_bus_type); ^~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 9 warnings (2 in non-user code, 7 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. 14 warnings generated. drivers/ata/libata-core.c:92:8: warning: Excessive padding in 'struct ata_force_param' (12 padding bytes, where 4 is optimal). Optimal fields order: name, xfer_mask, horkage_on, horkage_off, lflags, cbl, spd_limit, consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding] struct ata_force_param { ~~~~~~~^~~~~~~~~~~~~~~~~ drivers/ata/libata-core.c:92:8: note: Excessive padding in 'struct ata_force_param' (12 padding bytes, where 4 is optimal). Optimal fields order: name, xfer_mask, horkage_on, horkage_off, lflags, cbl, spd_limit, consider reordering the fields or adding explicit padding members struct ata_force_param { ~~~~~~~^~~~~~~~~~~~~~~~~ drivers/ata/libata-core.c:4544:7: warning: Access to field 'ap' results in a dereference of a null pointer (loaded from variable 'qc') [clang-analyzer-core.NullDereference] ap = qc->ap; ^~ drivers/ata/libata-core.c:4543:15: note: Assuming 'qc' is equal to null WARN_ON_ONCE(qc == NULL); /* ata_qc_from_tag _might_ return NULL */ ^ include/asm-generic/bug.h:201:41: note: expanded from macro 'WARN_ON_ONCE' #define WARN_ON_ONCE(condition) WARN_ON(condition) ~~~~~~~~^~~~~~~~~~ include/asm-generic/bug.h:188:25: note: expanded from macro 'WARN_ON' int __ret_warn_on = !!(condition); \ ^~~~~~~~~ drivers/ata/libata-core.c:4544:7: note: Access to field 'ap' results in a dereference of a null pointer (loaded from variable 'qc') ap = qc->ap; ^~ drivers/ata/libata-core.c:5454:18: warning: Access to field 'pio_mask' results in a dereference of a null pointer (loaded from variable 'pi') [clang-analyzer-core.NullDereference] ap->pio_mask = pi->pio_mask; ^~ drivers/ata/libata-core.c:5445:6: note: Assuming 'host' is non-null if (!host) ^~~~~ drivers/ata/libata-core.c:5445:2: note: Taking false branch if (!host) ^ drivers/ata/libata-core.c:5448:21: note: Null pointer value stored to 'pi' for (i = 0, j = 0, pi = NULL; i < host->n_ports; i++) { ^~~~~~~~~ drivers/ata/libata-core.c:5448:32: note: Assuming 'i' is < field 'n_ports' for (i = 0, j = 0, pi = NULL; i < host->n_ports; i++) { ^~~~~~~~~~~~~~~~~ drivers/ata/libata-core.c:5448:2: note: Loop condition is true. Entering loop body for (i = 0, j = 0, pi = NULL; i < host->n_ports; i++) { ^ drivers/ata/libata-core.c:5451:7: note: Assuming the condition is false if (ppi[j]) ^~~~~~ drivers/ata/libata-core.c:5451:3: note: Taking false branch if (ppi[j]) ^ drivers/ata/libata-core.c:5454:18: note: Access to field 'pio_mask' results in a dereference of a null pointer (loaded from variable 'pi') ap->pio_mask = pi->pio_mask; ^~ drivers/ata/libata-core.c:5576:6: warning: Access to field 'host_stop' results in a dereference of a null pointer (loaded from field 'ops') [clang-analyzer-core.NullDereference] if (host->ops->host_stop) ^ drivers/ata/libata-core.c:5823:7: note: Calling 'ata_host_start' rc = ata_host_start(host); ^~~~~~~~~~~~~~~~~~~~ drivers/ata/libata-core.c:5559:6: note: Assuming the condition is false if (host->flags & ATA_HOST_STARTED) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/ata/libata-core.c:5559:2: note: Taking false branch if (host->flags & ATA_HOST_STARTED) ^ drivers/ata/libata-core.c:5564:14: note: Assuming 'i' is < field 'n_ports' for (i = 0; i < host->n_ports; i++) { ^~~~~~~~~~~~~~~~~ drivers/ata/libata-core.c:5564:2: note: Loop condition is true. Entering loop body for (i = 0; i < host->n_ports; i++) { ^ drivers/ata/libata-core.c:5569:7: note: Assuming field 'ops' is null if (!host->ops && !ata_port_is_dummy(ap)) ^~~~~~~~~~ drivers/ata/libata-core.c:5569:7: note: Assuming pointer value is null if (!host->ops && !ata_port_is_dummy(ap)) ^~~~~~~~~~ drivers/ata/libata-core.c:5569:7: note: Left side of '&&' is true drivers/ata/libata-core.c:5569:21: note: Assuming the condition is false if (!host->ops && !ata_port_is_dummy(ap)) ^~~~~~~~~~~~~~~~~~~~~~ drivers/ata/libata-core.c:5569:3: note: Taking false branch if (!host->ops && !ata_port_is_dummy(ap)) ^ drivers/ata/libata-core.c:5572:7: note: Assuming field 'port_stop' is null if (ap->ops->port_stop) ^~~~~~~~~~~~~~~~~~ drivers/ata/libata-core.c:5572:3: note: Taking false branch vim +/rc +143 drivers/cxl/pmem.c 8fdcb1704f61a8 Dan Williams 2021-06-15 112 8fdcb1704f61a8 Dan Williams 2021-06-15 113 static void cxl_nvb_update_state(struct work_struct *work) 8fdcb1704f61a8 Dan Williams 2021-06-15 114 { 8fdcb1704f61a8 Dan Williams 2021-06-15 115 struct cxl_nvdimm_bridge *cxl_nvb = 8fdcb1704f61a8 Dan Williams 2021-06-15 116 container_of(work, typeof(*cxl_nvb), state_work); 21083f51521fb0 Dan Williams 2021-06-15 117 struct nvdimm_bus *victim_bus = NULL; 21083f51521fb0 Dan Williams 2021-06-15 118 bool release = false, rescan = false; 8fdcb1704f61a8 Dan Williams 2021-06-15 119 8fdcb1704f61a8 Dan Williams 2021-06-15 120 device_lock(&cxl_nvb->dev); 8fdcb1704f61a8 Dan Williams 2021-06-15 121 switch (cxl_nvb->state) { 8fdcb1704f61a8 Dan Williams 2021-06-15 122 case CXL_NVB_ONLINE: 8fdcb1704f61a8 Dan Williams 2021-06-15 123 if (!online_nvdimm_bus(cxl_nvb)) { 8fdcb1704f61a8 Dan Williams 2021-06-15 124 dev_err(&cxl_nvb->dev, 8fdcb1704f61a8 Dan Williams 2021-06-15 125 "failed to establish nvdimm bus\n"); 8fdcb1704f61a8 Dan Williams 2021-06-15 126 release = true; 21083f51521fb0 Dan Williams 2021-06-15 127 } else 21083f51521fb0 Dan Williams 2021-06-15 128 rescan = true; 8fdcb1704f61a8 Dan Williams 2021-06-15 129 break; 8fdcb1704f61a8 Dan Williams 2021-06-15 130 case CXL_NVB_OFFLINE: 8fdcb1704f61a8 Dan Williams 2021-06-15 131 case CXL_NVB_DEAD: 21083f51521fb0 Dan Williams 2021-06-15 132 victim_bus = cxl_nvb->nvdimm_bus; 21083f51521fb0 Dan Williams 2021-06-15 133 cxl_nvb->nvdimm_bus = NULL; 8fdcb1704f61a8 Dan Williams 2021-06-15 134 break; 8fdcb1704f61a8 Dan Williams 2021-06-15 135 default: 8fdcb1704f61a8 Dan Williams 2021-06-15 136 break; 8fdcb1704f61a8 Dan Williams 2021-06-15 137 } 8fdcb1704f61a8 Dan Williams 2021-06-15 138 device_unlock(&cxl_nvb->dev); 8fdcb1704f61a8 Dan Williams 2021-06-15 139 8fdcb1704f61a8 Dan Williams 2021-06-15 140 if (release) 8fdcb1704f61a8 Dan Williams 2021-06-15 141 device_release_driver(&cxl_nvb->dev); 21083f51521fb0 Dan Williams 2021-06-15 142 if (rescan) { 21083f51521fb0 Dan Williams 2021-06-15 @143 int rc = bus_rescan_devices(&cxl_bus_type); 21083f51521fb0 Dan Williams 2021-06-15 144 21083f51521fb0 Dan Williams 2021-06-15 145 dev_dbg(&cxl_nvb->dev, "rescan: %d\n", rc); 21083f51521fb0 Dan Williams 2021-06-15 146 } 21083f51521fb0 Dan Williams 2021-06-15 147 offline_nvdimm_bus(victim_bus); 8fdcb1704f61a8 Dan Williams 2021-06-15 148 8fdcb1704f61a8 Dan Williams 2021-06-15 149 put_device(&cxl_nvb->dev); 8fdcb1704f61a8 Dan Williams 2021-06-15 150 } 8fdcb1704f61a8 Dan Williams 2021-06-15 151 --- 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]
