CC: [email protected]
CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Maxime Ripard <[email protected]>

tree:   git://git.kraxel.org/linux drm-misc-next
head:   e769a3504e273309c9fe4a417d427c8dbff4cf1c
commit: 595dcf4eb859d043de9919f50d44272304e75422 [3/7] drm/vc4: hdmi: Move 
clock calculation into its own function
:::::: branch date: 8 days ago
:::::: commit date: 8 days ago
config: arm-randconfig-c002-20220331 
(https://download.01.org/0day-ci/archive/20220401/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
0f6d9501cf49ce02937099350d08f20c4af86f3d)
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
        git remote add kraxel git://git.kraxel.org/linux
        git fetch --no-tags kraxel drm-misc-next
        git checkout 595dcf4eb859d043de9919f50d44272304e75422
        # save the config file to linux build tree
        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 >>)
           ^
   include/linux/spinlock.h:264:3: note: expanded from macro 
'raw_spin_lock_irqsave'
                   _raw_spin_lock_irqsave(lock, flags);    \
                   ^
   include/linux/spinlock_api_up.h:69:45: note: expanded from macro 
'_raw_spin_lock_irqsave'
   #define _raw_spin_lock_irqsave(lock, flags)     __LOCK_IRQSAVE(lock, flags)
                                                   ^
   include/linux/spinlock_api_up.h:40:31: note: expanded from macro 
'__LOCK_IRQSAVE'
     do { local_irq_save(flags); __LOCK(lock); } while (0)
                                 ^
   include/linux/spinlock_api_up.h:31:27: note: expanded from macro '__LOCK'
     do { preempt_disable(); ___LOCK(lock); } while (0)
                             ^
   include/linux/spinlock_api_up.h:28:3: note: expanded from macro '___LOCK'
     do { __acquire(lock); (void)(lock); } while (0)
     ^
   drivers/gpu/drm/vc4/vc4_hdmi.c:1205:3: note: Loop condition is false.  
Exiting loop
                   spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
                   ^
   include/linux/spinlock.h:379:2: note: expanded from macro 'spin_lock_irqsave'
           raw_spin_lock_irqsave(spinlock_check(lock), flags);     \
           ^
   include/linux/spinlock.h:264:3: note: expanded from macro 
'raw_spin_lock_irqsave'
                   _raw_spin_lock_irqsave(lock, flags);    \
                   ^
   include/linux/spinlock_api_up.h:69:45: note: expanded from macro 
'_raw_spin_lock_irqsave'
   #define _raw_spin_lock_irqsave(lock, flags)     __LOCK_IRQSAVE(lock, flags)
                                                   ^
   include/linux/spinlock_api_up.h:40:31: note: expanded from macro 
'__LOCK_IRQSAVE'
     do { local_irq_save(flags); __LOCK(lock); } while (0)
                                 ^
   include/linux/spinlock_api_up.h:31:3: note: expanded from macro '__LOCK'
     do { preempt_disable(); ___LOCK(lock); } while (0)
     ^
   drivers/gpu/drm/vc4/vc4_hdmi.c:1205:3: note: Loop condition is false.  
Exiting loop
                   spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
                   ^
   include/linux/spinlock.h:379:2: note: expanded from macro 'spin_lock_irqsave'
           raw_spin_lock_irqsave(spinlock_check(lock), flags);     \
           ^
   include/linux/spinlock.h:264:3: note: expanded from macro 
'raw_spin_lock_irqsave'
                   _raw_spin_lock_irqsave(lock, flags);    \
                   ^
   include/linux/spinlock_api_up.h:69:45: note: expanded from macro 
'_raw_spin_lock_irqsave'
   #define _raw_spin_lock_irqsave(lock, flags)     __LOCK_IRQSAVE(lock, flags)
                                                   ^
   include/linux/spinlock_api_up.h:40:3: note: expanded from macro 
'__LOCK_IRQSAVE'
     do { local_irq_save(flags); __LOCK(lock); } while (0)
     ^
   drivers/gpu/drm/vc4/vc4_hdmi.c:1205:3: note: Loop condition is false.  
Exiting loop
                   spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
                   ^
   include/linux/spinlock.h:379:2: note: expanded from macro 'spin_lock_irqsave'
           raw_spin_lock_irqsave(spinlock_check(lock), flags);     \
           ^
   include/linux/spinlock.h:262:2: note: expanded from macro 
