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]

Reply via email to