CC: [email protected] CC: Junxiao Chang <[email protected]>
tree: https://github.com/intel/linux-intel-lts.git 5.10/yocto head: 1941d4b82f36cc6ecc513f3e496ad62726d00514 commit: 6c9a19d3d5af510ad24a4bc5a0e8567938729ce5 [12296/20368] drm: bridge: add it66121 driver :::::: branch date: 6 days ago :::::: commit date: 6 months ago config: riscv-randconfig-c006-20220116 (https://download.01.org/0day-ci/archive/20220117/[email protected]/config) compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c63a3175c2947e8c1a2d3bbe16a8586600705c54) 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/intel/linux-intel-lts/commit/6c9a19d3d5af510ad24a4bc5a0e8567938729ce5 git remote add intel-lts https://github.com/intel/linux-intel-lts.git git fetch --no-tags intel-lts 5.10/yocto git checkout 6c9a19d3d5af510ad24a4bc5a0e8567938729ce5 # 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 >>) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/hid/hid-zydacron.c:53:2: note: Taking false branch if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER) ^ drivers/hid/hid-zydacron.c:56:2: note: Assuming 'hid_debug' is 0 dbg_hid("zynacron input mapping event [0x%x]\n", ^ include/linux/hid.h:1178:6: note: expanded from macro 'dbg_hid' if (hid_debug) \ ^~~~~~~~~ drivers/hid/hid-zydacron.c:56:2: note: Taking false branch dbg_hid("zynacron input mapping event [0x%x]\n", ^ include/linux/hid.h:1178:2: note: expanded from macro 'dbg_hid' if (hid_debug) \ ^ drivers/hid/hid-zydacron.c:56:2: note: Loop condition is false. Exiting loop dbg_hid("zynacron input mapping event [0x%x]\n", ^ include/linux/hid.h:1176:32: note: expanded from macro 'dbg_hid' #define dbg_hid(fmt, ...) \ ^ drivers/hid/hid-zydacron.c:59:2: note: Control jumps to 'case 50:' at line 96 switch (usage->hid & HID_USAGE) { ^ drivers/hid/hid-zydacron.c:97:3: note: Calling 'hid_map_usage_clear' zc_map_key_clear(KEY_TEXT); ^ drivers/hid/hid-zydacron.c:43:2: note: expanded from macro 'zc_map_key_clear' hid_map_usage_clear(hi, usage, bit, max, EV_KEY, (c)) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/hid.h:1021:2: note: Calling 'hid_map_usage' hid_map_usage(hidinput, usage, bit, max, type, c); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/hid.h:975:2: note: 'input' initialized here struct input_dev *input = hidinput->input; ^~~~~~~~~~~~~~~~~~~~~~~ include/linux/hid.h:979:2: note: Control jumps to 'case 1:' at line 988 switch (type) { ^ include/linux/hid.h:991:3: note: Execution continues on line 998 break; ^ include/linux/hid.h:998:15: note: 'c' is <= 'limit' if (unlikely(c > limit || !bmap)) { ^ include/linux/compiler.h:78:42: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ include/linux/hid.h:998:15: note: Left side of '||' is false if (unlikely(c > limit || !bmap)) { ^ include/linux/hid.h:998:28: note: Assuming 'bmap' is null if (unlikely(c > limit || !bmap)) { ^ include/linux/compiler.h:78:42: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ include/linux/hid.h:998:28: note: Assuming pointer value is null if (unlikely(c > limit || !bmap)) { ^ include/linux/compiler.h:78:42: note: expanded from macro 'unlikely' # define unlikely(x) __builtin_expect(!!(x), 0) ^ include/linux/hid.h:998:2: note: Taking true branch if (unlikely(c > limit || !bmap)) { ^ include/linux/hid.h:999:3: note: Assuming the condition is true pr_warn_ratelimited("%s: Invalid code %d type %d\n", ^ include/linux/printk.h:528:2: note: expanded from macro 'pr_warn_ratelimited' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/printk.h:511:6: note: expanded from macro 'printk_ratelimited' if (__ratelimit(&_rs)) \ ^~~~~~~~~~~~~~~~~ include/linux/ratelimit_types.h:41:28: note: expanded from macro '__ratelimit' #define __ratelimit(state) ___ratelimit(state, __func__) ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/hid.h:999:3: note: Taking true branch pr_warn_ratelimited("%s: Invalid code %d type %d\n", ^ include/linux/printk.h:528:2: note: expanded from macro 'pr_warn_ratelimited' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^ include/linux/printk.h:511:2: note: expanded from macro 'printk_ratelimited' if (__ratelimit(&_rs)) \ ^ include/linux/hid.h:1000:9: note: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'input') input->name, c, type); ^ include/linux/printk.h:528:49: note: expanded from macro 'pr_warn_ratelimited' printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__) ^~~~~~~~~~~ include/linux/printk.h:512:17: note: expanded from macro 'printk_ratelimited' printk(fmt, ##__VA_ARGS__); \ ^~~~~~~~~~~ Suppressed 4 warnings (4 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. >> drivers/gpu/drm/bridge/ite-it66121.c:538:2: warning: Value stored to 'ret' >> is never read [clang-analyzer-deadcode.DeadStores] ret = drm_bridge_attach(bridge->encoder, ctx->next_bridge, bridge, flags); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/bridge/ite-it66121.c:538:2: note: Value stored to 'ret' is never read ret = drm_bridge_attach(bridge->encoder, ctx->next_bridge, bridge, flags); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 6 warnings (6 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. drivers/gpu/drm/bridge/analogix/analogix-anx6345.c:387:2: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores] err = anx6345_clear_bits(anx6345->map[I2C_IDX_TXCOM], ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/bridge/analogix/analogix-anx6345.c:387:2: note: Value stored to 'err' is never read err = anx6345_clear_bits(anx6345->map[I2C_IDX_TXCOM], ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Suppressed 6 warnings (6 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. drivers/gpu/drm/bridge/analogix/anx7625.c:755:4: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores] ret = sp_tx_rst_aux(ctx); ^ ~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/bridge/analogix/anx7625.c:755:4: note: Value stored to 'ret' is never read ret = sp_tx_rst_aux(ctx); ^ ~~~~~~~~~~~~~~~~~~ Suppressed 6 warnings (6 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. Suppressed 4 warnings (4 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. Suppressed 4 warnings (4 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. Suppressed 4 warnings (4 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. Suppressed 4 warnings (4 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. 5 warnings generated. Suppressed 5 warnings (4 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. 4 warnings generated. Suppressed 4 warnings (4 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. Suppressed 4 warnings (4 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. Suppressed 4 warnings (4 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. Suppressed 4 warnings (4 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. 5 warnings generated. Suppressed 5 warnings (5 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. drivers/gpu/drm/drm_modes.c:1768:4: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy] strcpy(mode->name, drm_named_modes_whitelist[i]); ^~~~~~ drivers/gpu/drm/drm_modes.c:1768:4: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 strcpy(mode->name, drm_named_modes_whitelist[i]); ^~~~~~ Suppressed 6 warnings (6 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. 6 warnings generated. Suppressed 6 warnings (6 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. Suppressed 4 warnings (4 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. 6 warnings generated. Suppressed 6 warnings (6 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. Suppressed 4 warnings (4 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. 6 warnings generated. Suppressed 6 warnings (6 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. Suppressed 4 warnings (4 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. Suppressed 4 warnings (4 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. Suppressed 4 warnings (4 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. 5 warnings generated. Suppressed 5 warnings (5 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. 5 warnings generated. Suppressed 5 warnings (5 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. 5 warnings generated. Suppressed 5 warnings (5 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. Suppressed 4 warnings (4 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. vim +/ret +538 drivers/gpu/drm/bridge/ite-it66121.c 6c9a19d3d5af51 Phong LE 2021-04-19 528 6c9a19d3d5af51 Phong LE 2021-04-19 529 static int it66121_bridge_attach(struct drm_bridge *bridge, 6c9a19d3d5af51 Phong LE 2021-04-19 530 enum drm_bridge_attach_flags flags) 6c9a19d3d5af51 Phong LE 2021-04-19 531 { 6c9a19d3d5af51 Phong LE 2021-04-19 532 struct it66121_ctx *ctx = container_of(bridge, struct it66121_ctx, bridge); 6c9a19d3d5af51 Phong LE 2021-04-19 533 int ret; 6c9a19d3d5af51 Phong LE 2021-04-19 534 6c9a19d3d5af51 Phong LE 2021-04-19 535 if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR)) 6c9a19d3d5af51 Phong LE 2021-04-19 536 return -EINVAL; 6c9a19d3d5af51 Phong LE 2021-04-19 537 6c9a19d3d5af51 Phong LE 2021-04-19 @538 ret = drm_bridge_attach(bridge->encoder, ctx->next_bridge, bridge, flags); 6c9a19d3d5af51 Phong LE 2021-04-19 539 6c9a19d3d5af51 Phong LE 2021-04-19 540 ret = regmap_write_bits(ctx->regmap, IT66121_CLK_BANK_REG, 6c9a19d3d5af51 Phong LE 2021-04-19 541 IT66121_CLK_BANK_PWROFF_RCLK, 0); 6c9a19d3d5af51 Phong LE 2021-04-19 542 if (ret) 6c9a19d3d5af51 Phong LE 2021-04-19 543 return ret; 6c9a19d3d5af51 Phong LE 2021-04-19 544 6c9a19d3d5af51 Phong LE 2021-04-19 545 ret = regmap_write_bits(ctx->regmap, IT66121_INT_REG, 6c9a19d3d5af51 Phong LE 2021-04-19 546 IT66121_INT_TX_CLK_OFF, 0); 6c9a19d3d5af51 Phong LE 2021-04-19 547 if (ret) 6c9a19d3d5af51 Phong LE 2021-04-19 548 return ret; 6c9a19d3d5af51 Phong LE 2021-04-19 549 6c9a19d3d5af51 Phong LE 2021-04-19 550 ret = regmap_write_bits(ctx->regmap, IT66121_AFE_DRV_REG, 6c9a19d3d5af51 Phong LE 2021-04-19 551 IT66121_AFE_DRV_PWD, 0); 6c9a19d3d5af51 Phong LE 2021-04-19 552 if (ret) 6c9a19d3d5af51 Phong LE 2021-04-19 553 return ret; 6c9a19d3d5af51 Phong LE 2021-04-19 554 6c9a19d3d5af51 Phong LE 2021-04-19 555 ret = regmap_write_bits(ctx->regmap, IT66121_AFE_XP_REG, 6c9a19d3d5af51 Phong LE 2021-04-19 556 IT66121_AFE_XP_PWDI | IT66121_AFE_XP_PWDPLL, 0); 6c9a19d3d5af51 Phong LE 2021-04-19 557 if (ret) 6c9a19d3d5af51 Phong LE 2021-04-19 558 return ret; 6c9a19d3d5af51 Phong LE 2021-04-19 559 6c9a19d3d5af51 Phong LE 2021-04-19 560 ret = regmap_write_bits(ctx->regmap, IT66121_AFE_IP_REG, 6c9a19d3d5af51 Phong LE 2021-04-19 561 IT66121_AFE_IP_PWDPLL, 0); 6c9a19d3d5af51 Phong LE 2021-04-19 562 if (ret) 6c9a19d3d5af51 Phong LE 2021-04-19 563 return ret; 6c9a19d3d5af51 Phong LE 2021-04-19 564 6c9a19d3d5af51 Phong LE 2021-04-19 565 ret = regmap_write_bits(ctx->regmap, IT66121_AFE_DRV_REG, 6c9a19d3d5af51 Phong LE 2021-04-19 566 IT66121_AFE_DRV_RST, 0); 6c9a19d3d5af51 Phong LE 2021-04-19 567 if (ret) 6c9a19d3d5af51 Phong LE 2021-04-19 568 return ret; 6c9a19d3d5af51 Phong LE 2021-04-19 569 6c9a19d3d5af51 Phong LE 2021-04-19 570 ret = regmap_write_bits(ctx->regmap, IT66121_AFE_XP_REG, 6c9a19d3d5af51 Phong LE 2021-04-19 571 IT66121_AFE_XP_RESETB, IT66121_AFE_XP_RESETB); 6c9a19d3d5af51 Phong LE 2021-04-19 572 if (ret) 6c9a19d3d5af51 Phong LE 2021-04-19 573 return ret; 6c9a19d3d5af51 Phong LE 2021-04-19 574 6c9a19d3d5af51 Phong LE 2021-04-19 575 ret = regmap_write_bits(ctx->regmap, IT66121_AFE_IP_REG, 6c9a19d3d5af51 Phong LE 2021-04-19 576 IT66121_AFE_IP_RESETB, IT66121_AFE_IP_RESETB); 6c9a19d3d5af51 Phong LE 2021-04-19 577 if (ret) 6c9a19d3d5af51 Phong LE 2021-04-19 578 return ret; 6c9a19d3d5af51 Phong LE 2021-04-19 579 6c9a19d3d5af51 Phong LE 2021-04-19 580 ret = regmap_write_bits(ctx->regmap, IT66121_SW_RST_REG, 6c9a19d3d5af51 Phong LE 2021-04-19 581 IT66121_SW_RST_REF, 6c9a19d3d5af51 Phong LE 2021-04-19 582 IT66121_SW_RST_REF); 6c9a19d3d5af51 Phong LE 2021-04-19 583 if (ret) 6c9a19d3d5af51 Phong LE 2021-04-19 584 return ret; 6c9a19d3d5af51 Phong LE 2021-04-19 585 6c9a19d3d5af51 Phong LE 2021-04-19 586 /* Per programming manual, sleep here for bridge to settle */ 6c9a19d3d5af51 Phong LE 2021-04-19 587 msleep(50); 6c9a19d3d5af51 Phong LE 2021-04-19 588 6c9a19d3d5af51 Phong LE 2021-04-19 589 /* Start interrupts */ 6c9a19d3d5af51 Phong LE 2021-04-19 590 return regmap_write_bits(ctx->regmap, IT66121_INT_MASK1_REG, 6c9a19d3d5af51 Phong LE 2021-04-19 591 IT66121_INT_MASK1_DDC_NOACK | 6c9a19d3d5af51 Phong LE 2021-04-19 592 IT66121_INT_MASK1_DDC_FIFOERR | 6c9a19d3d5af51 Phong LE 2021-04-19 593 IT66121_INT_MASK1_DDC_BUSHANG, 0); 6c9a19d3d5af51 Phong LE 2021-04-19 594 } 6c9a19d3d5af51 Phong LE 2021-04-19 595 --- 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]
