CC: [email protected]
CC: [email protected]
CC: [email protected]
TO: "Christian König" <[email protected]>
CC: Rob Clark <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   79e06c4c4950be2abd8ca5d2428a8c915aa62c24
commit: b3ed524f84f573ece1aa2f26e9db3c34a593e0d1 drm/msm: allow compile_test on 
!ARM
date:   4 months ago
:::::: branch date: 10 hours ago
:::::: commit date: 4 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 
650fc40b6d8d9a5869b4fca525d5f237b0ee2803)
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://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=b3ed524f84f573ece1aa2f26e9db3c34a593e0d1
        git remote add linus 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
        git fetch --no-tags linus master
        git checkout b3ed524f84f573ece1aa2f26e9db3c34a593e0d1
        # 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 >>)
                   if (!list_empty(&file_priv->event_list)) {
                   ^
   drivers/gpu/drm/drm_file.c:585:8: note: Left side of '&&' is false
                           e = list_first_entry(&file_priv->event_list,
                               ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
                                                                      ^
   drivers/gpu/drm/drm_file.c:585:8: note: Taking false branch
                           e = list_first_entry(&file_priv->event_list,
                               ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
           ^
   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/compiler_types.h:322:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:310:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:302:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   drivers/gpu/drm/drm_file.c:585:8: note: Loop condition is false.  Exiting 
loop
                           e = list_first_entry(&file_priv->event_list,
                               ^
   include/linux/list.h:522:2: note: expanded from macro 'list_first_entry'
           list_entry((ptr)->next, type, member)
           ^
   include/linux/list.h:511:2: note: expanded from macro 'list_entry'
           container_of(ptr, type, member)
           ^
   include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
           BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) &&   \
           ^
   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/compiler_types.h:322:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:310:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:300:2: note: expanded from macro 
'__compiletime_assert'
           do {                                                            \
           ^
   drivers/gpu/drm/drm_file.c:587:30: note: Use of memory after it is freed
                           file_priv->event_space += e->event->length;
                                                     ^~~~~~~~
   Suppressed 8 warnings (8 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.
   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.
   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.
   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.
   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.
   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.
   9 warnings generated.
   Suppressed 9 warnings (9 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.
   9 warnings generated.
   Suppressed 9 warnings (9 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.
   10 warnings generated.
>> drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c:16:8: warning: Excessive padding 
>> in 'struct a6xx_gpu_state' (32 padding bytes, where 0 is optimal). 
   Optimal fields order: 
   gmu_registers, 
   registers, 
   shaders, 
   clusters, 
   dbgahb_clusters, 
   indexed_regs, 
   debugbus, 
   vbif_debugbus, 
   cx_debugbus, 
   objs, 
   base, 
   nr_gmu_registers, 
   nr_registers, 
   nr_shaders, 
   nr_clusters, 
   nr_dbgahb_clusters, 
   nr_indexed_regs, 
   nr_debugbus, 
   nr_cx_debugbus, 
   consider reordering the fields or adding explicit padding members 
[clang-analyzer-optin.performance.Padding]
   struct a6xx_gpu_state {
   ~~~~~~~^~~~~~~~~~~~~~~~
   drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c:16:8: note: Excessive padding in 
'struct a6xx_gpu_state' (32 padding bytes, where 0 is optimal). Optimal fields 
order: gmu_registers, registers, shaders, clusters, dbgahb_clusters, 
indexed_regs, debugbus, vbif_debugbus, cx_debugbus, objs, base, 
nr_gmu_registers, nr_registers, nr_shaders, nr_clusters, nr_dbgahb_clusters, 
nr_indexed_regs, nr_debugbus, nr_cx_debugbus, consider reordering the fields or 
adding explicit padding members
   struct a6xx_gpu_state {
   ~~~~~~~^~~~~~~~~~~~~~~~
   Suppressed 9 warnings (9 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.
   12 warnings generated.
   kernel/locking/lockdep.c:1836:30: warning: Access to field 'class' results 
in a dereference of a null pointer (loaded from variable 'prt') 
[clang-analyzer-core.NullDereference]
           struct lock_class *parent = prt->class;
                                       ^
   kernel/locking/lockdep.c:3159:6: note: Assuming 'depth' is not equal to 0
           if (!depth)
               ^~~~~~
   kernel/locking/lockdep.c:3159:2: note: Taking false branch
           if (!depth)
           ^
   kernel/locking/lockdep.c:3165:6: note: Assuming 
'curr->held_locks[depth].irq_context' is equal to 
'curr->held_locks[depth-1].irq_context'
           if (curr->held_locks[depth].irq_context !=
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/locking/lockdep.c:3165:2: note: Taking false branch
           if (curr->held_locks[depth].irq_context !=
           ^
   kernel/locking/lockdep.c:3169:2: note: Loop condition is true.  Entering 
loop body
           for (;;) {
           ^
   kernel/locking/lockdep.c:3173:7: note: Assuming field 'check' is not equal 
to 0
                   if (hlock->check) {
                       ^~~~~~~~~~~~
   kernel/locking/lockdep.c:3173:3: note: Taking true branch
                   if (hlock->check) {
                   ^
   kernel/locking/lockdep.c:3174:14: note: Calling 'check_prev_add'
                           int ret = check_prev_add(curr, hlock, next, 
distance, &trace);
                                     
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/locking/lockdep.c:3023:6: note: Assuming field 'key' is non-null
           if (!hlock_class(prev)->key || !hlock_class(next)->key) {
               ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/locking/lockdep.c:3023:6: note: Left side of '||' is false
   kernel/locking/lockdep.c:3023:33: note: Assuming field 'key' is non-null
           if (!hlock_class(prev)->key || !hlock_class(next)->key) {
                                          ^~~~~~~~~~~~~~~~~~~~~~~
   kernel/locking/lockdep.c:3023:2: note: Taking false branch
           if (!hlock_class(prev)->key || !hlock_class(next)->key) {
           ^
   kernel/locking/lockdep.c:3051:8: note: Calling 'check_noncircular'
           ret = check_noncircular(next, prev, trace);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/locking/lockdep.c:2115:2: note: Calling 'bfs_init_root'
           bfs_init_root(&src_entry, src);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/locking/lockdep.c:1622:2: note: Calling '__bfs_init_root'
           __bfs_init_root(lock, hlock_class(hlock));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/locking/lockdep.c:1609:1: note: Returning without writing to 
'lock->trace', which participates in a condition later
   }
   ^
   kernel/locking/lockdep.c:1622:2: note: Returning from '__bfs_init_root'
           __bfs_init_root(lock, hlock_class(hlock));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/locking/lockdep.c:1623:19: note: Assuming field 'read' is not equal 
to 2
           lock->only_xr = (hlock->read == 2);
                            ^~~~~~~~~~~~~~~~
   kernel/locking/lockdep.c:1624:1: note: Returning without writing to 
'lock->trace', which participates in a condition later
   }
   ^
   kernel/locking/lockdep.c:2115:2: note: Returning from 'bfs_init_root'
           bfs_init_root(&src_entry, src);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/locking/lockdep.c:2117:2: note: Loop condition is false.  Exiting loop
           debug_atomic_inc(nr_cyclic_checks);
           ^
   kernel/locking/lockdep_internals.h:255:33: note: expanded from macro 
'debug_atomic_inc'
   # define debug_atomic_inc(ptr)          do { } while (0)
                                           ^
   kernel/locking/lockdep.c:2119:8: note: Calling 'check_path'
--
            ^
   include/linux/list.h:282:9: note: Left side of '||' is false
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                              ^
   include/linux/compiler_types.h:290:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   include/linux/list.h:282:9: note: Left side of '||' is false
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                              ^
   include/linux/compiler_types.h:290:3: note: expanded from macro 
'__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   include/linux/list.h:282:9: note: Left side of '||' is true
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:38: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
                                               ^
   include/linux/list.h:282:9: note: Taking false branch
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:2: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
           ^
   include/linux/compiler_types.h:322:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:310:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:302:3: note: expanded from macro 
'__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   include/linux/list.h:282:9: note: Loop condition is false.  Exiting loop
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:2: note: expanded from macro 
'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long 
long),  \
           ^
   include/linux/compiler_types.h:322:2: note: expanded from macro 
'compiletime_assert'
           _compiletime_assert(condition, msg, __compiletime_assert_, 
__COUNTER__)
           ^
   include/linux/compiler_types.h:310:2: note: expanded from macro 
'_compiletime_assert'
           __compiletime_assert(condition, msg, prefix, suffix)
           ^
   include/linux/compiler_types.h:300:2: note: expanded from macro 
'__compiletime_assert'
           do {                                                            \
           ^
   include/linux/list.h:282:9: note: Dereference of null pointer
           return READ_ONCE(head->next) == head;
                  ^
   include/asm-generic/rwonce.h:50:2: note: expanded from macro 'READ_ONCE'
           __READ_ONCE(x);                                                 \
           ^~~~~~~~~~~~~~
   include/asm-generic/rwonce.h:44:24: note: expanded from macro '__READ_ONCE'
   #define __READ_ONCE(x)  (*(const volatile __unqual_scalar_typeof(x) *)&(x))
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   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.
   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.
   8 warnings generated.
   Suppressed 8 warnings (8 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.
   11 warnings generated.
>> drivers/gpu/drm/msm/msm_gem.c:461:9: warning: Assigned value is garbage or 
>> undefined [clang-analyzer-core.uninitialized.Assign]
                   *iova = local;
                         ^
   drivers/gpu/drm/msm/msm_gem.c:486:9: note: Calling 
'get_and_pin_iova_range_locked'
           return get_and_pin_iova_range_locked(obj, aspace, iova, 0, U64_MAX);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/msm/msm_gem.c:449:2: note: 'local' declared without an 
initial value
           u64 local;
           ^~~~~~~~~
   drivers/gpu/drm/msm/msm_gem.c:452:14: note: Assuming the condition is false
           GEM_WARN_ON(!msm_gem_is_locked(obj));
                       ^
   drivers/gpu/drm/msm/msm_gem.h:18:40: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                                          ^
   include/linux/ratelimit.h:58:15: note: expanded from macro 'WARN_RATELIMIT'
           int rtn = !!(condition);                                \
                        ^~~~~~~~~
   drivers/gpu/drm/msm/msm_gem.c:452:2: note: 'rtn' is 0
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/ratelimit.h:60:15: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
                        ^~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/gpu/drm/msm/msm_gem.c:452:2: note: Left side of '&&' is false
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^
   include/linux/ratelimit.h:60:19: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
                            ^
   drivers/gpu/drm/msm/msm_gem.c:452:2: note: Taking false branch
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^
   include/linux/ratelimit.h:60:2: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
           ^
   drivers/gpu/drm/msm/msm_gem.c:454:8: note: Calling 'get_iova_locked'
           ret = get_iova_locked(obj, aspace, &local,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/msm/msm_gem.c:385:14: note: Assuming the condition is false
           GEM_WARN_ON(!msm_gem_is_locked(obj));
                       ^
   drivers/gpu/drm/msm/msm_gem.h:18:40: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                                          ^
   include/linux/ratelimit.h:58:15: note: expanded from macro 'WARN_RATELIMIT'
           int rtn = !!(condition);                                \
                        ^~~~~~~~~
   drivers/gpu/drm/msm/msm_gem.c:385:2: note: 'rtn' is 0
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/ratelimit.h:60:15: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
                        ^~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/gpu/drm/msm/msm_gem.c:385:2: note: Left side of '&&' is false
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^
   include/linux/ratelimit.h:60:19: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
                            ^
   drivers/gpu/drm/msm/msm_gem.c:385:2: note: Taking false branch
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^
   include/linux/ratelimit.h:60:2: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
           ^
   drivers/gpu/drm/msm/msm_gem.c:389:6: note: Assuming 'vma' is null, which 
participates in a condition later
           if (!vma) {
               ^~~~
   drivers/gpu/drm/msm/msm_gem.c:389:2: note: Taking true branch
           if (!vma) {
           ^
   drivers/gpu/drm/msm/msm_gem.c:391:7: note: Calling 'IS_ERR'
                   if (IS_ERR(vma))
                       ^~~~~~~~~~~
   include/linux/err.h:36:9: note: Assuming the condition is true
           return IS_ERR_VALUE((unsigned long)ptr);
--
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/leds/leds-pwm.c:146:15: note: '?' condition is false
                           led.name = to_of_node(fwnode)->name;
                                      ^
   include/linux/of.h:164:3: note: expanded from macro 'to_of_node'
                   is_of_node(__to_of_node_fwnode) ?                       \
                   ^
   drivers/leds/leds-pwm.c:146:15: note: Access to field 'name' results in a 
dereference of a null pointer
                           led.name = to_of_node(fwnode)->name;
                                      ^
   include/linux/of.h:161:2: note: expanded from macro 'to_of_node'
           ({                                                              \
           ^
   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.
   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.
   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.
   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.
   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.
   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.
   drivers/comedi/drivers/das800.c:90:8: warning: Excessive padding in 'struct 
das800_board' (8 padding bytes, where 0 is optimal). 
   Optimal fields order: 
   name, 
   ai_range, 
   ai_speed, 
   resolution, 
   consider reordering the fields or adding explicit padding members 
[clang-analyzer-optin.performance.Padding]
   struct das800_board {
   ~~~~~~~^~~~~~~~~~~~~~
   drivers/comedi/drivers/das800.c:90:8: note: Excessive padding in 'struct 
das800_board' (8 padding bytes, where 0 is optimal). Optimal fields order: 
name, ai_range, ai_speed, resolution, consider reordering the fields or adding 
explicit padding members
   struct das800_board {
   ~~~~~~~^~~~~~~~~~~~~~
   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.
   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.
   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.
   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.
   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.
   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.
   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.
   12 warnings generated.
>> drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:172:8: warning: Excessive 
>> padding in 'struct dpu_encoder_virt' (33 padding bytes, where 1 is optimal). 
   Optimal fields order: 
   cur_master, 
   cur_slave, 
   crtc, 
   debugfs_root, 
   frame_busy_mask, 
   crtc_frame_event_cb, 
   crtc_frame_event_cb_data, 
   hw_pp, 
   phys_encs, 
   vsync_event_work, 
   enc_spinlock, 
   frame_done_timer, 
   vsync_event_timer, 
   base, 
   enc_lock, 
   rc_lock, 
   delayed_off_work, 
   bus_scaling_client, 
   num_phys_encs, 
   frame_done_timeout_ms, 
   rc_state, 
   idle_timeout, 
   topology, 
   disp_info, 
   enabled, 
   intfs_swapped, 
   idle_pc_supported, 
   consider reordering the fields or adding explicit padding members 
[clang-analyzer-optin.performance.Padding]
   struct dpu_encoder_virt {
   ~~~~~~~^~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c:172:8: note: Excessive padding 
in 'struct dpu_encoder_virt' (33 padding bytes, where 1 is optimal). Optimal 
fields order: cur_master, cur_slave, crtc, debugfs_root, frame_busy_mask, 
crtc_frame_event_cb, crtc_frame_event_cb_data, hw_pp, phys_encs, 
vsync_event_work, enc_spinlock, frame_done_timer, vsync_event_timer, base, 
enc_lock, rc_lock, delayed_off_work, bus_scaling_client, num_phys_encs, 
frame_done_timeout_ms, rc_state, idle_timeout, topology, disp_info, enabled, 
intfs_swapped, idle_pc_supported, consider reordering the fields or adding 
explicit padding members
   struct dpu_encoder_virt {
   ~~~~~~~^~~~~~~~~~~~~~~~~~
   Suppressed 11 warnings (11 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.
   11 warnings generated.
   Suppressed 11 warnings (11 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.
   11 warnings generated.
   Suppressed 11 warnings (11 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.
   10 warnings generated.
   Suppressed 10 warnings (10 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.
   9 warnings generated.
   Suppressed 9 warnings (9 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.
   8 warnings generated.
   Suppressed 8 warnings (8 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.
   10 warnings generated.
   drivers/gpu/drm/msm/msm_perf.c:112:2: warning: Value stored to 'rem' is 
never read [clang-analyzer-deadcode.DeadStores]
           rem -= n;
           ^      ~
   drivers/gpu/drm/msm/msm_perf.c:112:2: note: Value stored to 'rem' is never 
read
           rem -= n;
           ^      ~
   Suppressed 9 warnings (9 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 (6 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.
   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.
   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.
   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.
   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.
   2 warnings generated.
--
               ^~~~~~
   drivers/spmi/spmi-pmic-arb.c:348:2: note: Taking true branch
           if (rc < 0)
           ^
   drivers/spmi/spmi-pmic-arb.c:479:6: note: Returning from 'pmic_arb_read_cmd'
           if (pmic_arb_read_cmd(pmic_arb->spmic, SPMI_CMD_EXT_READL, sid,
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spmi/spmi-pmic-arb.c:479:2: note: Taking true branch
           if (pmic_arb_read_cmd(pmic_arb->spmic, SPMI_CMD_EXT_READL, sid,
           ^
   drivers/spmi/spmi-pmic-arb.c:481:3: note: Assuming the condition is false
                   dev_err_ratelimited(&pmic_arb->spmic->dev, "failed irqchip 
transaction on %x\n",
                   ^
   include/linux/dev_printk.h:218:2: note: expanded from macro 
'dev_err_ratelimited'
           dev_level_ratelimited(dev_err, dev, fmt, ##__VA_ARGS__)
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/dev_printk.h:207:6: note: expanded from macro 
'dev_level_ratelimited'
           if (__ratelimit(&_rs))                                          \
               ^~~~~~~~~~~~~~~~~
   include/linux/ratelimit_types.h:41:28: note: expanded from macro 
'__ratelimit'
   #define __ratelimit(state) ___ratelimit(state, __func__)
                              ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spmi/spmi-pmic-arb.c:481:3: note: Taking false branch
                   dev_err_ratelimited(&pmic_arb->spmic->dev, "failed irqchip 
transaction on %x\n",
                   ^
   include/linux/dev_printk.h:218:2: note: expanded from macro 
'dev_err_ratelimited'
           dev_level_ratelimited(dev_err, dev, fmt, ##__VA_ARGS__)
           ^
   include/linux/dev_printk.h:207:2: note: expanded from macro 
'dev_level_ratelimited'
           if (__ratelimit(&_rs))                                          \
           ^
   drivers/spmi/spmi-pmic-arb.c:481:3: note: Loop condition is false.  Exiting 
loop
                   dev_err_ratelimited(&pmic_arb->spmic->dev, "failed irqchip 
transaction on %x\n",
                   ^
   include/linux/dev_printk.h:218:2: note: expanded from macro 
'dev_err_ratelimited'
           dev_level_ratelimited(dev_err, dev, fmt, ##__VA_ARGS__)
           ^
   include/linux/dev_printk.h:202:59: note: expanded from macro 
'dev_level_ratelimited'
   #define dev_level_ratelimited(dev_level, dev, fmt, ...)                 \
                                                                           ^
   drivers/spmi/spmi-pmic-arb.c:483:1: note: Returning without writing to 
'buf->type'
   }
   ^
   drivers/spmi/spmi-pmic-arb.c:607:2: note: Returning from 'qpnpint_spmi_read'
           qpnpint_spmi_read(d, QPNPINT_REG_SET_TYPE, &type, sizeof(type));
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spmi/spmi-pmic-arb.c:609:6: note: Assuming the condition is false
           if (flow_type & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spmi/spmi-pmic-arb.c:609:2: note: Taking false branch
           if (flow_type & (IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING)) {
           ^
   drivers/spmi/spmi-pmic-arb.c:618:8: note: Assuming the condition is false
                   if ((flow_type & (IRQF_TRIGGER_HIGH)) &&
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spmi/spmi-pmic-arb.c:618:41: note: Left side of '&&' is false
                   if ((flow_type & (IRQF_TRIGGER_HIGH)) &&
                                                         ^
   drivers/spmi/spmi-pmic-arb.c:622:13: note: The left expression of the 
compound assignment is an uninitialized value. The computed value will also be 
garbage
                   type.type &= ~BIT(irq); /* level trig */
                   ~~~~~~~~~ ^
   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.
   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.
   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.
   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.
   9 warnings generated.
   Suppressed 9 warnings (9 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.
   9 warnings generated.
   Suppressed 9 warnings (9 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.
   10 warnings generated.
>> drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c:16:8: warning: Excessive padding 
>> in 'struct a6xx_gpu_state' (32 padding bytes, where 0 is optimal). 
   Optimal fields order: 
   gmu_registers, 
   registers, 
   shaders, 
   clusters, 
   dbgahb_clusters, 
   indexed_regs, 
   debugbus, 
   vbif_debugbus, 
   cx_debugbus, 
   objs, 
   base, 
   nr_gmu_registers, 
   nr_registers, 
   nr_shaders, 
   nr_clusters, 
   nr_dbgahb_clusters, 
   nr_indexed_regs, 
   nr_debugbus, 
   nr_cx_debugbus, 
   consider reordering the fields or adding explicit padding members 
[clang-analyzer-optin.performance.Padding]
   struct a6xx_gpu_state {
   ~~~~~~~^~~~~~~~~~~~~~~~
   drivers/gpu/drm/msm/adreno/a6xx_gpu_state.c:16:8: note: Excessive padding in 
'struct a6xx_gpu_state' (32 padding bytes, where 0 is optimal). Optimal fields 
order: gmu_registers, registers, shaders, clusters, dbgahb_clusters, 
indexed_regs, debugbus, vbif_debugbus, cx_debugbus, objs, base, 
nr_gmu_registers, nr_registers, nr_shaders, nr_clusters, nr_dbgahb_clusters, 
nr_indexed_regs, nr_debugbus, nr_cx_debugbus, consider reordering the fields or 
adding explicit padding members
   struct a6xx_gpu_state {
   ~~~~~~~^~~~~~~~~~~~~~~~
   Suppressed 9 warnings (9 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.
   10 warnings generated.
   drivers/spi/spi-imx.c:446:17: warning: The result of the left shift is 
undefined due to shifting by '32', which is greater or equal to the width of 
type 'unsigned int' [clang-analyzer-core.UndefinedBinaryOperatorResult]
           if (fin > fspi << post)
                          ^
   drivers/spi/spi-imx.c:612:13: note: Loop condition is false.  Exiting loop
           u32 ctrl = readl(spi_imx->base + MX51_ECSPI_CTRL);
                      ^
   arch/riscv/include/asm/mmio.h:140:30: note: expanded from macro 'readl'
   #define readl(c)        ({ u32 __v; __io_br(); __v = readl_cpu(c); 
__io_ar(__v); __v; })
                                       ^
   arch/riscv/include/asm/mmio.h:133:19: note: expanded from macro '__io_br'
   #define __io_br()       do {} while (0)
                           ^
   drivers/spi/spi-imx.c:617:6: note: Assuming field 'slave_mode' is false
           if (spi_imx->slave_mode && is_imx53_ecspi(spi_imx))
               ^~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-imx.c:617:26: note: Left side of '&&' is false
           if (spi_imx->slave_mode && is_imx53_ecspi(spi_imx))
                                   ^
   drivers/spi/spi-imx.c:627:10: note: Calling 'mx51_ecspi_clkdiv'
           ctrl |= mx51_ecspi_clkdiv(spi_imx, spi_imx->spi_bus_clk, &clk);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-imx.c:442:15: note: Assuming 'fspi' is <= 'fin'
           if (unlikely(fspi > fin))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/spi/spi-imx.c:442:2: note: Taking false branch
           if (unlikely(fspi > fin))
           ^
   drivers/spi/spi-imx.c:445:2: note: The value 32 is assigned to 'post'
           post = fls(fin) - fls(fspi);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-imx.c:446:17: note: The result of the left shift is 
undefined due to shifting by '32', which is greater or equal to the width of 
type 'unsigned int'
           if (fin > fspi << post)
                          ^  ~~~~
   drivers/spi/spi-imx.c:458:8: warning: Division by zero 
[clang-analyzer-core.DivideZero]
           pre = DIV_ROUND_UP(fin, fspi << post) - 1;
                 ^
   include/linux/math.h:36:22: note: expanded from macro 'DIV_ROUND_UP'
   #define DIV_ROUND_UP __KERNEL_DIV_ROUND_UP
                        ^
   include/uapi/linux/const.h:34:54: note: expanded from macro 
'__KERNEL_DIV_ROUND_UP'
   #define __KERNEL_DIV_ROUND_UP(n, d) (((n) + (d) - 1) / (d))
                                                        ^
   drivers/spi/spi-imx.c:612:13: note: Loop condition is false.  Exiting loop
           u32 ctrl = readl(spi_imx->base + MX51_ECSPI_CTRL);
                      ^
   arch/riscv/include/asm/mmio.h:140:30: note: expanded from macro 'readl'
   #define readl(c)        ({ u32 __v; __io_br(); __v = readl_cpu(c); 
__io_ar(__v); __v; })
                                       ^
   arch/riscv/include/asm/mmio.h:133:19: note: expanded from macro '__io_br'
   #define __io_br()       do {} while (0)
                           ^
   drivers/spi/spi-imx.c:617:6: note: Assuming field 'slave_mode' is false
           if (spi_imx->slave_mode && is_imx53_ecspi(spi_imx))
               ^~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-imx.c:617:26: note: Left side of '&&' is false
           if (spi_imx->slave_mode && is_imx53_ecspi(spi_imx))
                                   ^
   drivers/spi/spi-imx.c:627:10: note: Calling 'mx51_ecspi_clkdiv'
           ctrl |= mx51_ecspi_clkdiv(spi_imx, spi_imx->spi_bus_clk, &clk);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/spi/spi-imx.c:442:15: note: Assuming 'fspi' is <= 'fin'
           if (unlikely(fspi > fin))
                        ^
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
--
   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.
   6 warnings generated.
   drivers/clk/ralink/clk-mt7621.c:50:8: warning: Excessive padding in 'struct 
mt7621_gate' (11 padding bytes, where 3 is optimal). 
   Optimal fields order: 
   name, 
   parent_name, 
   priv, 
   hw, 
   bit_idx, 
   idx, 
   consider reordering the fields or adding explicit padding members 
[clang-analyzer-optin.performance.Padding]
   struct mt7621_gate {
   ~~~~~~~^~~~~~~~~~~~~
   drivers/clk/ralink/clk-mt7621.c:50:8: note: Excessive padding in 'struct 
mt7621_gate' (11 padding bytes, where 3 is optimal). Optimal fields order: 
name, parent_name, priv, hw, bit_idx, idx, consider reordering the fields or 
adding explicit padding members
   struct mt7621_gate {
   ~~~~~~~^~~~~~~~~~~~~
   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.
   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.
   8 warnings generated.
   Suppressed 8 warnings (8 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.
   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.
   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.
   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.
   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.
   8 warnings generated.
   drivers/phy/cadence/phy-cadence-torrent.c:1320:25: warning: The result of 
the left shift is undefined because the left operand is negative 
[clang-analyzer-core.UndefinedBinaryOperatorResult]
           value |= ((~lane_mask) << PMA_TX_ELEC_IDLE_SHIFT) &
                                  ^
   drivers/phy/cadence/phy-cadence-torrent.c:1444:6: note: 'ret' is 0
           if (ret) {
               ^~~
   drivers/phy/cadence/phy-cadence-torrent.c:1444:2: note: Taking false branch
           if (ret) {
           ^
   drivers/phy/cadence/phy-cadence-torrent.c:1449:6: note: Assuming field 
'set_lanes' is not equal to 0
           if (opts->dp.set_lanes) {
               ^~~~~~~~~~~~~~~~~~
   drivers/phy/cadence/phy-cadence-torrent.c:1449:2: note: Taking true branch
           if (opts->dp.set_lanes) {
           ^
   drivers/phy/cadence/phy-cadence-torrent.c:1450:9: note: Calling 
'cdns_torrent_dp_set_lanes'
                   ret = cdns_torrent_dp_set_lanes(cdns_phy, &opts->dp);
                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/phy/cadence/phy-cadence-torrent.c:1320:25: note: The result of the 
left shift is undefined because the left operand is negative
           value |= ((~lane_mask) << PMA_TX_ELEC_IDLE_SHIFT) &
                     ~~~~~~~~~~~~ ^
   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.
   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.
   8 warnings generated.
   drivers/phy/cadence/phy-cadence-salvo.c:227:2: warning: Value stored to 
'value' is never read [clang-analyzer-deadcode.DeadStores]
           value |= RXDET_IN_P3_32KHZ;
           ^
   drivers/phy/cadence/phy-cadence-salvo.c:227:2: note: Value stored to 'value' 
is never read
   Suppressed 7 warnings (6 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.
   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.
   8 warnings generated.
   Suppressed 8 warnings (8 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.
   11 warnings generated.
>> drivers/gpu/drm/msm/msm_gem.c:461:9: warning: Assigned value is garbage or 
>> undefined [clang-analyzer-core.uninitialized.Assign]
                   *iova = local;
                         ^
   drivers/gpu/drm/msm/msm_gem.c:486:9: note: Calling 
'get_and_pin_iova_range_locked'
           return get_and_pin_iova_range_locked(obj, aspace, iova, 0, U64_MAX);
                  ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/msm/msm_gem.c:449:2: note: 'local' declared without an 
initial value
           u64 local;
           ^~~~~~~~~
   drivers/gpu/drm/msm/msm_gem.c:452:14: note: Assuming the condition is false
           GEM_WARN_ON(!msm_gem_is_locked(obj));
                       ^
   drivers/gpu/drm/msm/msm_gem.h:18:40: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                                          ^
   include/linux/ratelimit.h:58:15: note: expanded from macro 'WARN_RATELIMIT'
           int rtn = !!(condition);                                \
                        ^~~~~~~~~
   drivers/gpu/drm/msm/msm_gem.c:452:2: note: 'rtn' is 0
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/ratelimit.h:60:15: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
                        ^~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/gpu/drm/msm/msm_gem.c:452:2: note: Left side of '&&' is false
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^
   include/linux/ratelimit.h:60:19: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
                            ^
   drivers/gpu/drm/msm/msm_gem.c:452:2: note: Taking false branch
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^
   include/linux/ratelimit.h:60:2: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
           ^
   drivers/gpu/drm/msm/msm_gem.c:454:8: note: Calling 'get_iova_locked'
           ret = get_iova_locked(obj, aspace, &local,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/gpu/drm/msm/msm_gem.c:385:14: note: Assuming the condition is false
           GEM_WARN_ON(!msm_gem_is_locked(obj));
                       ^
   drivers/gpu/drm/msm/msm_gem.h:18:40: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                                          ^
   include/linux/ratelimit.h:58:15: note: expanded from macro 'WARN_RATELIMIT'
           int rtn = !!(condition);                                \
                        ^~~~~~~~~
   drivers/gpu/drm/msm/msm_gem.c:385:2: note: 'rtn' is 0
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/ratelimit.h:60:15: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
                        ^~~
   include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
   # define unlikely(x)    __builtin_expect(!!(x), 0)
                                               ^
   drivers/gpu/drm/msm/msm_gem.c:385:2: note: Left side of '&&' is false
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^
   include/linux/ratelimit.h:60:19: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
                            ^
   drivers/gpu/drm/msm/msm_gem.c:385:2: note: Taking false branch
           GEM_WARN_ON(!msm_gem_is_locked(obj));
           ^
   drivers/gpu/drm/msm/msm_gem.h:18:25: note: expanded from macro 'GEM_WARN_ON'
   #define GEM_WARN_ON(x)  WARN_RATELIMIT(x, "%s", __stringify(x))
                           ^
   include/linux/ratelimit.h:60:2: note: expanded from macro 'WARN_RATELIMIT'
           if (unlikely(rtn && __ratelimit(&_rs)))                 \
           ^
   drivers/gpu/drm/msm/msm_gem.c:389:6: note: Assuming 'vma' is null, which 
participates in a condition later
           if (!vma) {
               ^~~~
   drivers/gpu/drm/msm/msm_gem.c:389:2: note: Taking true branch
           if (!vma) {
           ^
   drivers/gpu/drm/msm/msm_gem.c:391:7: note: Calling 'IS_ERR'
                   if (IS_ERR(vma))
                       ^~~~~~~~~~~
   include/linux/err.h:36:9: note: Assuming the condition is true
           return IS_ERR_VALUE((unsigned long)ptr);

vim +461 drivers/gpu/drm/msm/msm_gem.c

c8afe684c95cd1 Rob Clark      2013-06-26  444  
e4b87d227f9e82 Rob Clark      2020-10-23  445  static int 
get_and_pin_iova_range_locked(struct drm_gem_object *obj,
d3b8877e57247c Jonathan Marek 2020-04-23  446           struct 
msm_gem_address_space *aspace, uint64_t *iova,
d3b8877e57247c Jonathan Marek 2020-04-23  447           u64 range_start, u64 
range_end)
c0ee9794693c1f Jordan Crouse  2018-11-07  448  {
c0ee9794693c1f Jordan Crouse  2018-11-07  449   u64 local;
c0ee9794693c1f Jordan Crouse  2018-11-07  450   int ret;
c0ee9794693c1f Jordan Crouse  2018-11-07  451  
90643a24a7bfbe Rob Clark      2021-04-05  452   
GEM_WARN_ON(!msm_gem_is_locked(obj));
c0ee9794693c1f Jordan Crouse  2018-11-07  453  
8117e5e5bc1a37 Rob Clark      2020-10-23  454   ret = get_iova_locked(obj, 
aspace, &local,
d3b8877e57247c Jonathan Marek 2020-04-23  455           range_start, range_end);
c0ee9794693c1f Jordan Crouse  2018-11-07  456  
c0ee9794693c1f Jordan Crouse  2018-11-07  457   if (!ret)
c0ee9794693c1f Jordan Crouse  2018-11-07  458           ret = 
msm_gem_pin_iova(obj, aspace);
c0ee9794693c1f Jordan Crouse  2018-11-07  459  
c0ee9794693c1f Jordan Crouse  2018-11-07  460   if (!ret)
c0ee9794693c1f Jordan Crouse  2018-11-07 @461           *iova = local;
4b85f7f5cf776b Rob Clark      2017-06-13  462  
c8afe684c95cd1 Rob Clark      2013-06-26  463   return ret;
c8afe684c95cd1 Rob Clark      2013-06-26  464  }
c8afe684c95cd1 Rob Clark      2013-06-26  465  

:::::: The code at line 461 was first introduced by commit
:::::: c0ee9794693c1ff5bf540fc642fac954e39234a0 drm/msm: Split msm_gem_get_iova 
into two steps

:::::: TO: Jordan Crouse <[email protected]>
:::::: CC: Rob Clark <[email protected]>

---
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]

Reply via email to