CC: [email protected] CC: [email protected] BCC: [email protected] CC: [email protected] TO: Kees Cook <[email protected]> CC: Daniel Vetter <[email protected]>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master head: 57ae8a492116910bad2b3497ffe555b3a4b4180f commit: f611b1e7624ccdbd495c19e9805629e22265aa16 drm: Avoid circular dependencies for CONFIG_FB date: 11 months ago :::::: branch date: 11 hours ago :::::: commit date: 11 months ago config: arm-randconfig-c002-20220501 (https://download.01.org/0day-ci/archive/20220501/[email protected]/config) compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 400775649969b9baf3bc2a510266e7912bb16ae9) 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/torvalds/linux.git/commit/?id=f611b1e7624ccdbd495c19e9805629e22265aa16 git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git git fetch --no-tags linus master git checkout f611b1e7624ccdbd495c19e9805629e22265aa16 # 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 as appropriate Reported-by: kernel test robot <[email protected]> clang-analyzer warnings: (new ones prefixed by >>) Suppressed 2 warnings (1 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. 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. 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. 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. 1 warning generated. drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:426:2: warning: 4th function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage] dev_err(mhdp->dev, "HDCP authentication failed (%d tries/%d)\n", ^ include/linux/dev_printk.h:112:2: note: expanded from macro 'dev_err' _dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__) ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:535:8: note: Calling '_cdns_mhdp_hdcp_enable' ret = _cdns_mhdp_hdcp_enable(mhdp, content_type); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:406:6: note: 'ret' declared without an initial value int ret, tries = 3; ^~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:409:2: note: Loop condition is true. Entering loop body for (i = 0; i < tries; i++) { ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:410:7: note: Assuming 'content_type' is not equal to DRM_MODE_HDCP_CONTENT_TYPE0 if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0 || ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:410:7: note: Left side of '||' is false drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:411:7: note: Assuming 'content_type' is not equal to DRM_MODE_HDCP_CONTENT_TYPE1 content_type == DRM_MODE_HDCP_CONTENT_TYPE1) { ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:410:3: note: Taking false branch if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0 || ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:418:7: note: 'content_type' is not equal to DRM_MODE_HDCP_CONTENT_TYPE0 if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0) { ^~~~~~~~~~~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:418:3: note: Taking false branch if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0) { ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:409:2: note: Loop condition is true. Entering loop body for (i = 0; i < tries; i++) { ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:410:7: note: 'content_type' is not equal to DRM_MODE_HDCP_CONTENT_TYPE0 if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0 || ^~~~~~~~~~~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:410:7: note: Left side of '||' is false drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:411:7: note: 'content_type' is not equal to DRM_MODE_HDCP_CONTENT_TYPE1 content_type == DRM_MODE_HDCP_CONTENT_TYPE1) { ^~~~~~~~~~~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:410:3: note: Taking false branch if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0 || ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:418:7: note: 'content_type' is not equal to DRM_MODE_HDCP_CONTENT_TYPE0 if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0) { ^~~~~~~~~~~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:418:3: note: Taking false branch if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0) { ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:409:2: note: Loop condition is true. Entering loop body for (i = 0; i < tries; i++) { ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:410:7: note: 'content_type' is not equal to DRM_MODE_HDCP_CONTENT_TYPE0 if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0 || ^~~~~~~~~~~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:410:7: note: Left side of '||' is false drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:411:7: note: 'content_type' is not equal to DRM_MODE_HDCP_CONTENT_TYPE1 content_type == DRM_MODE_HDCP_CONTENT_TYPE1) { ^~~~~~~~~~~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:410:3: note: Taking false branch if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0 || ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:418:7: note: 'content_type' is not equal to DRM_MODE_HDCP_CONTENT_TYPE0 if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0) { ^~~~~~~~~~~~ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:418:3: note: Taking false branch if (content_type == DRM_MODE_HDCP_CONTENT_TYPE0) { ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:409:2: note: Loop condition is false. Execution continues on line 426 for (i = 0; i < tries; i++) { ^ drivers/gpu/drm/bridge/cadence/cdns-mhdp8546-hdcp.c:426:2: note: 4th function call argument is an uninitialized value dev_err(mhdp->dev, "HDCP authentication failed (%d tries/%d)\n", ^ include/linux/dev_printk.h:112:2: note: expanded from macro 'dev_err' _dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__) ^ ~~~~~~~~~~~ 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. 3 warnings generated. Suppressed 3 warnings (1 in non-user code, 2 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 (1 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. 1 warning generated. >> drivers/gpu/drm/tegra/fb.c:126:14: warning: Assigned value is garbage or >> undefined [clang-analyzer-core.uninitialized.Assign] fb->obj[i] = &planes[i]->gem; ^ drivers/gpu/drm/tegra/fb.c:150:14: note: Assuming 'i' is >= field 'num_planes' for (i = 0; i < info->num_planes; i++) { ^~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/fb.c:150:2: note: Loop condition is false. Execution continues on line 174 for (i = 0; i < info->num_planes; i++) { ^ drivers/gpu/drm/tegra/fb.c:174:7: note: Calling 'tegra_fb_alloc' fb = tegra_fb_alloc(drm, cmd, planes, i); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/fb.c:119:7: note: Calling 'kzalloc' fb = kzalloc(sizeof(*fb), GFP_KERNEL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:686:9: note: Calling 'kmalloc' return kmalloc(size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:544:2: note: Taking false branch if (__builtin_constant_p(size)) { ^ include/linux/slab.h:561:2: note: Returning pointer, which participates in a condition later return __kmalloc(size, flags); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:686:9: note: Returning from 'kmalloc' return kmalloc(size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ include/linux/slab.h:686:2: note: Returning pointer, which participates in a condition later return kmalloc(size, flags | __GFP_ZERO); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/fb.c:119:7: note: Returning from 'kzalloc' fb = kzalloc(sizeof(*fb), GFP_KERNEL); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/fb.c:120:6: note: Assuming 'fb' is non-null if (!fb) ^~~ drivers/gpu/drm/tegra/fb.c:120:2: note: Taking false branch if (!fb) ^ drivers/gpu/drm/tegra/fb.c:125:7: note: The value 0 is assigned to 'i' for (i = 0; i < fb->format->num_planes; i++) ^~~~~ drivers/gpu/drm/tegra/fb.c:125:14: note: Assuming 'i' is < field 'num_planes' for (i = 0; i < fb->format->num_planes; i++) ^~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/tegra/fb.c:125:2: note: Loop condition is true. Entering loop body for (i = 0; i < fb->format->num_planes; i++) ^ drivers/gpu/drm/tegra/fb.c:126:14: note: Assigned value is garbage or undefined fb->obj[i] = &planes[i]->gem; ^ ~~~~~~~~~~~~~~~ 3 warnings generated. kernel/kallsyms.c:420:3: 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(buffer, name); ^~~~~~ kernel/kallsyms.c:420:3: 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(buffer, name); ^~~~~~ Suppressed 2 warnings (1 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. 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. 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. Suppressed 2 warnings (1 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. 1 warning generated. drivers/gpu/drm/sun4i/sun4i_tcon.c:1426:2: warning: Value stored to 'id' is never read [clang-analyzer-deadcode.DeadStores] id = sun4i_tcon_of_get_id_from_port(port); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/gpu/drm/sun4i/sun4i_tcon.c:1426:2: note: Value stored to 'id' is never read id = sun4i_tcon_of_get_id_from_port(port); ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 2 warnings generated. drivers/gpu/drm/sun4i/sun4i_tv.c:491:3: 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, tv_mode->name); ^~~~~~ drivers/gpu/drm/sun4i/sun4i_tv.c:491:3: 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, tv_mode->name); ^~~~~~ Suppressed 1 warnings (1 with check filters). 1 warning generated. drivers/iio/pressure/dlhl60d.c:45:8: warning: Excessive padding in 'struct dlh_state' (32 padding bytes, where 0 is optimal). Optimal fields order: rx_buf, use_interrupt, client, info, completion, consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding] struct dlh_state { ~~~~~~~^~~~~~~~~~~ drivers/iio/pressure/dlhl60d.c:45:8: note: Excessive padding in 'struct dlh_state' (32 padding bytes, where 0 is optimal). Optimal fields order: rx_buf, use_interrupt, client, info, completion, consider reordering the fields or adding explicit padding members struct dlh_state { ~~~~~~~^~~~~~~~~~~ 2 warnings generated. drivers/pinctrl/pinctrl-rockchip.c:159:8: warning: Excessive padding in 'struct rockchip_pin_bank' (9 padding bytes, where 1 is optimal). Optimal fields order: vim +126 drivers/gpu/drm/tegra/fb.c de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 109 dbc33c7d65536b drivers/gpu/drm/tegra/fb.c Daniel Stone 2018-03-30 110 static struct drm_framebuffer *tegra_fb_alloc(struct drm_device *drm, 1eb83451ba55d7 drivers/gpu/drm/tegra/fb.c Ville Syrjälä 2015-11-11 111 const struct drm_mode_fb_cmd2 *mode_cmd, de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 112 struct tegra_bo **planes, de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 113 unsigned int num_planes) de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 114 { dbc33c7d65536b drivers/gpu/drm/tegra/fb.c Daniel Stone 2018-03-30 115 struct drm_framebuffer *fb; de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 116 unsigned int i; de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 117 int err; de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 118 de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 119 fb = kzalloc(sizeof(*fb), GFP_KERNEL); de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 120 if (!fb) de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 121 return ERR_PTR(-ENOMEM); de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 122 dbc33c7d65536b drivers/gpu/drm/tegra/fb.c Daniel Stone 2018-03-30 123 drm_helper_mode_fill_fb_struct(drm, fb, mode_cmd); de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 124 dbc33c7d65536b drivers/gpu/drm/tegra/fb.c Daniel Stone 2018-03-30 125 for (i = 0; i < fb->format->num_planes; i++) dbc33c7d65536b drivers/gpu/drm/tegra/fb.c Daniel Stone 2018-03-30 @126 fb->obj[i] = &planes[i]->gem; de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 127 dbc33c7d65536b drivers/gpu/drm/tegra/fb.c Daniel Stone 2018-03-30 128 err = drm_framebuffer_init(drm, fb, &tegra_fb_funcs); de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 129 if (err < 0) { de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 130 dev_err(drm->dev, "failed to initialize framebuffer: %d\n", de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 131 err); de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 132 kfree(fb); de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 133 return ERR_PTR(err); de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 134 } de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 135 de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 136 return fb; de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 137 } de2ba664c30fcd drivers/gpu/host1x/drm/fb.c Arto Merilainen 2013-03-22 138 :::::: The code at line 126 was first introduced by commit :::::: dbc33c7d65536bce447057dc6f882decc515047d drm/tegra: tegra_fb -> drm_framebuffer :::::: TO: Daniel Stone <[email protected]> :::::: CC: Thierry Reding <[email protected]> -- 0-DAY CI Kernel Test Service https://01.org/lkp _______________________________________________ kbuild mailing list -- [email protected] To unsubscribe send an email to [email protected]