'raw_spin_lock_irqsave'
           do {                                            \
           ^
   drivers/gpu/drm/vc4/vc4_hdmi.c:1205:3: note: Loop condition is false.  
Exiting loop
                   spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
                   ^
   include/linux/spinlock.h:377:43: note: expanded from macro 
'spin_lock_irqsave'
   #define spin_lock_irqsave(lock, flags)                          \
                                                                   ^
   drivers/gpu/drm/vc4/vc4_hdmi.c:1207:11: note: Assuming the condition is false
                   WARN_ON(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
                           ^
   include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON'
           int __ret_warn_on = !!(condition);                              \
                                  ^~~~~~~~~
   drivers/gpu/drm/vc4/vc4_hdmi.c:1207:3: note: Taking false branch
                   WARN_ON(!(HDMI_READ(HDMI_SCHEDULER_CONTROL) &
                   ^
   include/asm-generic/bug.h:122:2: note: expanded from macro 'WARN_ON'
           if (unlikely(__ret_warn_on))                                    \
           ^
   drivers/gpu/drm/vc4/vc4_hdmi.c:1218:3: note: Calling 
'vc4_hdmi_set_infoframes'
                   vc4_hdmi_set_infoframes(encoder);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/vc4/vc4_hdmi.c:570:2: note: Loop condition is false.  
Exiting loop
           lockdep_assert_held(&vc4_hdmi->mutex);
           ^
   include/linux/lockdep.h:411:34: note: expanded from macro 
'lockdep_assert_held'
   #define lockdep_assert_held(l)                  do { (void)(l); } while (0)
                                                   ^
   drivers/gpu/drm/vc4/vc4_hdmi.c:578:6: note: Assuming field 'streaming' is 
true
           if (vc4_hdmi->audio.streaming)
               ^~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/vc4/vc4_hdmi.c:578:2: note: Taking true branch
           if (vc4_hdmi->audio.streaming)
           ^
   drivers/gpu/drm/vc4/vc4_hdmi.c:579:3: note: Calling 
'vc4_hdmi_set_audio_infoframe'
                   vc4_hdmi_set_audio_infoframe(encoder);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/vc4/vc4_hdmi.c:542:2: note: Calling 
'vc4_hdmi_write_infoframe'
           vc4_hdmi_write_infoframe(encoder, &frame);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/vc4/vc4_hdmi.c:437:34: note: The left operand of '-' is a 
garbage value
           u32 packet_id = frame->any.type - 0x80;
                           ~~~~~~~~~~~~~~~ ^
>> drivers/gpu/drm/vc4/vc4_hdmi.c:1323:3: warning: Value stored to 
>> 'tmds_char_rate' is never read [clang-analyzer-deadcode.DeadStores]
                   tmds_char_rate = mode->clock * 1000;
                   ^                ~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/vc4/vc4_hdmi.c:1323:3: note: Value stored to 
'tmds_char_rate' is never read
                   tmds_char_rate = mode->clock * 1000;
                   ^                ~~~~~~~~~~~~~~~~~~
   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/nouveau/nvkm/engine/disp/sorgm200.c:88:44: warning: The left 
operand of '-' is a garbage value 
[clang-analyzer-core.UndefinedBinaryOperatorResult]
           return ((sublinks & 1) ? sor[0] : sor[1]) - 1;
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:72:2: note: Loop 
condition is true.  Entering loop body
           for (*link = 0, m = __ffs(outp->info.or) * 2, s = 0; s < 2; m++, 
s++) {
           ^
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:73:7: note: Assuming the 
condition is false
                   if (sublinks & BIT(s)) {
                       ^~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:73:3: note: Taking false 
branch
                   if (sublinks & BIT(s)) {
                   ^
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:72:2: note: Loop 
condition is true.  Entering loop body
           for (*link = 0, m = __ffs(outp->info.or) * 2, s = 0; s < 2; m++, 
s++) {
           ^
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:73:7: note: Assuming the 
condition is false
                   if (sublinks & BIT(s)) {
                       ^~~~~~~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:73:3: note: Taking false 
branch
                   if (sublinks & BIT(s)) {
                   ^
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:72:2: note: Loop 
condition is false. Execution continues on line 83
           for (*link = 0, m = __ffs(outp->info.or) * 2, s = 0; s < 2; m++, 
s++) {
           ^
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:83:6: note: 'sublinks' 
is not equal to 3
           if (sublinks == 3) {
               ^~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:83:2: note: Taking false 
branch
           if (sublinks == 3) {
           ^
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:88:11: note: Assuming 
the condition is false
           return ((sublinks & 1) ? sor[0] : sor[1]) - 1;
                    ^~~~~~~~~~~~
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:88:10: note: '?' 
condition is false
           return ((sublinks & 1) ? sor[0] : sor[1]) - 1;
                   ^
   drivers/gpu/drm/nouveau/nvkm/engine/disp/sorgm200.c:88:44: note: The left 
operand of '-' is a garbage value
           return ((sublinks & 1) ? sor[0] : sor[1]) - 1;
                   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  ^
   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.
   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.
   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.
   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.
   7 warnings generated.
   sound/pci/maestro3.c:1851:2: 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(pcm->name, chip->card->driver);
           ^~~~~~
   sound/pci/maestro3.c:1851:2: 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(pcm->name, chip->card->driver);
           ^~~~~~
   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.
   21 warnings generated.
   sound/pci/ac97/ac97_codec.c:1067:3: warning: Value stored to 'val' is never 
read [clang-analyzer-deadcode.DeadStores]
                   val = snd_ac97_read(ac97, reg);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~
   sound/pci/ac97/ac97_codec.c:1067:3: note: Value stored to 'val' is never read
                   val = snd_ac97_read(ac97, reg);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~
   sound/pci/ac97/ac97_codec.c:1104:3: warning: Value stored to 'val' is never 
read [clang-analyzer-deadcode.DeadStores]
                   val = snd_ac97_read(ac97, reg);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~
   sound/pci/ac97/ac97_codec.c:1104:3: note: Value stored to 'val' is never read
                   val = snd_ac97_read(ac97, reg);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~
   sound/pci/ac97/ac97_codec.c:1856:2: 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(name, pid->name);
           ^~~~~~
   sound/pci/ac97/ac97_codec.c:1856:2: 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(name, pid->name);
           ^~~~~~
   sound/pci/ac97/ac97_codec.c:1865:3: warning: Call to function 'strcat' 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 'strlcat'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
                   strcat(name, " ");

vim +/tmds_char_rate +1323 drivers/gpu/drm/vc4/vc4_hdmi.c

9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1295  
63495f6b4aede2 Maxime Ripard 2020-10-29  1296  static int 
vc4_hdmi_encoder_atomic_check(struct drm_encoder *encoder,
63495f6b4aede2 Maxime Ripard 2020-10-29  1297                                   
 struct drm_crtc_state *crtc_state,
63495f6b4aede2 Maxime Ripard 2020-10-29  1298                                   
 struct drm_connector_state *conn_state)
63495f6b4aede2 Maxime Ripard 2020-10-29  1299  {
f623746f74721b Maxime Ripard 2020-12-15  1300   struct vc4_hdmi_connector_state 
*vc4_state = conn_state_to_vc4_hdmi_conn_state(conn_state);
63495f6b4aede2 Maxime Ripard 2020-10-29  1301   struct drm_display_mode *mode = 
&crtc_state->adjusted_mode;
63495f6b4aede2 Maxime Ripard 2020-10-29  1302   struct vc4_hdmi *vc4_hdmi = 
encoder_to_vc4_hdmi(encoder);
6135ee07702781 Maxime Ripard 2022-02-22  1303   unsigned long long 
tmds_char_rate = mode->clock * 1000;
6135ee07702781 Maxime Ripard 2022-02-22  1304   unsigned long long 
tmds_bit_rate;
595dcf4eb859d0 Maxime Ripard 2022-02-22  1305   int ret;
63495f6b4aede2 Maxime Ripard 2020-10-29  1306  
57fb32e632be4d Maxime Ripard 2020-10-29  1307   if 
(vc4_hdmi->variant->unsupported_odd_h_timings &&
57fb32e632be4d Maxime Ripard 2020-10-29  1308       ((mode->hdisplay % 2) || 
(mode->hsync_start % 2) ||
57fb32e632be4d Maxime Ripard 2020-10-29  1309        (mode->hsync_end % 2) || 
(mode->htotal % 2)))
57fb32e632be4d Maxime Ripard 2020-10-29  1310           return -EINVAL;
57fb32e632be4d Maxime Ripard 2020-10-29  1311  
9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1312   /*
9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1313    * The 1440p@60 pixel rate is 
in the same range than the first
9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1314    * WiFi channel (between 2.4GHz 
and 2.422GHz with 22MHz
9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1315    * bandwidth). Slightly lower 
the frequency to bring it out of
9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1316    * the WiFi range.
9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1317    */
6135ee07702781 Maxime Ripard 2022-02-22  1318   tmds_bit_rate = tmds_char_rate 
* 10;
9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1319   if 
(vc4_hdmi->disable_wifi_frequencies &&
6135ee07702781 Maxime Ripard 2022-02-22  1320       (tmds_bit_rate >= 
WIFI_2_4GHz_CH1_MIN_FREQ &&
6135ee07702781 Maxime Ripard 2022-02-22  1321        tmds_bit_rate <= 
WIFI_2_4GHz_CH1_MAX_FREQ)) {
9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1322           mode->clock = 238560;
6135ee07702781 Maxime Ripard 2022-02-22 @1323           tmds_char_rate = 
mode->clock * 1000;
9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1324   }
9fa1d7e60ad5ad Maxime Ripard 2020-10-29  1325  
595dcf4eb859d0 Maxime Ripard 2022-02-22  1326   ret = 
vc4_hdmi_encoder_compute_clock(vc4_hdmi, vc4_state, mode,
595dcf4eb859d0 Maxime Ripard 2022-02-22  1327                                   
     conn_state->max_bpc);
595dcf4eb859d0 Maxime Ripard 2022-02-22  1328   if (ret)
595dcf4eb859d0 Maxime Ripard 2022-02-22  1329           return ret;
f623746f74721b Maxime Ripard 2020-12-15  1330  
63495f6b4aede2 Maxime Ripard 2020-10-29  1331   return 0;
63495f6b4aede2 Maxime Ripard 2020-10-29  1332  }
63495f6b4aede2 Maxime Ripard 2020-10-29  1333  

:::::: The code at line 1323 was first introduced by commit
:::::: 6135ee07702781cd8206bcb1c202c4630d6e3c9c drm/vc4: hdmi: Rename 
pixel_rate variable

:::::: TO: Maxime Ripard <[email protected]>
:::::: CC: Maxime Ripard <[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