CC: l...@lists.linux.dev CC: kbuild-...@lists.01.org BCC: l...@intel.com CC: Linux Memory Management List <linux...@kvack.org> TO: Fabien Dessenne <fabien.desse...@foss.st.com> CC: Linus Walleij <linus.wall...@linaro.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git master head: d3fde8ff50ab265749704bd7fbcf70d35235421f commit: 3389b09878dddd58ef52bd0bf43cc42ea5a9ea2a [8120/14198] pinctrl: stm32: prevent the use of the secure protected pins :::::: branch date: 35 hours ago :::::: commit date: 3 weeks ago config: arm-randconfig-c002-20220524 (https://download.01.org/0day-ci/archive/20220529/202205290102.ugr3l6gl-...@intel.com/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 0fbe3f3f486e01448121f7931a4ca29fac1504ab) 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 arm cross compiling tool for clang build # apt-get install binutils-arm-linux-gnueabi # https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/commit/?id=3389b09878dddd58ef52bd0bf43cc42ea5a9ea2a git remote add linux-next https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git git fetch --no-tags linux-next master git checkout 3389b09878dddd58ef52bd0bf43cc42ea5a9ea2a # save the config file COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=arm clang-analyzer If you fix the issue, kindly add following tag where applicable Reported-by: kernel test robot <l...@intel.com> clang-analyzer warnings: (new ones prefixed by >>) ^~~~~~~~~~~~ fs/nilfs2/btree.c:2324:2: note: Taking false branch if (path == NULL) ^ fs/nilfs2/btree.c:2328:6: note: 'ret' is >= 0 if (ret < 0) { ^~~ fs/nilfs2/btree.c:2328:2: note: Taking false branch if (ret < 0) { ^ fs/nilfs2/btree.c:2332:8: note: Calling 'nilfs_btree_get_block' ret = nilfs_btree_get_block(btree, ptr, &bh); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/nilfs2/btree.c:534:9: note: Calling '__nilfs_btree_get_block' return __nilfs_btree_get_block(btree, ptr, bhp, NULL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/nilfs2/btree.c:482:6: note: Assuming 'ret' is not equal to 0 if (ret) { ^~~ fs/nilfs2/btree.c:482:2: note: Taking true branch if (ret) { ^ fs/nilfs2/btree.c:483:7: note: Assuming the condition is true if (ret != -EEXIST) ^~~~~~~~~~~~~~ fs/nilfs2/btree.c:483:3: note: Taking true branch if (ret != -EEXIST) ^ fs/nilfs2/btree.c:484:4: note: Returning without writing to '*bhp' return ret; ^ fs/nilfs2/btree.c:534:9: note: Returning from '__nilfs_btree_get_block' return __nilfs_btree_get_block(btree, ptr, bhp, NULL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/nilfs2/btree.c:534:2: note: Returning without writing to '*bhp' return __nilfs_btree_get_block(btree, ptr, bhp, NULL); ^ fs/nilfs2/btree.c:2332:8: note: Returning from 'nilfs_btree_get_block' ret = nilfs_btree_get_block(btree, ptr, &bh); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ fs/nilfs2/btree.c:2333:6: note: Assuming 'ret' is >= 0 if (ret < 0) { ^~~~~~~ fs/nilfs2/btree.c:2333:2: note: Taking false branch if (ret < 0) { ^ fs/nilfs2/btree.c:2338:7: note: 1st function call argument is an uninitialized value if (!buffer_dirty(bh)) ^ ~~ 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. 17 warnings generated. Suppressed 17 warnings (17 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. 43 warnings generated. kernel/kmod.c:142:8: warning: Call to function 'vsnprintf' 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 'vsnprintf_s' in case of C11 [clang-analyzer-security.insecureAPI.DeprecatedOrUnsafeBufferHandling] ret = vsnprintf(module_name, MODULE_NAME_LEN, fmt, args); ^~~~~~~~~ kernel/kmod.c:142:8: note: Call to function 'vsnprintf' 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 'vsnprintf_s' in case of C11 ret = vsnprintf(module_name, MODULE_NAME_LEN, fmt, args); ^~~~~~~~~ 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. 30 warnings generated. Suppressed 30 warnings (30 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. 7 warnings generated. Suppressed 7 warnings (7 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. 7 warnings generated. Suppressed 7 warnings (7 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. 7 warnings generated. Suppressed 7 warnings (7 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. 7 warnings generated. Suppressed 7 warnings (7 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. 7 warnings generated. Suppressed 7 warnings (7 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. 7 warnings generated. Suppressed 7 warnings (7 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. 7 warnings generated. Suppressed 7 warnings (7 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. 7 warnings generated. Suppressed 7 warnings (7 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. 7 warnings generated. Suppressed 7 warnings (7 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. 7 warnings generated. Suppressed 7 warnings (7 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. 29 warnings generated. Suppressed 29 warnings (29 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. 32 warnings generated. >> drivers/pinctrl/stm32/pinctrl-stm32.c:294:24: warning: Value stored to >> 'pctl' during its initialization is never read >> [clang-analyzer-deadcode.DeadStores] struct stm32_pinctrl *pctl = dev_get_drvdata(bank->gpio_chip.parent); ^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/stm32/pinctrl-stm32.c:294:24: note: Value stored to 'pctl' during its initialization is never read struct stm32_pinctrl *pctl = dev_get_drvdata(bank->gpio_chip.parent); ^~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1422:21: warning: Passed-by-value struct argument contains uninitialized data (e.g., field: 'id_size') [clang-analyzer-core.CallAndMessage] pctl->irqmux[i] = devm_regmap_field_alloc(dev, rm, mux); ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1494:6: note: Assuming 'np' is non-null if (!np) ^~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1494:2: note: Taking false branch if (!np) ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1498:6: note: Assuming 'match' is non-null if (!match || !match->data) ^~~~~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1498:6: note: Left side of '||' is false drivers/pinctrl/stm32/pinctrl-stm32.c:1498:16: note: Assuming field 'data' is non-null if (!match || !match->data) ^~~~~~~~~~~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1498:2: note: Taking false branch if (!match || !match->data) ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1501:6: note: Assuming the condition is false if (!of_find_property(np, "pins-are-numbered", NULL)) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1501:2: note: Taking false branch if (!of_find_property(np, "pins-are-numbered", NULL)) { ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1507:6: note: Assuming 'pctl' is non-null if (!pctl) ^~~~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1507:2: note: Taking false branch if (!pctl) ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1514:2: note: Taking false branch if (IS_ERR(pctl->domain)) ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1519:6: note: 'hwlock_id' is >= 0 if (hwlock_id < 0) { ^~~~~~~~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1519:2: note: Taking false branch if (hwlock_id < 0) { ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1526:2: note: Loop condition is false. Exiting loop spin_lock_init(&pctl->irqmux_lock); ^ include/linux/spinlock.h:339:34: note: expanded from macro 'spin_lock_init' # define spin_lock_init(_lock) \ ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1532:2: note: Taking false branch if (!of_property_read_u32(np, "st,package", &pctl->pkg)) ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1537:6: note: Assuming field 'pins' is non-null if (!pctl->pins) ^~~~~~~~~~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1537:2: note: Taking false branch if (!pctl->pins) ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1541:6: note: 'ret' is 0 if (ret) ^~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1541:2: note: Taking false branch if (ret) ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1545:6: note: Assuming 'ret' is 0 if (ret) { ^~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1545:2: note: Taking false branch if (ret) { ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1550:6: note: Assuming field 'domain' is non-null if (pctl->domain) { ^~~~~~~~~~~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1550:2: note: Taking true branch if (pctl->domain) { ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1551:9: note: Calling 'stm32_pctrl_dt_setup_irq' ret = stm32_pctrl_dt_setup_irq(pdev, pctl); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1397:2: note: Taking false branch if (IS_ERR(pctl->regmap)) ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1403:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1403:2: note: Taking false branch if (ret) ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1407:6: note: Assuming 'ret' is 0 if (ret) ^~~ drivers/pinctrl/stm32/pinctrl-stm32.c:1407:2: note: Taking false branch if (ret) ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1412:2: note: Loop condition is true. Entering loop body for (i = 0; i < STM32_GPIO_PINS_PER_BANK; i++) { ^ drivers/pinctrl/stm32/pinctrl-stm32.c:1413:3: note: 'mux' initialized here vim +/pctl +294 drivers/pinctrl/stm32/pinctrl-stm32.c acaa037970f610 Alexandre TORGUE 2017-05-29 288 3389b09878dddd Fabien Dessenne 2022-05-02 289 static int stm32_gpio_init_valid_mask(struct gpio_chip *chip, 3389b09878dddd Fabien Dessenne 2022-05-02 290 unsigned long *valid_mask, 3389b09878dddd Fabien Dessenne 2022-05-02 291 unsigned int ngpios) 3389b09878dddd Fabien Dessenne 2022-05-02 292 { 3389b09878dddd Fabien Dessenne 2022-05-02 293 struct stm32_gpio_bank *bank = gpiochip_get_data(chip); 3389b09878dddd Fabien Dessenne 2022-05-02 @294 struct stm32_pinctrl *pctl = dev_get_drvdata(bank->gpio_chip.parent); 3389b09878dddd Fabien Dessenne 2022-05-02 295 unsigned int i; 3389b09878dddd Fabien Dessenne 2022-05-02 296 u32 sec; 3389b09878dddd Fabien Dessenne 2022-05-02 297 3389b09878dddd Fabien Dessenne 2022-05-02 298 /* All gpio are valid per default */ 3389b09878dddd Fabien Dessenne 2022-05-02 299 bitmap_fill(valid_mask, ngpios); 3389b09878dddd Fabien Dessenne 2022-05-02 300 3389b09878dddd Fabien Dessenne 2022-05-02 301 if (bank->secure_control) { 3389b09878dddd Fabien Dessenne 2022-05-02 302 /* Tag secured pins as invalid */ 3389b09878dddd Fabien Dessenne 2022-05-02 303 sec = readl_relaxed(bank->base + STM32_GPIO_SECCFGR); 3389b09878dddd Fabien Dessenne 2022-05-02 304 3389b09878dddd Fabien Dessenne 2022-05-02 305 for (i = 0; i < ngpios; i++) { 3389b09878dddd Fabien Dessenne 2022-05-02 306 if (sec & BIT(i)) { 3389b09878dddd Fabien Dessenne 2022-05-02 307 clear_bit(i, valid_mask); 3389b09878dddd Fabien Dessenne 2022-05-02 308 dev_dbg(pctl->dev, "No access to gpio %d - %d\n", bank->bank_nr, i); 3389b09878dddd Fabien Dessenne 2022-05-02 309 } 3389b09878dddd Fabien Dessenne 2022-05-02 310 } 3389b09878dddd Fabien Dessenne 2022-05-02 311 } 3389b09878dddd Fabien Dessenne 2022-05-02 312 3389b09878dddd Fabien Dessenne 2022-05-02 313 return 0; 3389b09878dddd Fabien Dessenne 2022-05-02 314 } 3389b09878dddd Fabien Dessenne 2022-05-02 315 -- 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