CC: l...@lists.linux.dev CC: kbuild-...@lists.01.org BCC: l...@intel.com CC: linux-ker...@vger.kernel.org TO: Bart Van Assche <bvanass...@acm.org>
tree: https://github.com/bvanassche/linux ufs-for-next head: 366c4aa8768b5193b782c809d7aba916d4e382da commit: a8a69970d87f778e000ae1b15e18061c09aa0f7b [306/307] scsi: ufs: Remove unused constants and code :::::: branch date: 2 days ago :::::: commit date: 2 days ago config: riscv-randconfig-c006-20220320 (https://download.01.org/0day-ci/archive/20220320/202203201523.5qtyhe1m-...@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 217f267efe3082438e698e2f08566b9df8c530fa) 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://github.com/bvanassche/linux/commit/a8a69970d87f778e000ae1b15e18061c09aa0f7b git remote add bvanassche https://github.com/bvanassche/linux git fetch --no-tags bvanassche ufs-for-next git checkout a8a69970d87f778e000ae1b15e18061c09aa0f7b # 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 <l...@intel.com> clang-analyzer warnings: (new ones prefixed by >>) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/ufs/ufshcd.c:6133:2: note: 'mode' declared without an initial value u32 mode; ^~~~~~~~ drivers/scsi/ufs/ufshcd.c:6135:2: note: Calling 'ufshcd_dme_get' ufshcd_dme_get(hba, UIC_ARG_MIB(PA_PWRMODE), &mode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/ufs/ufshcd.h:1139:9: note: Calling 'ufshcd_dme_get_attr' return ufshcd_dme_get_attr(hba, attr_sel, mib_val, DME_LOCAL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/ufs/ufshcd.c:3920:6: note: 'peer' is 0 if (peer && (hba->quirks & UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE)) { ^~~~ drivers/scsi/ufs/ufshcd.c:3920:11: note: Left side of '&&' is false if (peer && (hba->quirks & UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE)) { ^ drivers/scsi/ufs/ufshcd.c:3942:20: note: 'peer' is 0 uic_cmd.command = peer ? ^~~~ drivers/scsi/ufs/ufshcd.c:3942:20: note: '?' condition is false drivers/scsi/ufs/ufshcd.c:3949:7: note: 'ret' is -5 if (ret) ^~~ drivers/scsi/ufs/ufshcd.c:3949:3: note: Taking true branch if (ret) ^ drivers/scsi/ufs/ufshcd.c:3950:4: note: Taking false branch dev_dbg(hba->dev, "%s: attr-id 0x%x error code %d\n", ^ include/linux/dev_printk.h:162:2: note: expanded from macro 'dev_dbg' if (0) \ ^ drivers/scsi/ufs/ufshcd.c:3952:11: note: 'ret' is -5 } while (ret && peer && --retries); ^~~ drivers/scsi/ufs/ufshcd.c:3952:11: note: Left side of '&&' is true drivers/scsi/ufs/ufshcd.c:3952:18: note: 'peer' is 0 } while (ret && peer && --retries); ^~~~ drivers/scsi/ufs/ufshcd.c:3952:23: note: Left side of '&&' is false } while (ret && peer && --retries); ^ drivers/scsi/ufs/ufshcd.c:3946:2: note: Loop condition is false. Exiting loop do { ^ drivers/scsi/ufs/ufshcd.c:3954:6: note: 'ret' is -5 if (ret) ^~~ drivers/scsi/ufs/ufshcd.c:3954:2: note: Taking true branch if (ret) ^ drivers/scsi/ufs/ufshcd.c:3955:3: note: Loop condition is false. Exiting loop dev_err(hba->dev, "%s: attr-id 0x%x failed %d retries\n", ^ include/linux/dev_printk.h:144:2: note: expanded from macro 'dev_err' dev_printk_index_wrap(_dev_err, KERN_ERR, dev, dev_fmt(fmt), ##__VA_ARGS__) ^ include/linux/dev_printk.h:109:3: note: expanded from macro 'dev_printk_index_wrap' dev_printk_index_emit(level, fmt); \ ^ include/linux/dev_printk.h:105:2: note: expanded from macro 'dev_printk_index_emit' printk_index_subsys_emit("%s %s: ", level, fmt) ^ include/linux/printk.h:413:2: note: expanded from macro 'printk_index_subsys_emit' __printk_index_emit(fmt, level, subsys_fmt_prefix) ^ include/linux/printk.h:392:34: note: expanded from macro '__printk_index_emit' #define __printk_index_emit(...) do {} while (0) ^ drivers/scsi/ufs/ufshcd.c:3959:6: note: 'mib_val' is non-null if (mib_val && !ret) ^~~~~~~ drivers/scsi/ufs/ufshcd.c:3959:6: note: Left side of '&&' is true drivers/scsi/ufs/ufshcd.c:3959:18: note: 'ret' is -5 if (mib_val && !ret) ^~~ drivers/scsi/ufs/ufshcd.c:3959:2: note: Taking false branch if (mib_val && !ret) ^ drivers/scsi/ufs/ufshcd.c:3962:6: note: 'peer' is 0 if (peer && (hba->quirks & UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE) ^~~~ drivers/scsi/ufs/ufshcd.c:3962:11: note: Left side of '&&' is false if (peer && (hba->quirks & UFSHCD_QUIRK_DME_PEER_ACCESS_AUTO_MODE) ^ drivers/scsi/ufs/ufshcd.c:3966:2: note: Returning without writing to '*mib_val' return ret; ^ drivers/scsi/ufs/ufshcd.h:1139:9: note: Returning from 'ufshcd_dme_get_attr' return ufshcd_dme_get_attr(hba, attr_sel, mib_val, DME_LOCAL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/ufs/ufshcd.h:1139:2: note: Returning without writing to '*mib_val' return ufshcd_dme_get_attr(hba, attr_sel, mib_val, DME_LOCAL); ^ drivers/scsi/ufs/ufshcd.c:6135:2: note: Returning from 'ufshcd_dme_get' ufshcd_dme_get(hba, UIC_ARG_MIB(PA_PWRMODE), &mode); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/scsi/ufs/ufshcd.c:6137:33: note: The left operand of '>>' is a garbage value if (pwr_info->pwr_rx != ((mode >> PWRMODE_RX_OFFSET) & PWRMODE_MASK)) ~~~~ ^ >> drivers/scsi/ufs/ufshcd.c:8320:2: warning: Value stored to 'name' is never >> read [clang-analyzer-deadcode.DeadStores] name = vreg->name; ^ ~~~~~~~~~~ drivers/scsi/ufs/ufshcd.c:8320:2: note: Value stored to 'name' is never read name = vreg->name; ^ ~~~~~~~~~~ Suppressed 16 warnings (15 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. 4 warnings generated. drivers/iio/adc/axp20x_adc.c:615:6: warning: The result of the left shift is undefined because the left operand is negative [clang-analyzer-core.UndefinedBinaryOperatorResult] AXP813_ADC_RATE_HZ(rate)); ^ drivers/iio/adc/axp20x_adc.c:41:34: note: expanded from macro 'AXP813_ADC_RATE_HZ' #define AXP813_ADC_RATE_HZ(x) (AXP20X_ADC_RATE_HZ(x) | AXP813_V_I_ADC_RATE_HZ(x)) ^~~~~~~~~~~~~~~~~~~~~ drivers/iio/adc/axp20x_adc.c:37:51: note: expanded from macro 'AXP20X_ADC_RATE_HZ' #define AXP20X_ADC_RATE_HZ(x) ((ilog2((x) / 25) << 6) & AXP20X_ADC_RATE_MASK) ~~~~~~~~~~~~~~~ ^ drivers/iio/adc/axp20x_adc.c:615:6: note: '?' condition is false AXP813_ADC_RATE_HZ(rate)); ^ drivers/iio/adc/axp20x_adc.c:41:34: note: expanded from macro 'AXP813_ADC_RATE_HZ' #define AXP813_ADC_RATE_HZ(x) (AXP20X_ADC_RATE_HZ(x) | AXP813_V_I_ADC_RATE_HZ(x)) ^ drivers/iio/adc/axp20x_adc.c:37:35: note: expanded from macro 'AXP20X_ADC_RATE_HZ' #define AXP20X_ADC_RATE_HZ(x) ((ilog2((x) / 25) << 6) & AXP20X_ADC_RATE_MASK) ^ include/linux/log2.h:158:2: note: expanded from macro 'ilog2' __builtin_constant_p(n) ? \ ^ drivers/iio/adc/axp20x_adc.c:615:6: note: '?' condition is true AXP813_ADC_RATE_HZ(rate)); ^ drivers/iio/adc/axp20x_adc.c:41:34: note: expanded from macro 'AXP813_ADC_RATE_HZ' #define AXP813_ADC_RATE_HZ(x) (AXP20X_ADC_RATE_HZ(x) | AXP813_V_I_ADC_RATE_HZ(x)) ^ drivers/iio/adc/axp20x_adc.c:37:35: note: expanded from macro 'AXP20X_ADC_RATE_HZ' #define AXP20X_ADC_RATE_HZ(x) ((ilog2((x) / 25) << 6) & AXP20X_ADC_RATE_MASK) ^ include/linux/log2.h:161:2: note: expanded from macro 'ilog2' (sizeof(n) <= 4) ? \ ^ drivers/iio/adc/axp20x_adc.c:615:6: note: Calling '__ilog2_u32' AXP813_ADC_RATE_HZ(rate)); ^ drivers/iio/adc/axp20x_adc.c:41:34: note: expanded from macro 'AXP813_ADC_RATE_HZ' #define AXP813_ADC_RATE_HZ(x) (AXP20X_ADC_RATE_HZ(x) | AXP813_V_I_ADC_RATE_HZ(x)) ^~~~~~~~~~~~~~~~~~~~~ drivers/iio/adc/axp20x_adc.c:37:35: note: expanded from macro 'AXP20X_ADC_RATE_HZ' #define AXP20X_ADC_RATE_HZ(x) ((ilog2((x) / 25) << 6) & AXP20X_ADC_RATE_MASK) ^~~~~~~~~~~~~~~ include/linux/log2.h:162:2: note: expanded from macro 'ilog2' __ilog2_u32(n) : \ ^~~~~~~~~~~~~~ include/linux/log2.h:24:2: note: Returning the value -1 return fls(n) - 1; ^~~~~~~~~~~~~~~~~ drivers/iio/adc/axp20x_adc.c:615:6: note: Returning from '__ilog2_u32' AXP813_ADC_RATE_HZ(rate)); ^ drivers/iio/adc/axp20x_adc.c:41:34: note: expanded from macro 'AXP813_ADC_RATE_HZ' #define AXP813_ADC_RATE_HZ(x) (AXP20X_ADC_RATE_HZ(x) | AXP813_V_I_ADC_RATE_HZ(x)) ^~~~~~~~~~~~~~~~~~~~~ drivers/iio/adc/axp20x_adc.c:37:35: note: expanded from macro 'AXP20X_ADC_RATE_HZ' #define AXP20X_ADC_RATE_HZ(x) ((ilog2((x) / 25) << 6) & AXP20X_ADC_RATE_MASK) ^~~~~~~~~~~~~~~ include/linux/log2.h:162:2: note: expanded from macro 'ilog2' __ilog2_u32(n) : \ ^~~~~~~~~~~~~~ drivers/iio/adc/axp20x_adc.c:615:6: note: The result of the left shift is undefined because the left operand is negative AXP813_ADC_RATE_HZ(rate)); ^ drivers/iio/adc/axp20x_adc.c:41:34: note: expanded from macro 'AXP813_ADC_RATE_HZ' #define AXP813_ADC_RATE_HZ(x) (AXP20X_ADC_RATE_HZ(x) | AXP813_V_I_ADC_RATE_HZ(x)) ^~~~~~~~~~~~~~~~~~~~~ drivers/iio/adc/axp20x_adc.c:37:51: note: expanded from macro 'AXP20X_ADC_RATE_HZ' #define AXP20X_ADC_RATE_HZ(x) ((ilog2((x) / 25) << 6) & AXP20X_ADC_RATE_MASK) vim +/name +8320 drivers/scsi/ufs/ufshcd.c 57d104c153d3d6d Subhash Jadavani 2014-09-25 8308 aa497613093412e Sujit Reddy Thumma 2014-09-25 8309 static int ufshcd_config_vreg(struct device *dev, aa497613093412e Sujit Reddy Thumma 2014-09-25 8310 struct ufs_vreg *vreg, bool on) aa497613093412e Sujit Reddy Thumma 2014-09-25 8311 { aa497613093412e Sujit Reddy Thumma 2014-09-25 8312 int ret = 0; 727535903bea924 Gustavo A. R. Silva 2017-11-20 8313 struct regulator *reg; 727535903bea924 Gustavo A. R. Silva 2017-11-20 8314 const char *name; a8a69970d87f778 Bart Van Assche 2021-12-08 8315 int uA_load; aa497613093412e Sujit Reddy Thumma 2014-09-25 8316 aa497613093412e Sujit Reddy Thumma 2014-09-25 8317 BUG_ON(!vreg); aa497613093412e Sujit Reddy Thumma 2014-09-25 8318 727535903bea924 Gustavo A. R. Silva 2017-11-20 8319 reg = vreg->reg; 727535903bea924 Gustavo A. R. Silva 2017-11-20 @8320 name = vreg->name; 727535903bea924 Gustavo A. R. Silva 2017-11-20 8321 aa497613093412e Sujit Reddy Thumma 2014-09-25 8322 if (regulator_count_voltages(reg) > 0) { 90d88f47e8d03b2 Asutosh Das 2020-02-10 8323 uA_load = on ? vreg->max_uA : 0; 90d88f47e8d03b2 Asutosh Das 2020-02-10 8324 ret = ufshcd_config_vreg_load(dev, vreg, uA_load); 3b141e8cfd54ba3 Stanley Chu 2019-03-28 8325 } a8a69970d87f778 Bart Van Assche 2021-12-08 8326 aa497613093412e Sujit Reddy Thumma 2014-09-25 8327 return ret; aa497613093412e Sujit Reddy Thumma 2014-09-25 8328 } aa497613093412e Sujit Reddy Thumma 2014-09-25 8329 :::::: The code at line 8320 was first introduced by commit :::::: 727535903bea924c4f73abb202c4b3e85fff0ca4 scsi: ufs: ufshcd: fix potential NULL pointer dereference in ufshcd_config_vreg :::::: TO: Gustavo A. R. Silva <garsi...@embeddedor.com> :::::: CC: Martin K. Petersen <martin.peter...@oracle.com> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- kbuild@lists.01.org To unsubscribe send an email to kbuild-le...@lists.01.org