* drivers/gpu/host1x/intr.c:29:2: warning: Attempt to free released memory [clang-analyzer-unix.Malloc]
@ 2022-04-18 11:55 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-04-18 11:55 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 26409 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Thierry Reding <treding@nvidia.com>
CC: Dave Airlie <airlied@redhat.com>
Hi Dave,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: b2d229d4ddb17db541098b83524d901257e93845
commit: 12fc11bce6f29a73eb3d61ab4e76a9ece3da1f1d Merge tag 'drm/tegra/for-5.13-rc1' of ssh://git.freedesktop.org/git/tegra/linux into drm-next
date: 12 months ago
:::::: branch date: 15 hours ago
:::::: commit date: 12 months ago
config: arm-randconfig-c002-20220418 (https://download.01.org/0day-ci/archive/20220418/202204181914.BwtVKdyD-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project ef94609d6ebe981767788e6877b0b3b731d425af)
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=12fc11bce6f29a73eb3d61ab4e76a9ece3da1f1d
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 12fc11bce6f29a73eb3d61ab4e76a9ece3da1f1d
# 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 <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^
include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:298:2: note: expanded from macro '__compiletime_assert'
do { \
^
kernel/locking/rtmutex.c:299:30: note: Passing null pointer value via 1st parameter 'left'
return rt_mutex_waiter_less(__node_2_pi_waiter(a), __node_2_pi_waiter(b));
^
kernel/locking/rtmutex.c:295:2: note: expanded from macro '__node_2_pi_waiter'
rb_entry((node), struct rt_mutex_waiter, pi_tree_entry)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/rbtree.h:38:37: note: expanded from macro 'rb_entry'
#define rb_entry(ptr, type, member) container_of(ptr, type, member)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kernel.h:707:41: note: expanded from macro 'container_of'
#define container_of(ptr, type, member) ({ \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:299:9: note: Calling 'rt_mutex_waiter_less'
return rt_mutex_waiter_less(__node_2_pi_waiter(a), __node_2_pi_waiter(b));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:236:6: note: Access to field 'prio' results in a dereference of a null pointer (loaded from variable 'left')
if (left->prio < right->prio)
^~~~
kernel/locking/rtmutex.c:287:6: warning: Access to field '__rb_parent_color' results in a dereference of a null pointer [clang-analyzer-core.NullDereference]
if (RB_EMPTY_NODE(&waiter->tree_entry))
^
include/linux/rbtree.h:44:3: note: expanded from macro 'RB_EMPTY_NODE'
((node)->__rb_parent_color == (unsigned long)(node))
^
kernel/locking/rtmutex.c:1894:6: note: Assuming the condition is true
if (rt_mutex_owner(lock) != current) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:1894:2: note: Taking true branch
if (rt_mutex_owner(lock) != current) {
^
kernel/locking/rtmutex.c:1895:23: note: Passing value via 2nd parameter 'waiter'
remove_waiter(lock, waiter);
^~~~~~
kernel/locking/rtmutex.c:1895:3: note: Calling 'remove_waiter'
remove_waiter(lock, waiter);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:1050:24: note: Assuming pointer value is null
bool is_top_waiter = (waiter == rt_mutex_top_waiter(lock));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:1054:2: note: Assuming 'debug_locks' is 0
lockdep_assert_held(&lock->wait_lock);
^
include/linux/lockdep.h:305:11: note: expanded from macro 'lockdep_assert_held'
WARN_ON(debug_locks && !lockdep_is_held(l)); \
^~~~~~~~~~~
include/asm-generic/bug.h:119:25: note: expanded from macro 'WARN_ON'
int __ret_warn_on = !!(condition); \
^~~~~~~~~
kernel/locking/rtmutex.c:1054:2: note: Left side of '&&' is false
lockdep_assert_held(&lock->wait_lock);
^
include/linux/lockdep.h:305:23: note: expanded from macro 'lockdep_assert_held'
WARN_ON(debug_locks && !lockdep_is_held(l)); \
^
kernel/locking/rtmutex.c:1054:2: note: Taking false branch
lockdep_assert_held(&lock->wait_lock);
^
include/linux/lockdep.h:305:3: note: expanded from macro 'lockdep_assert_held'
WARN_ON(debug_locks && !lockdep_is_held(l)); \
^
include/asm-generic/bug.h:120:2: note: expanded from macro 'WARN_ON'
if (unlikely(__ret_warn_on)) \
^
kernel/locking/rtmutex.c:1054:2: note: Loop condition is false. Exiting loop
lockdep_assert_held(&lock->wait_lock);
^
include/linux/lockdep.h:304:32: note: expanded from macro 'lockdep_assert_held'
#define lockdep_assert_held(l) do { \
^
kernel/locking/rtmutex.c:1057:25: note: Passing null pointer value via 2nd parameter 'waiter'
rt_mutex_dequeue(lock, waiter);
^~~~~~
kernel/locking/rtmutex.c:1057:2: note: Calling 'rt_mutex_dequeue'
rt_mutex_dequeue(lock, waiter);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:287:6: note: Access to field '__rb_parent_color' results in a dereference of a null pointer
if (RB_EMPTY_NODE(&waiter->tree_entry))
^
include/linux/rbtree.h:44:3: note: expanded from macro 'RB_EMPTY_NODE'
((node)->__rb_parent_color == (unsigned long)(node))
^~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 3 warnings (2 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.
10 warnings generated.
Suppressed 10 warnings (9 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.
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.
11 warnings generated.
>> drivers/gpu/host1x/intr.c:29:2: warning: Attempt to free released memory [clang-analyzer-unix.Malloc]
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
drivers/gpu/host1x/intr.c:257:6: note: Assuming the condition is true
if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) ==
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:257:2: note: Taking true branch
if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) ==
^
drivers/gpu/host1x/intr.c:260:3: note: Calling 'kref_put'
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:6: note: Assuming the condition is true
if (refcount_dec_and_test(&kref->refcount)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:2: note: Taking true branch
if (refcount_dec_and_test(&kref->refcount)) {
^
include/linux/kref.h:65:3: note: Calling 'waiter_release'
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:709:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/gpu/host1x/intr.c:29:8: note: Taking false branch
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:300:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/gpu/host1x/intr.c:29:8: note: Loop condition is false. Exiting loop
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:298:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/gpu/host1x/intr.c:29:2: note: Memory is released
kfree(container_of(kref, struct host1x_waitlist, refcount));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:65:3: note: Returning; memory was released
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:260:3: note: Returning; memory was released
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:264:6: note: Assuming 'flush' is false
if (flush) {
^~~~~
drivers/gpu/host1x/intr.c:264:2: note: Taking false branch
if (flush) {
^
drivers/gpu/host1x/intr.c:270:2: note: Calling 'kref_put'
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:6: note: Assuming the condition is true
if (refcount_dec_and_test(&kref->refcount)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:2: note: Taking true branch
if (refcount_dec_and_test(&kref->refcount)) {
^
include/linux/kref.h:65:3: note: Calling 'waiter_release'
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:709:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/gpu/host1x/intr.c:29:8: note: Taking false branch
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
--
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.
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.
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.
9 warnings generated.
Suppressed 9 warnings (8 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.
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.
9 warnings generated.
drivers/crypto/keembay/ocs-aes.c:1154:3: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
iowrite8(enc_a[i],
^
include/asm-generic/io.h:743:18: note: expanded from macro 'iowrite8'
#define iowrite8 iowrite8
^
drivers/crypto/keembay/ocs-aes.c:1327:6: note: 'rc' is 0
if (rc)
^~
drivers/crypto/keembay/ocs-aes.c:1327:2: note: Taking false branch
if (rc)
^
drivers/crypto/keembay/ocs-aes.c:1369:6: note: Assuming 'rc' is 0
if (rc)
^~
drivers/crypto/keembay/ocs-aes.c:1369:2: note: Taking false branch
if (rc)
^
drivers/crypto/keembay/ocs-aes.c:1379:2: note: Calling 'ocs_aes_ccm_do_adata'
ocs_aes_ccm_do_adata(aes_dev, adata_dma_list, adata_size);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/crypto/keembay/ocs-aes.c:1164:6: note: Assuming 'adata_size' is not equal to 0
if (!adata_size) {
^~~~~~~~~~~
drivers/crypto/keembay/ocs-aes.c:1164:2: note: Taking false branch
if (!adata_size) {
^
drivers/crypto/keembay/ocs-aes.c:1176:2: note: Calling 'ocs_aes_ccm_write_adata_len'
ocs_aes_ccm_write_adata_len(aes_dev, adata_size);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/crypto/keembay/ocs-aes.c:1141:6: note: Assuming 'adata_len' is < 65280
if (adata_len < 65280) {
^~~~~~~~~~~~~~~~~
drivers/crypto/keembay/ocs-aes.c:1141:2: note: Taking true branch
if (adata_len < 65280) {
^
drivers/crypto/keembay/ocs-aes.c:1153:2: note: Loop condition is true. Entering loop body
for (i = 0; i < len; i++)
^
drivers/crypto/keembay/ocs-aes.c:1153:23: note: The value 1 is assigned to 'i'
for (i = 0; i < len; i++)
^~~
drivers/crypto/keembay/ocs-aes.c:1153:2: note: Loop condition is true. Entering loop body
for (i = 0; i < len; i++)
^
drivers/crypto/keembay/ocs-aes.c:1154:3: note: 1st function call argument is an uninitialized value
iowrite8(enc_a[i],
^ ~~~~~~~~
include/asm-generic/io.h:743:18: note: expanded from macro 'iowrite8'
#define iowrite8 iowrite8
^
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.
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.
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.
17 warnings generated.
Suppressed 17 warnings (17 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.
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.
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.
11 warnings generated.
>> drivers/gpu/host1x/intr.c:29:2: warning: Attempt to free released memory [clang-analyzer-unix.Malloc]
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
drivers/gpu/host1x/intr.c:257:6: note: Assuming the condition is true
if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) ==
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:257:2: note: Taking true branch
if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) ==
^
drivers/gpu/host1x/intr.c:260:3: note: Calling 'kref_put'
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:6: note: Assuming the condition is true
if (refcount_dec_and_test(&kref->refcount)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:2: note: Taking true branch
if (refcount_dec_and_test(&kref->refcount)) {
^
include/linux/kref.h:65:3: note: Calling 'waiter_release'
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:709:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/gpu/host1x/intr.c:29:8: note: Taking false branch
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:300:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/gpu/host1x/intr.c:29:8: note: Loop condition is false. Exiting loop
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:320:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:308:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:298:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/gpu/host1x/intr.c:29:2: note: Memory is released
kfree(container_of(kref, struct host1x_waitlist, refcount));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:65:3: note: Returning; memory was released
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:260:3: note: Returning; memory was released
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:264:6: note: Assuming 'flush' is false
if (flush) {
^~~~~
drivers/gpu/host1x/intr.c:264:2: note: Taking false branch
if (flush) {
^
drivers/gpu/host1x/intr.c:270:2: note: Calling 'kref_put'
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:6: note: Assuming the condition is true
if (refcount_dec_and_test(&kref->refcount)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:2: note: Taking true branch
if (refcount_dec_and_test(&kref->refcount)) {
^
include/linux/kref.h:65:3: note: Calling 'waiter_release'
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:709:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/gpu/host1x/intr.c:29:8: note: Taking false branch
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:709:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
vim +29 drivers/gpu/host1x/intr.c
7ede0b0bf3e259 Terje Bergstrom 2013-03-22 26
7ede0b0bf3e259 Terje Bergstrom 2013-03-22 27 static void waiter_release(struct kref *kref)
7ede0b0bf3e259 Terje Bergstrom 2013-03-22 28 {
7ede0b0bf3e259 Terje Bergstrom 2013-03-22 @29 kfree(container_of(kref, struct host1x_waitlist, refcount));
7ede0b0bf3e259 Terje Bergstrom 2013-03-22 30 }
7ede0b0bf3e259 Terje Bergstrom 2013-03-22 31
:::::: The code at line 29 was first introduced by commit
:::::: 7ede0b0bf3e2595d40d6195b6fe4c4dcef438830 gpu: host1x: Add syncpoint wait and interrupts
:::::: TO: Terje Bergstrom <tbergstrom@nvidia.com>
:::::: CC: Thierry Reding <thierry.reding@avionic-design.de>
--
0-DAY CI Kernel Test Service
https://01.org/lkp
^ permalink raw reply [flat|nested] 2+ messages in thread
* drivers/gpu/host1x/intr.c:29:2: warning: Attempt to free released memory [clang-analyzer-unix.Malloc]
@ 2021-11-19 1:56 kernel test robot
0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2021-11-19 1:56 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 316449 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Nick Desaulniers <ndesaulniers@google.com>
CC: Masahiro Yamada <masahiroy@kernel.org>
CC: Nathan Chancellor <nathan@kernel.org>
Hi Nick,
First bad commit (maybe != root cause):
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 8d0112ac6fd001f95aabb084ec2ccaa3637bc344
commit: f12b034afeb3a977bbb1c6584dedc0f3dc666f14 scripts/Makefile.clang: default to LLVM_IAS=1
date: 3 months ago
:::::: branch date: 5 hours ago
:::::: commit date: 3 months ago
config: arm-randconfig-c002-20211118 (attached as .config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project c46becf500df2a7fb4b4fce16178a036c344315a)
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=f12b034afeb3a977bbb1c6584dedc0f3dc666f14
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout f12b034afeb3a977bbb1c6584dedc0f3dc666f14
# save the attached .config 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 <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:235:6: note: Access to field 'prio' results in a dereference of a null pointer (loaded from variable 'left')
if (left->prio < right->prio)
^~~~
kernel/locking/rtmutex.c:285:6: warning: Access to field '__rb_parent_color' results in a dereference of a null pointer [clang-analyzer-core.NullDereference]
if (RB_EMPTY_NODE(&waiter->tree_entry))
^
include/linux/rbtree.h:44:3: note: expanded from macro 'RB_EMPTY_NODE'
((node)->__rb_parent_color == (unsigned long)(node))
^
kernel/locking/rtmutex.c:1764:6: note: Assuming the condition is true
if (rt_mutex_owner(lock) != current) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:1764:2: note: Taking true branch
if (rt_mutex_owner(lock) != current) {
^
kernel/locking/rtmutex.c:1765:23: note: Passing value via 2nd parameter 'waiter'
remove_waiter(lock, waiter);
^~~~~~
kernel/locking/rtmutex.c:1765:3: note: Calling 'remove_waiter'
remove_waiter(lock, waiter);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:1042:24: note: Assuming pointer value is null
bool is_top_waiter = (waiter == rt_mutex_top_waiter(lock));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:1046:2: note: 'debug_locks' is 0
lockdep_assert_held(&lock->wait_lock);
^
include/linux/lockdep.h:310:11: note: expanded from macro 'lockdep_assert_held'
WARN_ON(debug_locks && \
^~~~~~~~~~~
include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON'
int __ret_warn_on = !!(condition); \
^~~~~~~~~
kernel/locking/rtmutex.c:1046:2: note: Left side of '&&' is false
lockdep_assert_held(&lock->wait_lock);
^
include/linux/lockdep.h:310:23: note: expanded from macro 'lockdep_assert_held'
WARN_ON(debug_locks && \
^
kernel/locking/rtmutex.c:1046:2: note: Taking false branch
lockdep_assert_held(&lock->wait_lock);
^
include/linux/lockdep.h:310:3: note: expanded from macro 'lockdep_assert_held'
WARN_ON(debug_locks && \
^
include/asm-generic/bug.h:122:2: note: expanded from macro 'WARN_ON'
if (unlikely(__ret_warn_on)) \
^
kernel/locking/rtmutex.c:1046:2: note: Loop condition is false. Exiting loop
lockdep_assert_held(&lock->wait_lock);
^
include/linux/lockdep.h:309:32: note: expanded from macro 'lockdep_assert_held'
#define lockdep_assert_held(l) do { \
^
kernel/locking/rtmutex.c:1049:25: note: Passing null pointer value via 2nd parameter 'waiter'
rt_mutex_dequeue(lock, waiter);
^~~~~~
kernel/locking/rtmutex.c:1049:2: note: Calling 'rt_mutex_dequeue'
rt_mutex_dequeue(lock, waiter);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
kernel/locking/rtmutex.c:285:6: note: Access to field '__rb_parent_color' results in a dereference of a null pointer
if (RB_EMPTY_NODE(&waiter->tree_entry))
^
include/linux/rbtree.h:44:3: note: expanded from macro 'RB_EMPTY_NODE'
((node)->__rb_parent_color == (unsigned long)(node))
^~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 5 warnings (4 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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/host1x/intr.c:29:2: warning: Attempt to free released memory [clang-analyzer-unix.Malloc]
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
drivers/gpu/host1x/intr.c:257:6: note: Assuming the condition is true
if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) ==
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:257:2: note: Taking true branch
if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) ==
^
drivers/gpu/host1x/intr.c:260:3: note: Calling 'kref_put'
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:2: note: Taking true branch
if (refcount_dec_and_test(&kref->refcount)) {
^
include/linux/kref.h:65:3: note: Calling 'waiter_release'
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/gpu/host1x/intr.c:29:8: note: Taking false branch
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/gpu/host1x/intr.c:29:8: note: Loop condition is false. Exiting loop
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/gpu/host1x/intr.c:29:2: note: Memory is released
kfree(container_of(kref, struct host1x_waitlist, refcount));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:65:3: note: Returning; memory was released
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:260:3: note: Returning; memory was released
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:264:6: note: Assuming 'flush' is false
if (flush) {
^~~~~
drivers/gpu/host1x/intr.c:264:2: note: Taking false branch
if (flush) {
^
drivers/gpu/host1x/intr.c:270:2: note: Calling 'kref_put'
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:2: note: Taking true branch
if (refcount_dec_and_test(&kref->refcount)) {
^
include/linux/kref.h:65:3: note: Calling 'waiter_release'
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/gpu/host1x/intr.c:29:8: note: Taking false branch
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
--
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-stm32.c:444:7: note: Assuming 'div' is >= 'min_div'
if ((div < min_div) || (div > max_div))
^~~~~~~~~~~~~
drivers/spi/spi-stm32.c:444:6: note: Left side of '||' is false
if ((div < min_div) || (div > max_div))
^
drivers/spi/spi-stm32.c:444:26: note: Assuming 'div' is <= 'max_div'
if ((div < min_div) || (div > max_div))
^~~~~~~~~~~~~
drivers/spi/spi-stm32.c:444:2: note: Taking false branch
if ((div < min_div) || (div > max_div))
^
drivers/spi/spi-stm32.c:448:6: note: Assuming the condition is false
if (div & (div - 1))
^~~~~~~~~~~~~~~
drivers/spi/spi-stm32.c:448:2: note: Taking false branch
if (div & (div - 1))
^
drivers/spi/spi-stm32.c:451:3: note: The value 4294967295 is assigned to 'mbrdiv'
mbrdiv = fls(div) - 1;
^~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-stm32.c:453:38: note: The result of the left shift is undefined due to shifting by '4294967295', which is greater or equal to the width of type 'int'
spi->cur_speed = spi->clk_rate / (1 << mbrdiv);
^ ~~~~~~
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.
13 warnings generated.
drivers/misc/kgdbts.c:709:2: 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(get_buf, buf);
^~~~~~
drivers/misc/kgdbts.c:709:2: note: 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
strcat(get_buf, buf);
^~~~~~
drivers/misc/kgdbts.c:714:2: 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(get_buf, "#");
^~~~~~
drivers/misc/kgdbts.c:714:2: note: 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
strcat(get_buf, "#");
^~~~~~
drivers/misc/kgdbts.c:1075: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(config, opt);
^~~~~~
drivers/misc/kgdbts.c:1075: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(config, opt);
^~~~~~
drivers/misc/kgdbts.c:1146: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(config, kmessage);
^~~~~~
drivers/misc/kgdbts.c:1146: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(config, kmessage);
^~~~~~
drivers/misc/kgdbts.c:1155: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(config, kmessage);
^~~~~~
drivers/misc/kgdbts.c:1155: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(config, kmessage);
^~~~~~
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
lib/asn1_encoder.c:167:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
ret = 0;
^ ~
lib/asn1_encoder.c:167:2: note: Value stored to 'ret' is never read
ret = 0;
^ ~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
lib/oid_registry.c:149:3: warning: Value stored to 'num' is never read [clang-analyzer-deadcode.DeadStores]
num = 0;
^ ~
lib/oid_registry.c:149:3: note: Value stored to 'num' is never read
num = 0;
^ ~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (4 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
>> drivers/soc/ixp4xx/ixp4xx-npe.c:684:22: warning: Value stored to 'np' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct device_node *np = dev->of_node;
^~ ~~~~~~~~~~~~
drivers/soc/ixp4xx/ixp4xx-npe.c:684:22: note: Value stored to 'np' during its initialization is never read
struct device_node *np = dev->of_node;
^~ ~~~~~~~~~~~~
Suppressed 9 warnings (8 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
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.
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.
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.
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/regulator/qcom_spmi-regulator.c:401:8: warning: Excessive padding in 'struct spmi_regulator_data' (4 padding bytes, where 0 is optimal).
Optimal fields order:
name,
supply,
ocp,
base,
force_type,
consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
struct spmi_regulator_data {
~~~~~~~^~~~~~~~~~~~~~~~~~~~~
drivers/regulator/qcom_spmi-regulator.c:401:8: note: Excessive padding in 'struct spmi_regulator_data' (4 padding bytes, where 0 is optimal). Optimal fields order: name, supply, ocp, base, force_type, consider reordering the fields or adding explicit padding members
struct spmi_regulator_data {
~~~~~~~^~~~~~~~~~~~~~~~~~~~~
drivers/regulator/qcom_spmi-regulator.c:1159:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
ret = spmi_vreg_update_bits(vreg, SPMI_COMMON_REG_ENABLE,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/regulator/qcom_spmi-regulator.c:1159:2: note: Value stored to 'ret' is never read
ret = spmi_vreg_update_bits(vreg, SPMI_COMMON_REG_ENABLE,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
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.
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.
9 warnings generated.
Suppressed 9 warnings (8 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.
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.
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.
include/linux/log2.h:57:13: 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 long' [clang-analyzer-core.UndefinedBinaryOperatorResult]
return 1UL << fls_long(n - 1);
^
lib/rhashtable.c:1090:8: note: Calling 'rhashtable_init'
err = rhashtable_init(&hlt->ht, params);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
lib/rhashtable.c:1021:7: note: Assuming field 'key_len' is not equal to 0
if ((!params->key_len && !params->obj_hashfn) ||
^~~~~~~~~~~~~~~~
lib/rhashtable.c:1021:24: note: Left side of '&&' is false
if ((!params->key_len && !params->obj_hashfn) ||
^
lib/rhashtable.c:1022:7: note: Assuming field 'obj_hashfn' is null
--
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/irqflags.h:176:3: note: expanded from macro 'raw_local_irq_restore'
raw_check_bogus_irq_restore(); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/irqflags.h:156:16: note: expanded from macro 'raw_check_bogus_irq_restore'
if (unlikely(!arch_irqs_disabled())) \
^~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
drivers/input/joystick/cobra.c:72:2: note: Taking false branch
local_irq_restore(flags);
^
include/linux/irqflags.h:238:39: note: expanded from macro 'local_irq_restore'
#define local_irq_restore(flags) do { raw_local_irq_restore(flags); } while (0)
^
include/linux/irqflags.h:176:3: note: expanded from macro 'raw_local_irq_restore'
raw_check_bogus_irq_restore(); \
^
include/linux/irqflags.h:156:3: note: expanded from macro 'raw_check_bogus_irq_restore'
if (unlikely(!arch_irqs_disabled())) \
^
drivers/input/joystick/cobra.c:72:2: note: Loop condition is false. Exiting loop
local_irq_restore(flags);
^
include/linux/irqflags.h:238:39: note: expanded from macro 'local_irq_restore'
#define local_irq_restore(flags) do { raw_local_irq_restore(flags); } while (0)
^
include/linux/irqflags.h:176:3: note: expanded from macro 'raw_local_irq_restore'
raw_check_bogus_irq_restore(); \
^
include/linux/irqflags.h:155:2: note: expanded from macro 'raw_check_bogus_irq_restore'
do { \
^
drivers/input/joystick/cobra.c:72:2: note: Loop condition is false. Exiting loop
local_irq_restore(flags);
^
include/linux/irqflags.h:238:39: note: expanded from macro 'local_irq_restore'
#define local_irq_restore(flags) do { raw_local_irq_restore(flags); } while (0)
^
include/linux/irqflags.h:174:2: note: expanded from macro 'raw_local_irq_restore'
do { \
^
drivers/input/joystick/cobra.c:72:2: note: Loop condition is false. Exiting loop
local_irq_restore(flags);
^
include/linux/irqflags.h:238:34: note: expanded from macro 'local_irq_restore'
#define local_irq_restore(flags) do { raw_local_irq_restore(flags); } while (0)
^
drivers/input/joystick/cobra.c:76:2: note: Loop condition is true. Entering loop body
for (i = 0; i < 2; i++) {
^
drivers/input/joystick/cobra.c:78:3: note: Taking true branch
if (r[i] != COBRA_LENGTH) continue;
^
drivers/input/joystick/cobra.c:78:29: note: Execution continues on line 76
if (r[i] != COBRA_LENGTH) continue;
^
drivers/input/joystick/cobra.c:76:2: note: Loop condition is true. Entering loop body
for (i = 0; i < 2; i++) {
^
drivers/input/joystick/cobra.c:78:3: note: Taking true branch
if (r[i] != COBRA_LENGTH) continue;
^
drivers/input/joystick/cobra.c:78:29: note: Execution continues on line 76
if (r[i] != COBRA_LENGTH) continue;
^
drivers/input/joystick/cobra.c:76:2: note: Loop condition is false. Execution continues on line 91
for (i = 0; i < 2; i++) {
^
drivers/input/joystick/cobra.c:91:2: note: Returning without writing to '*data'
return ret;
^
drivers/input/joystick/cobra.c:159:18: note: Returning from 'cobra_read_packet'
cobra->exists = cobra_read_packet(gameport, data);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/input/joystick/cobra.c:161:7: note: The value 0 is assigned to 'i'
for (i = 0; i < 2; i++)
^~~~~
drivers/input/joystick/cobra.c:161:2: note: Loop condition is true. Entering loop body
for (i = 0; i < 2; i++)
^
drivers/input/joystick/cobra.c:162:28: note: The right operand of '&' is a garbage value
if ((cobra->exists >> i) & data[i] & 1) {
^ ~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
12 warnings generated.
>> arch/arm/mach-rpc/ecard.c:640:5: 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((char *)ec->card_desc, incd.d.string);
^~~~~~
arch/arm/mach-rpc/ecard.c:640:5: 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((char *)ec->card_desc, incd.d.string);
^~~~~~
Suppressed 11 warnings (8 in non-user code, 3 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.
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.
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.
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.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
6 warnings generated.
arch/arm/include/asm/atomic.h:224:1: warning: Use of memory after it is freed [clang-analyzer-unix.Malloc]
ATOMIC_OPS(sub, -=, sub)
^
arch/arm/include/asm/atomic.h:221:2: note: expanded from macro 'ATOMIC_OPS'
ATOMIC_FETCH_OP(op, c_op, asm_op)
^
arch/arm/include/asm/atomic.h:193:8: note: expanded from macro 'ATOMIC_FETCH_OP'
val = v->counter; \
^
drivers/usb/class/usbtmc.c:2479:2: note: Loop condition is false. Execution continues on line 2488
list_for_each(elem, &data->file_list) {
^
include/linux/list.h:571:2: note: expanded from macro 'list_for_each'
for (pos = (head)->next; pos != (head); pos = pos->next)
^
drivers/usb/class/usbtmc.c:2489:2: note: Calling 'usbtmc_free_int'
usbtmc_free_int(data);
^~~~~~~~~~~~~~~~~~~~~
drivers/usb/class/usbtmc.c:2340:6: note: Assuming field 'iin_ep_present' is not equal to 0
if (!data->iin_ep_present || !data->iin_urb)
^~~~~~~~~~~~~~~~~~~~~
drivers/usb/class/usbtmc.c:2340:6: note: Left side of '||' is false
drivers/usb/class/usbtmc.c:2340:31: note: Assuming field 'iin_urb' is non-null
if (!data->iin_ep_present || !data->iin_urb)
^~~~~~~~~~~~~~
drivers/usb/class/usbtmc.c:2340:2: note: Taking false branch
if (!data->iin_ep_present || !data->iin_urb)
^
drivers/usb/class/usbtmc.c:2347:2: note: Calling 'kref_put'
kref_put(&data->kref, usbtmc_delete);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:2: note: Taking true branch
if (refcount_dec_and_test(&kref->refcount)) {
^
include/linux/kref.h:65:3: note: Calling 'usbtmc_delete'
release(kref);
^~~~~~~~~~~~~
drivers/usb/class/usbtmc.c:157:36: note: Left side of '&&' is false
struct usbtmc_device_data *data = to_usbtmc_data(kref);
^
drivers/usb/class/usbtmc.c:114:27: note: expanded from macro 'to_usbtmc_data'
#define to_usbtmc_data(d) container_of(d, struct usbtmc_device_data, kref)
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/usb/class/usbtmc.c:157:36: note: Taking false branch
struct usbtmc_device_data *data = to_usbtmc_data(kref);
^
drivers/usb/class/usbtmc.c:114:27: note: expanded from macro 'to_usbtmc_data'
#define to_usbtmc_data(d) container_of(d, struct usbtmc_device_data, kref)
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
--
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/usb/gadget/configfs.c:890:2: note: 'gi' initialized to a null pointer value
struct gadget_info *gi = container_of(to_config_group(os_desc_ci),
^~~~~~~~~~~~~~~~~~~~~~
drivers/usb/gadget/configfs.c:892:2: note: 'cdev' initialized to a null pointer value
struct usb_composite_dev *cdev = &gi->cdev;
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/gadget/configfs.c:894:3: note: Left side of '&&' is false
container_of(to_config_group(usb_cfg_ci),
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/usb/gadget/configfs.c:894:3: note: Taking false branch
container_of(to_config_group(usb_cfg_ci),
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/usb/gadget/configfs.c:894:3: note: Loop condition is false. Exiting loop
container_of(to_config_group(usb_cfg_ci),
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/usb/gadget/configfs.c:900:2: note: Access to field 'next' results in a dereference of a null pointer
list_for_each_entry(c, &cdev->configs, list) {
^
include/linux/list.h:628:13: note: expanded from macro 'list_for_each_entry'
for (pos = list_first_entry(head, typeof(*pos), member); \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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:494:25: note: expanded from macro 'container_of'
void *__mptr = (void *)(ptr); \
^~~~~
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.
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.
arch/arm/kernel/atags_compat.c:200: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(tag->u.cmdline.cmdline, params->commandline);
^~~~~~
arch/arm/kernel/atags_compat.c:200: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(tag->u.cmdline.cmdline, params->commandline);
^~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
6 warnings generated.
>> drivers/gpio/gpiolib.c:550:8: warning: Null pointer passed as 1st argument to string comparison function [clang-analyzer-unix.cstring.NullArg]
if (!strcmp(gc->label, hog->chip_label))
^
drivers/gpio/gpiolib.c:574:33: note: Assuming field 'parent' is null
struct fwnode_handle *fwnode = gc->parent ? dev_fwnode(gc->parent) : NULL;
^~~~~~~~~~
drivers/gpio/gpiolib.c:574:33: note: '?' condition is false
drivers/gpio/gpiolib.c:586:6: note: Assuming 'gdev' is non-null
if (!gdev)
^~~~~
drivers/gpio/gpiolib.c:586:2: note: Taking false branch
if (!gdev)
^
drivers/gpio/gpiolib.c:593:2: note: Calling 'of_gpio_dev_init'
of_gpio_dev_init(gc, gdev);
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib-of.h:40:1: note: Returning without writing to 'gc->label'
}
^
drivers/gpio/gpiolib.c:593:2: note: Returning from 'of_gpio_dev_init'
of_gpio_dev_init(gc, gdev);
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib.c:594:2: note: Calling 'acpi_gpio_dev_init'
acpi_gpio_dev_init(gc, gdev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib-acpi.h:63:89: note: Returning without writing to 'gc->label'
static inline void acpi_gpio_dev_init(struct gpio_chip *gc, struct gpio_device *gdev) { }
^
drivers/gpio/gpiolib.c:594:2: note: Returning from 'acpi_gpio_dev_init'
acpi_gpio_dev_init(gc, gdev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib.c:600:21: note: Value assigned to field 'label'
gdev->dev.fwnode = dev_fwnode(&gdev->dev) ?: fwnode;
^~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib.c:600:21: note: '?' condition is true
drivers/gpio/gpiolib.c:603:6: note: Assuming field 'id' is >= 0
if (gdev->id < 0) {
^~~~~~~~~~~~
drivers/gpio/gpiolib.c:603:2: note: Taking false branch
if (gdev->id < 0) {
^
drivers/gpio/gpiolib.c:609:6: note: Assuming 'ret' is 0
if (ret)
^~~
drivers/gpio/gpiolib.c:609:2: note: Taking false branch
if (ret)
^
drivers/gpio/gpiolib.c:613:6: note: Assuming field 'parent' is null
if (gc->parent && gc->parent->driver)
^~~~~~~~~~
drivers/gpio/gpiolib.c:613:17: note: Left side of '&&' is false
if (gc->parent && gc->parent->driver)
^
drivers/gpio/gpiolib.c:615:11: note: Assuming field 'owner' is null
else if (gc->owner)
^~~~~~~~~
drivers/gpio/gpiolib.c:615:7: note: Taking false branch
else if (gc->owner)
^
drivers/gpio/gpiolib.c:622:6: note: Assuming field 'descs' is non-null
if (!gdev->descs) {
^~~~~~~~~~~~
drivers/gpio/gpiolib.c:622:2: note: Taking false branch
if (!gdev->descs) {
^
drivers/gpio/gpiolib.c:627:6: note: Assuming field 'ngpio' is not equal to 0
if (gc->ngpio == 0) {
^~~~~~~~~~~~~~
drivers/gpio/gpiolib.c:627:2: note: Taking false branch
if (gc->ngpio == 0) {
^
drivers/gpio/gpiolib.c:633:6: note: Assuming field 'ngpio' is <= FASTPATH_NGPIO
if (gc->ngpio > FASTPATH_NGPIO)
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib.c:633:2: note: Taking false branch
if (gc->ngpio > FASTPATH_NGPIO)
^
drivers/gpio/gpiolib.c:637:30: note: Assuming pointer value is null
gdev->label = kstrdup_const(gc->label ?: "unknown", GFP_KERNEL);
^~~~~~~~~
drivers/gpio/gpiolib.c:637:30: note: '?' condition is false
drivers/gpio/gpiolib.c:638:6: note: Assuming field 'label' is non-null
if (!gdev->label) {
^~~~~~~~~~~~
drivers/gpio/gpiolib.c:638:2: note: Taking false branch
if (!gdev->label) {
^
drivers/gpio/gpiolib.c:646:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&gpio_lock, flags);
^
include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
raw_spin_lock_irqsave(spinlock_check(lock), flags); \
^
include/linux/spinlock.h:250:2: note: expanded from macro 'raw_spin_lock_irqsave'
do { \
^
drivers/gpio/gpiolib.c:646:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&gpio_lock, flags);
^
include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave'
#define spin_lock_irqsave(lock, flags) \
--
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:131:49: note: expanded from macro '__dynamic_func_call'
#define __dynamic_func_call(id, fmt, func, ...) do { \
^
drivers/spi/spi-bcm-qspi.c:727:2: note: Loop condition is false. Execution continues on line 749
for (slot = 0; slot < slots; slot++) {
^
drivers/spi/spi-bcm-qspi.c:749:2: note: The value of 'tp' is assigned to field 'trans_pos'
qspi->trans_pos = tp;
^~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-bcm-qspi.c:970:3: note: Returning from 'read_from_hw'
read_from_hw(qspi, slots);
^~~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-bcm-qspi.c:961:9: note: Assuming field 'byte' is < field 'len'
while (qspi->trans_pos.byte < trans->len) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-bcm-qspi.c:961:2: note: Loop condition is true. Entering loop body
while (qspi->trans_pos.byte < trans->len) {
^
drivers/spi/spi-bcm-qspi.c:964:11: note: Calling 'write_to_hw'
slots = write_to_hw(qspi, spi);
^~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-bcm-qspi.c:790:2: note: Null pointer value stored to 'tp.trans'
tp = qspi->trans_pos;
^~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-bcm-qspi.c:791:35: note: Passing null pointer value via 3rd parameter 'trans'
bcm_qspi_update_parms(qspi, spi, tp.trans);
^~~~~~~~
drivers/spi/spi-bcm-qspi.c:791:2: note: Calling 'bcm_qspi_update_parms'
bcm_qspi_update_parms(qspi, spi, tp.trans);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-bcm-qspi.c:618:16: note: Access to field 'speed_hz' results in a dereference of a null pointer (loaded from variable 'trans')
xp.speed_hz = trans->speed_hz;
^~~~~
Suppressed 9 warnings (8 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (4 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (4 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
9 warnings generated.
drivers/usb/serial/oti6858.c:410:2: warning: Value stored to 'divisor' is never read [clang-analyzer-deadcode.DeadStores]
divisor = priv->pending_setup.divisor;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/serial/oti6858.c:410:2: note: Value stored to 'divisor' is never read
divisor = priv->pending_setup.divisor;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
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.
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.
9 warnings generated.
drivers/gpu/host1x/cdma.c:558:15: warning: Value stored to 'space' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
unsigned int space = cdma->slots_free;
^~~~~ ~~~~~~~~~~~~~~~~
drivers/gpu/host1x/cdma.c:558:15: note: Value stored to 'space' during its initialization is never read
unsigned int space = cdma->slots_free;
^~~~~ ~~~~~~~~~~~~~~~~
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.
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/host1x/job.c:185:35: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
job->addr_phys[job->num_unpins] = phys_addr;
^
drivers/gpu/host1x/job.c:599:8: note: Calling 'pin_job'
err = pin_job(host, job);
^~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:119:14: note: Assuming 'i' is < field 'num_relocs'
for (i = 0; i < job->num_relocs; i++) {
^~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:119:2: note: Loop condition is true. Entering loop body
for (i = 0; i < job->num_relocs; i++) {
^
drivers/gpu/host1x/job.c:121:14: note: 'phys_addr' declared without an initial value
dma_addr_t phys_addr, *phys;
^~~~~~~~~
drivers/gpu/host1x/job.c:125:7: note: Assuming field 'bo' is non-null
if (!reloc->target.bo) {
^~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:125:3: note: Taking false branch
if (!reloc->target.bo) {
^
drivers/gpu/host1x/job.c:142:7: note: Assuming 'domain' is non-null
if (!domain || client->group)
^~~~~~~
drivers/gpu/host1x/job.c:142:7: note: Left side of '||' is false
drivers/gpu/host1x/job.c:142:18: note: Assuming field 'group' is null
if (!domain || client->group)
^~~~~~~~~~~~~
drivers/gpu/host1x/job.c:142:3: note: Taking false branch
if (!domain || client->group)
^
drivers/gpu/host1x/job.c:148:7: note: Calling 'IS_ERR'
if (IS_ERR(sgt)) {
^~~~~~~~~~~
include/linux/err.h:36:9: note: Assuming the condition is false
return IS_ERR_VALUE((unsigned long)ptr);
^
include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE'
#define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
return IS_ERR_VALUE((unsigned long)ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:148:7: note: Returning from 'IS_ERR'
if (IS_ERR(sgt)) {
^~~~~~~~~~~
drivers/gpu/host1x/job.c:148:3: note: Taking false branch
if (IS_ERR(sgt)) {
^
drivers/gpu/host1x/job.c:153:7: note: Assuming 'sgt' is null
if (sgt) {
^~~
drivers/gpu/host1x/job.c:153:3: note: Taking false branch
if (sgt) {
^
drivers/gpu/host1x/job.c:185:35: note: Assigned value is garbage or undefined
job->addr_phys[job->num_unpins] = phys_addr;
^ ~~~~~~~~~
drivers/gpu/host1x/job.c:265:35: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
job->addr_phys[job->num_unpins] = phys_addr;
^
drivers/gpu/host1x/job.c:599:8: note: Calling 'pin_job'
err = pin_job(host, job);
^~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:119:14: note: Assuming 'i' is >= field 'num_relocs'
for (i = 0; i < job->num_relocs; i++) {
^~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:119:2: note: Loop condition is false. Execution continues on line 195
for (i = 0; i < job->num_relocs; i++) {
^
drivers/gpu/host1x/job.c:195:2: note: Taking false branch
if (IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL))
^
drivers/gpu/host1x/job.c:198:14: note: Assuming 'i' is < field 'num_gathers'
for (i = 0; i < job->num_gathers; i++) {
^~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:198:2: note: Loop condition is true. Entering loop body
for (i = 0; i < job->num_gathers; i++) {
^
drivers/gpu/host1x/job.c:202:3: note: 'phys_addr' declared without an initial value
dma_addr_t phys_addr;
^~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:210:7: note: Assuming field 'bo' is non-null
if (!g->bo) {
^~~~~~
drivers/gpu/host1x/job.c:210:3: note: Taking false branch
if (!g->bo) {
^
drivers/gpu/host1x/job.c:220:7: note: Assuming the condition is false
if (!iommu_get_domain_for_dev(host->dev))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:220:3: note: Taking false branch
if (!iommu_get_domain_for_dev(host->dev))
^
drivers/gpu/host1x/job.c:226:7: note: Calling 'IS_ERR'
if (IS_ERR(sgt)) {
^~~~~~~~~~~
include/linux/err.h:36:9: note: Assuming the condition is false
--
fs/overlayfs/export.c:813:2: note: Taking false branch
if (err)
^
fs/overlayfs/export.c:817:12: note: Assuming the condition is false
dentry = (flags & OVL_FH_FLAG_PATH_UPPER) ?
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/overlayfs/export.c:817:11: note: '?' condition is false
dentry = (flags & OVL_FH_FLAG_PATH_UPPER) ?
^
fs/overlayfs/export.c:819:4: note: Calling 'ovl_lower_fh_to_d'
ovl_lower_fh_to_d(sb, fh);
^~~~~~~~~~~~~~~~~~~~~~~~~
fs/overlayfs/export.c:708:6: note: Assuming 'err' is 0
if (err)
^~~
fs/overlayfs/export.c:708:2: note: Taking false branch
if (err)
^
fs/overlayfs/export.c:711:6: note: Left side of '||' is false
if (!d_is_dir(origin.dentry) ||
^
fs/overlayfs/export.c:712:6: note: Assuming the condition is false
!(origin.dentry->d_flags & DCACHE_DISCONNECTED)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/overlayfs/export.c:711:2: note: Taking false branch
if (!d_is_dir(origin.dentry) ||
^
fs/overlayfs/export.c:726:6: note: Assuming field 'indexdir' is null
if (ofs->indexdir) {
^~~~~~~~~~~~~
fs/overlayfs/export.c:726:2: note: Taking false branch
if (ofs->indexdir) {
^
fs/overlayfs/export.c:736:6: note: 'index' is null
if (index && d_is_dir(index)) {
^~~~~
fs/overlayfs/export.c:736:12: note: Left side of '&&' is false
if (index && d_is_dir(index)) {
^
fs/overlayfs/export.c:749:2: note: Taking true branch
if (d_is_dir(origin.dentry)) {
^
fs/overlayfs/export.c:753:7: note: Assuming 'err' is 0
if (err)
^~~
fs/overlayfs/export.c:753:3: note: Taking false branch
if (err)
^
fs/overlayfs/export.c:756:6: note: 'index' is null
if (index) {
^~~~~
fs/overlayfs/export.c:756:2: note: Taking false branch
if (index) {
^
fs/overlayfs/export.c:763:11: note: Calling 'ovl_get_dentry'
dentry = ovl_get_dentry(sb, NULL, &origin, index);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/overlayfs/export.c:654:34: note: 'upper' is null
const struct ovl_layer *layer = upper ? &ofs->layers[0] : lowerpath->layer;
^~~~~
fs/overlayfs/export.c:654:34: note: '?' condition is false
fs/overlayfs/export.c:655:24: note: '?' condition is false
struct dentry *real = upper ?: (index ?: lowerpath->dentry);
^
fs/overlayfs/export.c:655:34: note: '?' condition is false
struct dentry *real = upper ?: (index ?: lowerpath->dentry);
^
fs/overlayfs/export.c:655:2: note: 'real' initialized to a null pointer value
struct dentry *real = upper ?: (index ?: lowerpath->dentry);
^~~~~~~~~~~~~~~~~~~
fs/overlayfs/export.c:661:16: note: Passing null pointer value via 1st parameter 'dentry'
if (!d_is_dir(real))
^~~~
fs/overlayfs/export.c:661:7: note: Calling 'd_is_dir'
if (!d_is_dir(real))
^~~~~~~~~~~~~~
include/linux/dcache.h:420:22: note: Passing null pointer value via 1st parameter 'dentry'
return d_can_lookup(dentry) || d_is_autodir(dentry);
^~~~~~
include/linux/dcache.h:420:9: note: Calling 'd_can_lookup'
return d_can_lookup(dentry) || d_is_autodir(dentry);
^~~~~~~~~~~~~~~~~~~~
include/linux/dcache.h:410:24: note: Passing null pointer value via 1st parameter 'dentry'
return __d_entry_type(dentry) == DCACHE_DIRECTORY_TYPE;
^~~~~~
include/linux/dcache.h:410:9: note: Calling '__d_entry_type'
return __d_entry_type(dentry) == DCACHE_DIRECTORY_TYPE;
^~~~~~~~~~~~~~~~~~~~~~
include/linux/dcache.h:395:9: note: Access to field 'd_flags' results in a dereference of a null pointer (loaded from variable 'dentry')
return dentry->d_flags & DCACHE_ENTRY_TYPE;
^~~~~~
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
17 warnings generated.
Suppressed 17 warnings (8 in non-user code, 9 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.
9 warnings generated.
>> drivers/media/rc/sunxi-cir.c:143:9: warning: Division by zero [clang-analyzer-core.DivideZero]
return DIV_ROUND_CLOSEST(USEC_PER_SEC * (ithr + 1),
^
include/linux/math.h:92:26: note: expanded from macro 'DIV_ROUND_CLOSEST'
(((__x) + ((__d) / 2)) / (__d)) : \
^
drivers/media/rc/sunxi-cir.c:246:9: note: Calling 'sunxi_ir_hw_init'
return sunxi_ir_hw_init(dev);
^~~~~~~~~~~~~~~~~~~~~
drivers/media/rc/sunxi-cir.c:179:6: note: 'ret' is 0
if (ret)
^~~
drivers/media/rc/sunxi-cir.c:179:2: note: Taking false branch
if (ret)
^
drivers/media/rc/sunxi-cir.c:183:6: note: 'ret' is 0
if (ret) {
^~~
drivers/media/rc/sunxi-cir.c:183:2: note: Taking false branch
if (ret) {
^
drivers/media/rc/sunxi-cir.c:189:6: note: 'ret' is 0
if (ret) {
^~~
drivers/media/rc/sunxi-cir.c:189:2: note: Taking false branch
if (ret) {
^
drivers/media/rc/sunxi-cir.c:195:2: note: Loop condition is false. Exiting loop
writel(REG_CTL_MD, ir->base + SUNXI_IR_CTL_REG);
^
arch/arm/include/asm/io.h:307:25: note: expanded from macro 'writel'
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
^
arch/arm/include/asm/io.h:169:20: note: expanded from macro '__iowmb'
#define __iowmb() do { } while (0)
^
drivers/media/rc/sunxi-cir.c:198:2: note: Calling 'sunxi_ir_set_timeout'
sunxi_ir_set_timeout(ir->rc, ir->rc->timeout);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/rc/sunxi-cir.c:157:26: note: Calling 'clk_get_rate'
unsigned int base_clk = clk_get_rate(ir->clk);
^~~~~~~~~~~~~~~~~~~~~
include/linux/clk.h:882:2: note: Returning zero
return 0;
^~~~~~~~
drivers/media/rc/sunxi-cir.c:157:26: note: Returning from 'clk_get_rate'
unsigned int base_clk = clk_get_rate(ir->clk);
^~~~~~~~~~~~~~~~~~~~~
drivers/media/rc/sunxi-cir.c:157:2: note: 'base_clk' initialized to 0
unsigned int base_clk = clk_get_rate(ir->clk);
^~~~~~~~~~~~~~~~~~~~~
drivers/media/rc/sunxi-cir.c:161:2: note: Taking false branch
dev_dbg(rc_dev->dev.parent, "setting idle threshold to %u\n", ithr);
^
include/linux/dev_printk.h:123:2: note: expanded from macro 'dev_dbg'
dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:166:2: note: expanded from macro 'dynamic_dev_dbg'
_dynamic_func_call(fmt,__dynamic_dev_dbg, \
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:133:2: note: expanded from macro '__dynamic_func_call'
if (DYNAMIC_DEBUG_BRANCH(id)) \
^
drivers/media/rc/sunxi-cir.c:161:2: note: Loop condition is false. Exiting loop
dev_dbg(rc_dev->dev.parent, "setting idle threshold to %u\n", ithr);
^
include/linux/dev_printk.h:123:2: note: expanded from macro 'dev_dbg'
dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:166:2: note: expanded from macro 'dynamic_dev_dbg'
_dynamic_func_call(fmt,__dynamic_dev_dbg, \
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:131:49: note: expanded from macro '__dynamic_func_call'
#define __dynamic_func_call(id, fmt, func, ...) do { \
^
drivers/media/rc/sunxi-cir.c:164:2: note: Loop condition is false. Exiting loop
writel(REG_CIR_NTHR(SUNXI_IR_RXNOISE) | REG_CIR_ITHR(ithr),
^
arch/arm/include/asm/io.h:307:25: note: expanded from macro 'writel'
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
^
arch/arm/include/asm/io.h:169:20: note: expanded from macro '__iowmb'
#define __iowmb() do { } while (0)
^
drivers/media/rc/sunxi-cir.c:167:39: note: Passing the value 0 via 1st parameter 'base_clk'
rc_dev->timeout = sunxi_ithr_to_usec(base_clk, ithr);
^~~~~~~~
drivers/media/rc/sunxi-cir.c:167:20: note: Calling 'sunxi_ithr_to_usec'
rc_dev->timeout = sunxi_ithr_to_usec(base_clk, ithr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/rc/sunxi-cir.c:143:9: note: '__d' initialized to 0
return DIV_ROUND_CLOSEST(USEC_PER_SEC * (ithr + 1),
^
include/linux/math.h:88:2: note: expanded from macro 'DIV_ROUND_CLOSEST'
typeof(divisor) __d = divisor; \
--
drivers/spi/spi-imx.c:623:23: note: Assigned value is garbage or undefined
spi_imx->spi_bus_clk = clk;
^ ~~~
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.
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.
mm/mmap.c:2006:2: warning: Value stored to 'gap_end' is never read [clang-analyzer-deadcode.DeadStores]
gap_end = ULONG_MAX; /* Only for VM_BUG_ON below */
^
mm/mmap.c:2006:2: note: Value stored to 'gap_end' is never read
mm/mmap.c:3276:3: warning: Value stored to 'faulted_in_anon_vma' is never read [clang-analyzer-deadcode.DeadStores]
faulted_in_anon_vma = false;
^ ~~~~~
mm/mmap.c:3276:3: note: Value stored to 'faulted_in_anon_vma' is never read
faulted_in_anon_vma = false;
^ ~~~~~
mm/mmap.c:3718:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
ret = percpu_counter_init(&vm_committed_as, 0, GFP_KERNEL);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
mm/mmap.c:3718:2: note: Value stored to 'ret' is never read
ret = percpu_counter_init(&vm_committed_as, 0, GFP_KERNEL);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
9 warnings generated.
mm/mmu_gather.c:85:3: warning: Value stored to 'batch' is never read [clang-analyzer-deadcode.DeadStores]
batch = tlb->active;
^ ~~~~~~~~~~~
mm/mmu_gather.c:85:3: note: Value stored to 'batch' is never read
batch = tlb->active;
^ ~~~~~~~~~~~
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.
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.
9 warnings generated.
Suppressed 9 warnings (8 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
drivers/iommu/iova.c:64:29: 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 long' [clang-analyzer-core.UndefinedBinaryOperatorResult]
iovad->dma_32bit_pfn = 1UL << (32 - iova_shift(iovad));
^ ~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iommu/iova.c:56:10: note: Assuming the condition is false
BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule));
^
include/asm-generic/bug.h:65:45: note: expanded from macro 'BUG_ON'
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
~~~~~~~~~^~~~~~~~~~
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
drivers/iommu/iova.c:56:9: note: Left side of '||' is false
BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule));
^
drivers/iommu/iova.c:56:2: note: Taking false branch
BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule));
^
include/asm-generic/bug.h:65:32: note: expanded from macro 'BUG_ON'
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
^
drivers/iommu/iova.c:56:2: note: Loop condition is false. Exiting loop
BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule));
^
include/asm-generic/bug.h:65:27: note: expanded from macro 'BUG_ON'
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
^
drivers/iommu/iova.c:58:2: note: Loop condition is false. Exiting loop
spin_lock_init(&iovad->iova_rbtree_lock);
^
include/linux/spinlock.h:334:35: note: expanded from macro 'spin_lock_init'
# define spin_lock_init(lock) \
^
drivers/iommu/iova.c:64:29: 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 long'
iovad->dma_32bit_pfn = 1UL << (32 - iova_shift(iovad));
^ ~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/iommu/iova.c:247:14: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
align_mask <<= fls_long(size - 1);
^
drivers/iommu/iova.c:503:6: note: 'iova_pfn' is 0
if (iova_pfn)
^~~~~~~~
drivers/iommu/iova.c:503:2: note: Taking false branch
if (iova_pfn)
^
drivers/iommu/iova.c:507:13: note: Calling 'alloc_iova'
new_iova = alloc_iova(iovad, size, limit_pfn, true);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iommu/iova.c:379:6: note: Assuming 'new_iova' is non-null
if (!new_iova)
^~~~~~~~~
drivers/iommu/iova.c:379:2: note: Taking false branch
if (!new_iova)
^
drivers/iommu/iova.c:382:8: note: Calling '__alloc_and_insert_iova_range'
ret = __alloc_and_insert_iova_range(iovad, size, limit_pfn + 1,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iommu/iova.c:246:6: note: 'size_aligned' is true
if (size_aligned)
^~~~~~~~~~~~
drivers/iommu/iova.c:246:2: note: Taking true branch
if (size_aligned)
^
drivers/iommu/iova.c:247:18: note: Calling 'fls_long'
align_mask <<= fls_long(size - 1);
^~~~~~~~~~~~~~~~~~
include/linux/bitops.h:187:2: note: Taking true branch
if (sizeof(l) == 4)
^
include/linux/bitops.h:188:10: note: Calling 'fls'
return fls(l);
^~~~~~
include/asm-generic/bitops/fls.h:15:2: note: 'r' initialized to 32
int r = 32;
^~~~~
include/asm-generic/bitops/fls.h:17:6: note: Assuming 'x' is not equal to 0, which participates in a condition later
if (!x)
^~
include/asm-generic/bitops/fls.h:17:2: note: Taking false branch
if (!x)
^
include/asm-generic/bitops/fls.h:19:6: note: Assuming the condition is false
if (!(x & 0xffff0000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:19:2: note: Taking false branch
if (!(x & 0xffff0000u)) {
^
include/asm-generic/bitops/fls.h:23:6: note: Assuming the condition is false
if (!(x & 0xff000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:23:2: note: Taking false branch
if (!(x & 0xff000000u)) {
^
include/asm-generic/bitops/fls.h:27:6: note: Assuming the condition is false
if (!(x & 0xf0000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:27:2: note: Taking false branch
if (!(x & 0xf0000000u)) {
^
include/asm-generic/bitops/fls.h:31:6: note: Assuming the condition is false
if (!(x & 0xc0000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:31:2: note: Taking false branch
if (!(x & 0xc0000000u)) {
^
include/asm-generic/bitops/fls.h:35:6: note: Assuming the condition is false
if (!(x & 0x80000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:35:2: note: Taking false branch
if (!(x & 0x80000000u)) {
^
include/asm-generic/bitops/fls.h:39:2: note: Returning the value 32 (loaded from 'r')
return r;
^~~~~~~~
include/linux/bitops.h:188:10: note: Returning from 'fls'
return fls(l);
^~~~~~
include/linux/bitops.h:188:3: note: Returning the value 32
return fls(l);
^~~~~~~~~~~~~
drivers/iommu/iova.c:247:18: note: Returning from 'fls_long'
align_mask <<= fls_long(size - 1);
^~~~~~~~~~~~~~~~~~
drivers/iommu/iova.c:247:14: note: Assigned value is garbage or undefined
align_mask <<= fls_long(size - 1);
^ ~~~~~~~~~~~~~~~~~~
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
drivers/base/regmap/regmap-mmio.c:52:3: warning: Value stored to 'min_stride' is never read [clang-analyzer-deadcode.DeadStores]
min_stride = 0;
^ ~
drivers/base/regmap/regmap-mmio.c:52:3: note: Value stored to 'min_stride' is never read
min_stride = 0;
--
^
include/linux/dev_printk.h:123:2: note: expanded from macro 'dev_dbg'
dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:166:2: note: expanded from macro 'dynamic_dev_dbg'
_dynamic_func_call(fmt,__dynamic_dev_dbg, \
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:133:2: note: expanded from macro '__dynamic_func_call'
if (DYNAMIC_DEBUG_BRANCH(id)) \
^
drivers/usb/serial/garmin_gps.c:934:2: note: Loop condition is false. Exiting loop
dev_dbg(&port->dev, "%s - mode=%d state=%d flags=0x%X\n",
^
include/linux/dev_printk.h:123:2: note: expanded from macro 'dev_dbg'
dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:166:2: note: expanded from macro 'dynamic_dev_dbg'
_dynamic_func_call(fmt,__dynamic_dev_dbg, \
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:131:49: note: expanded from macro '__dynamic_func_call'
#define __dynamic_func_call(id, fmt, func, ...) do { \
^
drivers/usb/serial/garmin_gps.c:938:2: note: Calling 'garmin_clear'
garmin_clear(garmin_data_p);
^~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/serial/garmin_gps.c:856:2: note: Calling 'pkt_clear'
pkt_clear(garmin_data_p);
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/usb/serial/garmin_gps.c:321:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&garmin_data_p->lock, flags);
^
include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
raw_spin_lock_irqsave(spinlock_check(lock), flags); \
^
include/linux/spinlock.h:250:2: note: expanded from macro 'raw_spin_lock_irqsave'
do { \
^
drivers/usb/serial/garmin_gps.c:321:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&garmin_data_p->lock, flags);
^
include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave'
#define spin_lock_irqsave(lock, flags) \
^
drivers/usb/serial/garmin_gps.c:322:2: note: Loop condition is true. Entering loop body
while (!list_empty(&garmin_data_p->pktlist)) {
^
drivers/usb/serial/garmin_gps.c:325:3: note: Memory is released
kfree(result);
^~~~~~~~~~~~~
drivers/usb/serial/garmin_gps.c:322:2: note: Loop condition is true. Entering loop body
while (!list_empty(&garmin_data_p->pktlist)) {
^
drivers/usb/serial/garmin_gps.c:324:3: note: Calling 'list_del'
list_del(&result->list);
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/list.h:147:14: note: Use of memory after it is freed
entry->next = LIST_POISON1;
~~~~~~~~~~~ ^
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.
16 warnings generated.
Suppressed 16 warnings (8 in non-user code, 8 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.
10 warnings generated.
Suppressed 10 warnings (8 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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
>> drivers/w1/masters/mxc_w1.c:117:10: warning: Division by zero [clang-analyzer-core.DivideZero]
clkrate /= clkdiv;
~~~~~~~~^~~~~~~~~
drivers/w1/masters/mxc_w1.c:100:6: note: Assuming 'mdev' is non-null
if (!mdev)
^~~~~
drivers/w1/masters/mxc_w1.c:100:2: note: Taking false branch
if (!mdev)
^
drivers/w1/masters/mxc_w1.c:104:6: note: Calling 'IS_ERR'
if (IS_ERR(mdev->clk))
^~~~~~~~~~~~~~~~~
include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
return IS_ERR_VALUE((unsigned long)ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/w1/masters/mxc_w1.c:104:6: note: Returning from 'IS_ERR'
if (IS_ERR(mdev->clk))
^~~~~~~~~~~~~~~~~
drivers/w1/masters/mxc_w1.c:104:2: note: Taking false branch
if (IS_ERR(mdev->clk))
^
drivers/w1/masters/mxc_w1.c:107:8: note: Calling 'clk_prepare_enable'
err = clk_prepare_enable(mdev->clk);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/clk.h:950:8: note: Calling 'clk_prepare'
ret = clk_prepare(clk);
^~~~~~~~~~~~~~~~
include/linux/clk.h:273:2: note: Loop condition is false. Exiting loop
might_sleep();
^
include/linux/kernel.h:132:2: note: expanded from macro 'might_sleep'
do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0)
^
include/linux/clk.h:274:2: note: Returning zero, which participates in a condition later
return 0;
^~~~~~~~
include/linux/clk.h:950:8: note: Returning from 'clk_prepare'
ret = clk_prepare(clk);
^~~~~~~~~~~~~~~~
include/linux/clk.h:951:6: note: 'ret' is 0
if (ret)
^~~
include/linux/clk.h:951:2: note: Taking false branch
if (ret)
^
include/linux/clk.h:953:8: note: Calling 'clk_enable'
ret = clk_enable(clk);
^~~~~~~~~~~~~~~
include/linux/clk.h:865:2: note: Returning zero, which participates in a condition later
return 0;
^~~~~~~~
include/linux/clk.h:953:8: note: Returning from 'clk_enable'
ret = clk_enable(clk);
^~~~~~~~~~~~~~~
include/linux/clk.h:954:6: note: 'ret' is 0
if (ret)
^~~
include/linux/clk.h:954:2: note: Taking false branch
if (ret)
^
include/linux/clk.h:957:2: note: Returning zero (loaded from 'ret'), which participates in a condition later
return ret;
^~~~~~~~~~
drivers/w1/masters/mxc_w1.c:107:8: note: Returning from 'clk_prepare_enable'
err = clk_prepare_enable(mdev->clk);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/w1/masters/mxc_w1.c:108:6: note: 'err' is 0
if (err)
^~~
drivers/w1/masters/mxc_w1.c:108:2: note: Taking false branch
if (err)
^
drivers/w1/masters/mxc_w1.c:112:6: note: 'clkrate' is < 10000000
if (clkrate < 10000000)
^~~~~~~
drivers/w1/masters/mxc_w1.c:112:2: note: Taking true branch
if (clkrate < 10000000)
^
drivers/w1/masters/mxc_w1.c:116:11: note: Left side of '||' is true
clkdiv = DIV_ROUND_CLOSEST(clkrate, 1000000);
^
include/linux/math.h:89:23: note: expanded from macro 'DIV_ROUND_CLOSEST'
(((typeof(x))-1) > 0 || \
^
drivers/w1/masters/mxc_w1.c:116:2: note: The value 0 is assigned to 'clkdiv'
clkdiv = DIV_ROUND_CLOSEST(clkrate, 1000000);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/w1/masters/mxc_w1.c:117:10: note: Division by zero
clkrate /= clkdiv;
~~~~~~~~^~~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
7 warnings generated.
Suppressed 7 warnings (4 in non-user code, 3 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.
--
^
drivers/usb/gadget/udc/dummy_hcd.c:2788:7: note: Assuming the condition is false
if (!the_hcd_pdev[i]) {
^~~~~~~~~~~~~~~~
drivers/usb/gadget/udc/dummy_hcd.c:2788:3: note: Taking false branch
if (!the_hcd_pdev[i]) {
^
drivers/usb/gadget/udc/dummy_hcd.c:2786:14: note: Assuming 'i' is >= field 'num'
for (i = 0; i < mod_data.num; i++) {
^~~~~~~~~~~~~~~~
drivers/usb/gadget/udc/dummy_hcd.c:2786:2: note: Loop condition is false. Execution continues on line 2795
for (i = 0; i < mod_data.num; i++) {
^
drivers/usb/gadget/udc/dummy_hcd.c:2795:14: note: Assuming 'i' is >= field 'num'
for (i = 0; i < mod_data.num; i++) {
^~~~~~~~~~~~~~~~
drivers/usb/gadget/udc/dummy_hcd.c:2795:2: note: Loop condition is false. Execution continues on line 2804
for (i = 0; i < mod_data.num; i++) {
^
drivers/usb/gadget/udc/dummy_hcd.c:2804:2: note: Loop condition is false. Execution continues on line 2820
for (i = 0; i < mod_data.num; i++) {
^
drivers/usb/gadget/udc/dummy_hcd.c:2821:6: note: Assuming 'retval' is >= 0
if (retval < 0)
^~~~~~~~~~
drivers/usb/gadget/udc/dummy_hcd.c:2821:2: note: Taking false branch
if (retval < 0)
^
drivers/usb/gadget/udc/dummy_hcd.c:2824:6: note: Assuming 'retval' is >= 0
if (retval < 0)
^~~~~~~~~~
drivers/usb/gadget/udc/dummy_hcd.c:2824:2: note: Taking false branch
if (retval < 0)
^
drivers/usb/gadget/udc/dummy_hcd.c:2827:14: note: Assuming 'i' is < field 'num'
for (i = 0; i < mod_data.num; i++) {
^~~~~~~~~~~~~~~~
drivers/usb/gadget/udc/dummy_hcd.c:2827:2: note: Loop condition is true. Entering loop body
for (i = 0; i < mod_data.num; i++) {
^
drivers/usb/gadget/udc/dummy_hcd.c:2829:7: note: Assuming 'retval' is >= 0
if (retval < 0) {
^~~~~~~~~~
drivers/usb/gadget/udc/dummy_hcd.c:2829:3: note: Taking false branch
if (retval < 0) {
^
drivers/usb/gadget/udc/dummy_hcd.c:2827:14: note: Assuming 'i' is >= field 'num'
for (i = 0; i < mod_data.num; i++) {
^~~~~~~~~~~~~~~~
drivers/usb/gadget/udc/dummy_hcd.c:2827:2: note: Loop condition is false. Execution continues on line 2836
for (i = 0; i < mod_data.num; i++) {
^
drivers/usb/gadget/udc/dummy_hcd.c:2836:7: note: The value 0 is assigned to 'i'
for (i = 0; i < mod_data.num; i++) {
^~~~~
drivers/usb/gadget/udc/dummy_hcd.c:2836:14: note: Assuming 'i' is < field 'num'
for (i = 0; i < mod_data.num; i++) {
^~~~~~~~~~~~~~~~
drivers/usb/gadget/udc/dummy_hcd.c:2836:2: note: Loop condition is true. Entering loop body
for (i = 0; i < mod_data.num; i++) {
^
drivers/usb/gadget/udc/dummy_hcd.c:2837:8: note: Access to field 'hs_hcd' results in a dereference of a null pointer
if (!dum[i]->hs_hcd ||
^~~~~~~~~~~~~~
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
drivers/leds/uleds.c:150:4: warning: Value stored to 'retval' is never read [clang-analyzer-deadcode.DeadStores]
retval = copy_to_user(buffer, &udev->brightness,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/leds/uleds.c:150:4: note: Value stored to 'retval' is never read
retval = copy_to_user(buffer, &udev->brightness,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
6 warnings generated.
>> drivers/firmware/arm_scpi.c:943:23: warning: Value stored to 'cl' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct mbox_client *cl = &pchan->cl;
^~ ~~~~~~~~~~
drivers/firmware/arm_scpi.c:943:23: note: Value stored to 'cl' during its initialization is never read
struct mbox_client *cl = &pchan->cl;
^~ ~~~~~~~~~~
>> drivers/firmware/arm_scpi.c:944:23: warning: Value stored to 'shmem' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct device_node *shmem = of_parse_phandle(np, "shmem", idx);
^~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/firmware/arm_scpi.c:944:23: note: Value stored to 'shmem' during its initialization is never read
struct device_node *shmem = of_parse_phandle(np, "shmem", idx);
^~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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/hid/hid-picolcd_fb.c:152:14: warning: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
tdata[i] <<= 1;
^
drivers/hid/hid-picolcd_fb.c:437:2: note: Calling 'picolcd_fb_update'
picolcd_fb_update(info);
^~~~~~~~~~~~~~~~~~~~~~~
drivers/hid/hid-picolcd_fb.c:234:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&fbdata->lock, flags);
^
include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
raw_spin_lock_irqsave(spinlock_check(lock), flags); \
^
include/linux/spinlock.h:250:2: note: expanded from macro 'raw_spin_lock_irqsave'
do { \
^
drivers/hid/hid-picolcd_fb.c:234:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&fbdata->lock, flags);
^
include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave'
#define spin_lock_irqsave(lock, flags) \
^
drivers/hid/hid-picolcd_fb.c:235:6: note: Assuming field 'ready' is not equal to 0
if (!fbdata->ready && fbdata->picolcd)
^~~~~~~~~~~~~~
drivers/hid/hid-picolcd_fb.c:235:21: note: Left side of '&&' is false
if (!fbdata->ready && fbdata->picolcd)
^
drivers/hid/hid-picolcd_fb.c:247:2: note: Loop condition is true. Entering loop body
for (chip = 0; chip < 4; chip++)
^
drivers/hid/hid-picolcd_fb.c:248:3: note: Loop condition is true. Entering loop body
for (tile = 0; tile < 8; tile++) {
^
drivers/hid/hid-picolcd_fb.c:249:8: note: Assuming field 'force' is 0
if (!fbdata->force && !picolcd_fb_update_tile(
^~~~~~~~~~~~~~
drivers/hid/hid-picolcd_fb.c:249:8: note: Left side of '&&' is true
drivers/hid/hid-picolcd_fb.c:249:27: note: Calling 'picolcd_fb_update_tile'
if (!fbdata->force && !picolcd_fb_update_tile(
^~~~~~~~~~~~~~~~~~~~~~~
drivers/hid/hid-picolcd_fb.c:148:6: note: Assuming 'bpp' is equal to 1
if (bpp == 1) {
^~~~~~~~
drivers/hid/hid-picolcd_fb.c:148:2: note: Taking true branch
if (bpp == 1) {
^
drivers/hid/hid-picolcd_fb.c:149:3: note: Loop condition is true. Entering loop body
for (b = 7; b >= 0; b--) {
^
drivers/hid/hid-picolcd_fb.c:151:9: note: The value 0 is assigned to 'i'
for (i = 0; i < 64; i++) {
^~~~~
drivers/hid/hid-picolcd_fb.c:151:4: note: Loop condition is true. Entering loop body
for (i = 0; i < 64; i++) {
^
drivers/hid/hid-picolcd_fb.c:152:14: note: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage
tdata[i] <<= 1;
~~~~~~~~ ^
drivers/hid/hid-picolcd_fb.c:160:14: warning: The left expression of the compound assignment is an uninitialized value. The computed value will also be garbage [clang-analyzer-core.uninitialized.Assign]
tdata[i] <<= 1;
^
drivers/hid/hid-picolcd_fb.c:437:2: note: Calling 'picolcd_fb_update'
picolcd_fb_update(info);
^~~~~~~~~~~~~~~~~~~~~~~
drivers/hid/hid-picolcd_fb.c:234:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&fbdata->lock, flags);
^
include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
raw_spin_lock_irqsave(spinlock_check(lock), flags); \
^
include/linux/spinlock.h:250:2: note: expanded from macro 'raw_spin_lock_irqsave'
do { \
^
drivers/hid/hid-picolcd_fb.c:234:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&fbdata->lock, flags);
^
include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave'
#define spin_lock_irqsave(lock, flags) \
^
drivers/hid/hid-picolcd_fb.c:235:6: note: Assuming field 'ready' is not equal to 0
if (!fbdata->ready && fbdata->picolcd)
^~~~~~~~~~~~~~
drivers/hid/hid-picolcd_fb.c:235:21: note: Left side of '&&' is false
--
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
return IS_ERR_VALUE((unsigned long)ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/nvmem/core.c:1627:6: note: Returning from 'IS_ERR'
if (IS_ERR(cell))
^~~~~~~~~~~~
drivers/nvmem/core.c:1627:2: note: Taking false branch
if (IS_ERR(cell))
^
drivers/nvmem/core.c:1631:8: note: Calling 'nvmem_cell_read'
buf = nvmem_cell_read(cell, len);
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/nvmem/core.c:1423:6: note: Assuming 'nvmem' is non-null
if (!nvmem)
^~~~~~
drivers/nvmem/core.c:1423:2: note: Taking false branch
if (!nvmem)
^
drivers/nvmem/core.c:1427:6: note: Assuming 'buf' is non-null
if (!buf)
^~~~
drivers/nvmem/core.c:1427:2: note: Taking false branch
if (!buf)
^
drivers/nvmem/core.c:1430:7: note: Calling '__nvmem_cell_read'
rc = __nvmem_cell_read(nvmem, cell, buf, len);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/nvmem/core.c:1394:6: note: Assuming 'rc' is not equal to 0
if (rc)
^~
drivers/nvmem/core.c:1394:2: note: Taking true branch
if (rc)
^
drivers/nvmem/core.c:1430:7: note: Returning from '__nvmem_cell_read'
rc = __nvmem_cell_read(nvmem, cell, buf, len);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/nvmem/core.c:1431:6: note: 'rc' is not equal to 0
if (rc) {
^~
drivers/nvmem/core.c:1431:2: note: Taking true branch
if (rc) {
^
drivers/nvmem/core.c:1631:8: note: Returning from 'nvmem_cell_read'
buf = nvmem_cell_read(cell, len);
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/nvmem/core.c:1633:6: note: Calling 'IS_ERR'
if (IS_ERR(buf))
^~~~~~~~~~~
include/linux/err.h:36:9: note: Assuming the condition is false
return IS_ERR_VALUE((unsigned long)ptr);
^
include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE'
#define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
return IS_ERR_VALUE((unsigned long)ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/nvmem/core.c:1633:6: note: Returning from 'IS_ERR'
if (IS_ERR(buf))
^~~~~~~~~~~
drivers/nvmem/core.c:1633:2: note: Taking false branch
if (IS_ERR(buf))
^
drivers/nvmem/core.c:1640:6: note: Assuming 'nbits' is 0
if (nbits)
^~~~~
drivers/nvmem/core.c:1640:2: note: Taking false branch
if (nbits)
^
drivers/nvmem/core.c:1643:11: note: The left operand of '>' is a garbage value
if (*len > max_len) {
~~~~ ^
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
Suppressed 9 warnings (8 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.
9 warnings generated.
>> drivers/iommu/mtk_iommu_v1.c:384:3: warning: Value stored to 'fwspec' is never read [clang-analyzer-deadcode.DeadStores]
fwspec = dev_iommu_fwspec_get(dev);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iommu/mtk_iommu_v1.c:384:3: note: Value stored to 'fwspec' is never read
fwspec = dev_iommu_fwspec_get(dev);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~
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.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
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.
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.
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.
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.
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.
9 warnings generated.
drivers/input/rmi4/rmi_f11.c:1129:2: warning: Value stored to 'query_offset' is never read [clang-analyzer-deadcode.DeadStores]
query_offset += rc;
^ ~~
drivers/input/rmi4/rmi_f11.c:1129:2: note: Value stored to 'query_offset' is never read
query_offset += rc;
^ ~~
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/input/rmi4/rmi_f12.c:133:3: warning: Value stored to 'offset' is never read [clang-analyzer-deadcode.DeadStores]
offset += 1;
^ ~
drivers/input/rmi4/rmi_f12.c:133:3: note: Value stored to 'offset' is never read
offset += 1;
^ ~
drivers/input/rmi4/rmi_f12.c:401:2: warning: Value stored to 'query_addr' is never read [clang-analyzer-deadcode.DeadStores]
query_addr += 3;
^ ~
drivers/input/rmi4/rmi_f12.c:401:2: note: Value stored to 'query_addr' is never read
query_addr += 3;
^ ~
drivers/input/rmi4/rmi_f12.c:520:3: warning: Value stored to 'data_offset' is never read [clang-analyzer-deadcode.DeadStores]
data_offset += item->reg_size;
^ ~~~~~~~~~~~~~~
drivers/input/rmi4/rmi_f12.c:520:3: note: Value stored to 'data_offset' is never read
data_offset += item->reg_size;
^ ~~~~~~~~~~~~~~
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
>> drivers/i2c/busses/i2c-riic.c:359:38: warning: Division by zero [clang-analyzer-core.DivideZero]
brl -= t->scl_fall_ns / (1000000000 / rate);
~~~~~~~~~~~^~~~~~
drivers/i2c/busses/i2c-riic.c:297:6: note: Assuming field 'bus_freq_hz' is <= I2C_MAX_FAST_MODE_FREQ
if (t->bus_freq_hz > I2C_MAX_FAST_MODE_FREQ) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/i2c/busses/i2c-riic.c:297:2: note: Taking false branch
if (t->bus_freq_hz > I2C_MAX_FAST_MODE_FREQ) {
^
drivers/i2c/busses/i2c-riic.c:305:9: note: Calling 'clk_get_rate'
rate = clk_get_rate(riic->clk);
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/clk.h:882:2: note: Returning zero
return 0;
^~~~~~~~
drivers/i2c/busses/i2c-riic.c:305:9: note: Returning from 'clk_get_rate'
rate = clk_get_rate(riic->clk);
^~~~~~~~~~~~~~~~~~~~~~~
drivers/i2c/busses/i2c-riic.c:305:2: note: The value 0 is assigned to 'rate'
rate = clk_get_rate(riic->clk);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/i2c/busses/i2c-riic.c:324:2: note: Loop condition is true. Entering loop body
for (cks = 0; cks < 7; cks++) {
^
drivers/i2c/busses/i2c-riic.c:330:7: note: Assuming the condition is true
if (brl <= (0x1F + 3))
^~~~~~~~~~~~~~~~~
drivers/i2c/busses/i2c-riic.c:330:3: note: Taking true branch
if (brl <= (0x1F + 3))
^
drivers/i2c/busses/i2c-riic.c:331:4: note: Execution continues on line 337
break;
^
drivers/i2c/busses/i2c-riic.c:337:2: note: Taking false branch
if (brl > (0x1F + 3)) {
^
drivers/i2c/busses/i2c-riic.c:347:6: note: 'cks' is equal to 0
if (cks == 0) {
^~~
drivers/i2c/busses/i2c-riic.c:347:2: note: Taking true branch
if (cks == 0) {
^
drivers/i2c/busses/i2c-riic.c:359:38: note: Division by zero
brl -= t->scl_fall_ns / (1000000000 / rate);
~~~~~~~~~~~^~~~~~
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.
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.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
--
^
drivers/staging/emxx_udc/emxx_udc.c:2689:7: note: Loop condition is false. Exiting loop
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/staging/emxx_udc/emxx_udc.c:2692:6: note: Assuming 'udc' is null
if (!udc) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2692:6: note: Assuming pointer value is null
if (!udc) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2692:2: note: Taking true branch
if (!udc) {
^
drivers/staging/emxx_udc/emxx_udc.c:2693:11: note: Access to field 'dev' results in a dereference of a null pointer (loaded from field 'udc')
dev_err(ep->udc->dev, " *** %s, bad udc\n", __func__);
^
include/linux/dev_printk.h:112:11: note: expanded from macro 'dev_err'
_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
drivers/staging/emxx_udc/emxx_udc.c:2741:11: warning: Access to field 'dev' results in a dereference of a null pointer (loaded from field 'udc') [clang-analyzer-core.NullDereference]
dev_err(ep->udc->dev, "%s, bad udc\n", __func__);
^
include/linux/dev_printk.h:112:11: note: expanded from macro 'dev_err'
_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
drivers/staging/emxx_udc/emxx_udc.c:2732:6: note: Assuming '_ep' is non-null
if (!_ep) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2732:2: note: Taking false branch
if (!_ep) {
^
drivers/staging/emxx_udc/emxx_udc.c:2737:7: note: Left side of '&&' is false
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/staging/emxx_udc/emxx_udc.c:2737:7: note: Taking false branch
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/staging/emxx_udc/emxx_udc.c:2737:7: note: Loop condition is false. Exiting loop
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/staging/emxx_udc/emxx_udc.c:2740:6: note: Assuming 'udc' is null
if (!udc) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2740:2: note: Taking true branch
if (!udc) {
^
drivers/staging/emxx_udc/emxx_udc.c:2741:11: note: Access to field 'dev' results in a dereference of a null pointer (loaded from field 'udc')
dev_err(ep->udc->dev, "%s, bad udc\n", __func__);
^
include/linux/dev_printk.h:112:11: note: expanded from macro 'dev_err'
_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
>> drivers/staging/emxx_udc/emxx_udc.c:2754:3: warning: Value stored to 'data' is never read [clang-analyzer-deadcode.DeadStores]
data = _nbu2ss_readl(&preg->EP0_LENGTH) & EP0_LDATA;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/staging/emxx_udc/emxx_udc.c:2754:3: note: Value stored to 'data' is never read
data = _nbu2ss_readl(&preg->EP0_LENGTH) & EP0_LDATA;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/staging/emxx_udc/emxx_udc.c:2757:3: warning: Value stored to 'data' is never read [clang-analyzer-deadcode.DeadStores]
data = _nbu2ss_readl(&preg->EP_REGS[ep->epnum - 1].EP_LEN_DCNT)
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/staging/emxx_udc/emxx_udc.c:2757:3: note: Value stored to 'data' is never read
data = _nbu2ss_readl(&preg->EP_REGS[ep->epnum - 1].EP_LEN_DCNT)
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/staging/emxx_udc/emxx_udc.c:2783:11: warning: Access to field 'dev' results in a dereference of a null pointer (loaded from field 'udc') [clang-analyzer-core.NullDereference]
dev_err(ep->udc->dev, "%s, bad udc\n", __func__);
^
include/linux/dev_printk.h:112:11: note: expanded from macro 'dev_err'
_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
drivers/staging/emxx_udc/emxx_udc.c:2774:6: note: Assuming '_ep' is non-null
if (!_ep) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2774:2: note: Taking false branch
if (!_ep) {
^
drivers/staging/emxx_udc/emxx_udc.c:2779:7: note: Left side of '&&' is false
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/staging/emxx_udc/emxx_udc.c:2779:7: note: Taking false branch
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/staging/emxx_udc/emxx_udc.c:2779:7: note: Loop condition is false. Exiting loop
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/staging/emxx_udc/emxx_udc.c:2782:6: note: Assuming 'udc' is null
if (!udc) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2782:2: note: Taking true branch
if (!udc) {
^
drivers/staging/emxx_udc/emxx_udc.c:2783:11: note: Access to field 'dev' results in a dereference of a null pointer (loaded from field 'udc')
dev_err(ep->udc->dev, "%s, bad udc\n", __func__);
^
include/linux/dev_printk.h:112:11: note: expanded from macro 'dev_err'
_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
15 warnings generated.
lib/vsprintf.c:358:22: warning: The left operand of '==' is a garbage value [clang-analyzer-core.UndefinedBinaryOperatorResult]
else while (buf[-1] == '0')
^
lib/vsprintf.c:379:6: note: Assuming 'num' is > 9
if (num <= 9) {
^~~~~~~~
lib/vsprintf.c:379:2: note: Taking false branch
if (num <= 9) {
^
lib/vsprintf.c:383:9: note: Calling 'put_dec'
len = put_dec(tmp, num) - tmp;
^~~~~~~~~~~~~~~~~
lib/vsprintf.c:335:6: note: Assuming the condition is false
if (n < 100*1000*1000)
--
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
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.
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.
7 warnings generated.
drivers/usb/misc/ftdi-elan.c:565:3: warning: Value stored to 'work_delay_in_msec' is never read [clang-analyzer-deadcode.DeadStores]
work_delay_in_msec = 10;
^ ~~
drivers/usb/misc/ftdi-elan.c:565:3: note: Value stored to 'work_delay_in_msec' is never read
work_delay_in_msec = 10;
^ ~~
Suppressed 6 warnings (4 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.
5 warnings generated.
drivers/usb/misc/iowarrior.c:508:2: warning: Value stored to 'io_res' is never read [clang-analyzer-deadcode.DeadStores]
io_res = 0;
^ ~
drivers/usb/misc/iowarrior.c:508:2: note: Value stored to 'io_res' is never read
io_res = 0;
^ ~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
9 warnings generated.
Suppressed 9 warnings (8 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
12 warnings generated.
fs/binfmt_elf_fdpic.c:333:2: warning: Value stored to 'retval' is never read [clang-analyzer-deadcode.DeadStores]
retval = -ENOEXEC;
^ ~~~~~~~~
fs/binfmt_elf_fdpic.c:333:2: note: Value stored to 'retval' is never read
retval = -ENOEXEC;
^ ~~~~~~~~
>> fs/binfmt_elf_fdpic.c:335:3: warning: Value stored to 'stack_size' is never read [clang-analyzer-deadcode.DeadStores]
stack_size = 131072UL; /* same as exec.c's default commit */
^ ~~~~~~~~
fs/binfmt_elf_fdpic.c:335:3: note: Value stored to 'stack_size' is never read
stack_size = 131072UL; /* same as exec.c's default commit */
^ ~~~~~~~~
fs/binfmt_elf_fdpic.c:772:2: warning: Value stored to 'load_addr' is never read [clang-analyzer-deadcode.DeadStores]
load_addr = params->load_addr;
^ ~~~~~~~~~~~~~~~~~
fs/binfmt_elf_fdpic.c:772:2: note: Value stored to 'load_addr' is never read
load_addr = params->load_addr;
^ ~~~~~~~~~~~~~~~~~
fs/binfmt_elf_fdpic.c:773:2: warning: Value stored to 'seg' is never read [clang-analyzer-deadcode.DeadStores]
seg = loadmap->segs;
^ ~~~~~~~~~~~~~
fs/binfmt_elf_fdpic.c:773:2: note: Value stored to 'seg' is never read
seg = loadmap->segs;
^ ~~~~~~~~~~~~~
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
--
drivers/rtc/rtc-abx80x.c:534:3: warning: Value stored to 'status' is never read [clang-analyzer-deadcode.DeadStores]
status &= ~ABX8XX_STATUS_BLF;
^ ~~~~~~~~~~~~~~~~~~
drivers/rtc/rtc-abx80x.c:534:3: note: Value stored to 'status' is never read
status &= ~ABX8XX_STATUS_BLF;
^ ~~~~~~~~~~~~~~~~~~
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
fs/locks.c:2589:3: warning: Value stored to 'cmd' is never read [clang-analyzer-deadcode.DeadStores]
cmd = F_GETLK64;
^
fs/locks.c:2589:3: note: Value stored to 'cmd' is never read
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
9 warnings generated.
Suppressed 9 warnings (8 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.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
drivers/mmc/host/vub300.c:1610:4: warning: Value stored to 'result' is never read [clang-analyzer-deadcode.DeadStores]
result = usb_reset_device(vub300->udev);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/mmc/host/vub300.c:1610:4: note: Value stored to 'result' is never read
result = usb_reset_device(vub300->udev);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
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.
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.
9 warnings generated.
>> drivers/spi/spi-lantiq-ssc.c:284:17: warning: Division by zero [clang-analyzer-core.DivideZero]
brt = spi_clk / max_speed_hz - 1;
^
drivers/spi/spi-lantiq-ssc.c:816:2: note: Calling 'hw_setup_transfer'
hw_setup_transfer(spi, spidev, t);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-lantiq-ssc.c:433:2: note: 'speed_hz' initialized here
unsigned int speed_hz = t->speed_hz;
^~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-lantiq-ssc.c:437:6: note: Assuming 'bits_per_word' is not equal to field 'bits_per_word'
if (bits_per_word != spi->bits_per_word ||
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-lantiq-ssc.c:437:42: note: Left side of '||' is true
if (bits_per_word != spi->bits_per_word ||
^
drivers/spi/spi-lantiq-ssc.c:440:26: note: Passing value via 2nd parameter 'max_speed_hz'
hw_setup_speed_hz(spi, speed_hz);
^~~~~~~~
drivers/spi/spi-lantiq-ssc.c:440:3: note: Calling 'hw_setup_speed_hz'
hw_setup_speed_hz(spi, speed_hz);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-lantiq-ssc.c:281:6: note: Assuming 'max_speed_hz' is <= 'spi_clk'
if (max_speed_hz > spi_clk)
^~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-lantiq-ssc.c:281:2: note: Taking false branch
if (max_speed_hz > spi_clk)
^
drivers/spi/spi-lantiq-ssc.c:284:17: note: Division by zero
brt = spi_clk / max_speed_hz - 1;
~~~~~~~~^~~~~~~~~~~~~~
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.
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.
lib/xarray.c:2029:18: warning: Value stored to 'node' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct xa_node *node = xas->xa_node;
^~~~ ~~~~~~~~~~~~
lib/xarray.c:2029:18: note: Value stored to 'node' during its initialization is never read
struct xa_node *node = xas->xa_node;
^~~~ ~~~~~~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
drivers/hid/hid-kye.c:684:6: warning: Access to field 'maxfield' results in a dereference of an undefined pointer value (loaded from variable 'report') [clang-analyzer-core.NullDereference]
if (report->maxfield < 1 || report->field[0]->report_count < 7) {
--
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.
9 warnings generated.
drivers/regulator/helpers.c:963:6: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
sel <<= ffs(rdev->desc->ramp_mask) - 1;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/regulator/helpers.c:951:14: note: Assuming field 'n_ramp_values' is not equal to 0
if (WARN_ON(!rdev->desc->n_ramp_values || !rdev->desc->ramp_delay_table))
^
include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON'
int __ret_warn_on = !!(condition); \
^~~~~~~~~
drivers/regulator/helpers.c:951:14: note: Left side of '||' is false
if (WARN_ON(!rdev->desc->n_ramp_values || !rdev->desc->ramp_delay_table))
^
drivers/regulator/helpers.c:951:44: note: Assuming field 'ramp_delay_table' is non-null
if (WARN_ON(!rdev->desc->n_ramp_values || !rdev->desc->ramp_delay_table))
^
include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON'
int __ret_warn_on = !!(condition); \
^~~~~~~~~
drivers/regulator/helpers.c:951:6: note: Taking false branch
if (WARN_ON(!rdev->desc->n_ramp_values || !rdev->desc->ramp_delay_table))
^
include/asm-generic/bug.h:122:2: note: expanded from macro 'WARN_ON'
if (unlikely(__ret_warn_on)) \
^
drivers/regulator/helpers.c:951:2: note: Taking false branch
if (WARN_ON(!rdev->desc->n_ramp_values || !rdev->desc->ramp_delay_table))
^
drivers/regulator/helpers.c:957:6: note: 'ret' is 0
if (ret) {
^~~
drivers/regulator/helpers.c:957:2: note: Taking false branch
if (ret) {
^
drivers/regulator/helpers.c:963:6: note: Assigned value is garbage or undefined
sel <<= ffs(rdev->desc->ramp_mask) - 1;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
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.
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.
fs/autofs/dev-ioctl.c:519:34: warning: Although the value stored to 'devid' is used in the enclosing expression, the value is never actually read from 'devid' [clang-analyzer-deadcode.DeadStores]
param->ismountpoint.out.devid = devid = 0;
^ ~
fs/autofs/dev-ioctl.c:519:34: note: Although the value stored to 'devid' is used in the enclosing expression, the value is never actually read from 'devid'
param->ismountpoint.out.devid = devid = 0;
^ ~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
fs/overlayfs/super.c:1809:2: warning: Value stored to 'err' is never read [clang-analyzer-deadcode.DeadStores]
err = -EINVAL;
^ ~~~~~~~
fs/overlayfs/super.c:1809:2: note: Value stored to 'err' is never read
err = -EINVAL;
^ ~~~~~~~
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.
9 warnings generated.
fs/overlayfs/namei.c:55:2: 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(buf, post);
^~~~~~
fs/overlayfs/namei.c:55:2: note: 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
strcat(buf, post);
^~~~~~
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.
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.
fs/configfs/symlink.c:70: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(s,"../");
^~~~~~
fs/configfs/symlink.c:70: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(s,"../");
^~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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/host1x/intr.c:29:2: warning: Attempt to free released memory [clang-analyzer-unix.Malloc]
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
drivers/gpu/host1x/intr.c:257:6: note: Assuming the condition is true
if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) ==
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:257:2: note: Taking true branch
if (atomic_cmpxchg(&waiter->state, WLS_CANCELLED, WLS_HANDLED) ==
^
drivers/gpu/host1x/intr.c:260:3: note: Calling 'kref_put'
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:2: note: Taking true branch
if (refcount_dec_and_test(&kref->refcount)) {
^
include/linux/kref.h:65:3: note: Calling 'waiter_release'
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/gpu/host1x/intr.c:29:8: note: Taking false branch
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/gpu/host1x/intr.c:29:8: note: Loop condition is false. Exiting loop
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/gpu/host1x/intr.c:29:2: note: Memory is released
kfree(container_of(kref, struct host1x_waitlist, refcount));
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:65:3: note: Returning; memory was released
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:260:3: note: Returning; memory was released
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:264:6: note: Assuming 'flush' is false
if (flush) {
^~~~~
drivers/gpu/host1x/intr.c:264:2: note: Taking false branch
if (flush) {
^
drivers/gpu/host1x/intr.c:270:2: note: Calling 'kref_put'
kref_put(&waiter->refcount, waiter_release);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:2: note: Taking true branch
if (refcount_dec_and_test(&kref->refcount)) {
^
include/linux/kref.h:65:3: note: Calling 'waiter_release'
release(kref);
^~~~~~~~~~~~~
drivers/gpu/host1x/intr.c:29:8: note: Left side of '&&' is false
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/gpu/host1x/intr.c:29:8: note: Taking false branch
kfree(container_of(kref, struct host1x_waitlist, refcount));
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
--
if (!(x & 0x80000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:35:2: note: Taking false branch
if (!(x & 0x80000000u)) {
^
include/asm-generic/bitops/fls.h:39:2: note: Returning the value 32 (loaded from 'r')
return r;
^~~~~~~~
drivers/spi/spi-stm32.c:449:12: note: Returning from 'fls'
mbrdiv = fls(div);
^~~~~~~~
drivers/spi/spi-stm32.c:449:3: note: The value 32 is assigned to 'mbrdiv'
mbrdiv = fls(div);
^~~~~~~~~~~~~~~~~
drivers/spi/spi-stm32.c:453:38: note: The result of the left shift is undefined due to shifting by '32', which is greater or equal to the width of type 'int'
spi->cur_speed = spi->clk_rate / (1 << mbrdiv);
^ ~~~~~~
drivers/spi/spi-stm32.c:453:38: warning: The result of the left shift is undefined due to shifting by '4294967295', which is greater or equal to the width of type 'int' [clang-analyzer-core.UndefinedBinaryOperatorResult]
spi->cur_speed = spi->clk_rate / (1 << mbrdiv);
^
drivers/spi/spi-stm32.c:1649:6: note: Assuming field 'len' is not equal to 0
if (transfer->len == 0)
^~~~~~~~~~~~~~~~~~
drivers/spi/spi-stm32.c:1649:2: note: Taking false branch
if (transfer->len == 0)
^
drivers/spi/spi-stm32.c:1654:16: note: Assuming field 'tx_buf' is null
spi->tx_len = spi->tx_buf ? transfer->len : 0;
^~~~~~~~~~~
drivers/spi/spi-stm32.c:1654:16: note: '?' condition is false
drivers/spi/spi-stm32.c:1655:16: note: Assuming field 'rx_buf' is null
spi->rx_len = spi->rx_buf ? transfer->len : 0;
^~~~~~~~~~~
drivers/spi/spi-stm32.c:1655:16: note: '?' condition is false
drivers/spi/spi-stm32.c:1657:21: note: Assuming field 'can_dma' is null
spi->cur_usedma = (master->can_dma &&
^~~~~~~~~~~~~~~
drivers/spi/spi-stm32.c:1657:37: note: Left side of '&&' is false
spi->cur_usedma = (master->can_dma &&
^
drivers/spi/spi-stm32.c:1660:8: note: Calling 'stm32_spi_transfer_one_setup'
ret = stm32_spi_transfer_one_setup(spi, spi_dev, transfer);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-stm32.c:1573:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&spi->lock, flags);
^
include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
raw_spin_lock_irqsave(spinlock_check(lock), flags); \
^
include/linux/spinlock.h:250:2: note: expanded from macro 'raw_spin_lock_irqsave'
do { \
^
drivers/spi/spi-stm32.c:1573:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&spi->lock, flags);
^
include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave'
#define spin_lock_irqsave(lock, flags) \
^
drivers/spi/spi-stm32.c:1581:8: note: Calling 'stm32_spi_prepare_mbr'
mbr = stm32_spi_prepare_mbr(spi, transfer->speed_hz,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-stm32.c:444:7: note: Assuming 'div' is >= 'min_div'
if ((div < min_div) || (div > max_div))
^~~~~~~~~~~~~
drivers/spi/spi-stm32.c:444:6: note: Left side of '||' is false
if ((div < min_div) || (div > max_div))
^
drivers/spi/spi-stm32.c:444:26: note: Assuming 'div' is <= 'max_div'
if ((div < min_div) || (div > max_div))
^~~~~~~~~~~~~
drivers/spi/spi-stm32.c:444:2: note: Taking false branch
if ((div < min_div) || (div > max_div))
^
drivers/spi/spi-stm32.c:448:6: note: Assuming the condition is false
if (div & (div - 1))
^~~~~~~~~~~~~~~
drivers/spi/spi-stm32.c:448:2: note: Taking false branch
if (div & (div - 1))
^
drivers/spi/spi-stm32.c:451:3: note: The value 4294967295 is assigned to 'mbrdiv'
mbrdiv = fls(div) - 1;
^~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-stm32.c:453:38: note: The result of the left shift is undefined due to shifting by '4294967295', which is greater or equal to the width of type 'int'
spi->cur_speed = spi->clk_rate / (1 << mbrdiv);
^ ~~~~~~
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.
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.
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.
12 warnings generated.
>> arch/arm/mach-rpc/ecard.c:640:5: 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((char *)ec->card_desc, incd.d.string);
^~~~~~
arch/arm/mach-rpc/ecard.c:640:5: 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((char *)ec->card_desc, incd.d.string);
^~~~~~
Suppressed 11 warnings (8 in non-user code, 3 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
24 warnings generated.
drivers/gpu/drm/virtio/virtgpu_vq.c:180:6: warning: Access to field 'resp_size' results in a dereference of a null pointer (loaded from variable 'vbuf') [clang-analyzer-core.NullDereference]
if (vbuf->resp_size > MAX_INLINE_RESP_SIZE)
^
drivers/gpu/drm/virtio/virtgpu_vq.c:1122:10: note: Calling 'virtio_gpu_alloc_cursor'
cur_p = virtio_gpu_alloc_cursor(vgdev, &vbuf);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/virtio/virtgpu_vq.c:132:6: note: Calling 'IS_ERR'
if (IS_ERR(vbuf)) {
^~~~~~~~~~~~
include/linux/err.h:36:2: note: Returning the value 1, which participates in a condition later
return IS_ERR_VALUE((unsigned long)ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/virtio/virtgpu_vq.c:132:6: note: Returning from 'IS_ERR'
if (IS_ERR(vbuf)) {
^~~~~~~~~~~~
drivers/gpu/drm/virtio/virtgpu_vq.c:132:2: note: Taking true branch
if (IS_ERR(vbuf)) {
^
drivers/gpu/drm/virtio/virtgpu_vq.c:133:3: note: Null pointer value stored to 'vbuf'
*vbuffer_p = NULL;
^~~~~~~~~~~~~~~~~
drivers/gpu/drm/virtio/virtgpu_vq.c:1122:10: note: Returning from 'virtio_gpu_alloc_cursor'
cur_p = virtio_gpu_alloc_cursor(vgdev, &vbuf);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/virtio/virtgpu_vq.c:1124:33: note: Passing null pointer value via 2nd parameter 'vbuf'
virtio_gpu_queue_cursor(vgdev, vbuf);
^~~~
drivers/gpu/drm/virtio/virtgpu_vq.c:1124:2: note: Calling 'virtio_gpu_queue_cursor'
virtio_gpu_queue_cursor(vgdev, vbuf);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/virtio/virtgpu_vq.c:463:6: note: Assuming the condition is true
if (!drm_dev_enter(vgdev->ddev, &idx)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/virtio/virtgpu_vq.c:463:2: note: Taking true branch
if (!drm_dev_enter(vgdev->ddev, &idx)) {
^
drivers/gpu/drm/virtio/virtgpu_vq.c:464:20: note: Passing null pointer value via 2nd parameter 'vbuf'
free_vbuf(vgdev, vbuf);
^~~~
drivers/gpu/drm/virtio/virtgpu_vq.c:464:3: note: Calling 'free_vbuf'
free_vbuf(vgdev, vbuf);
^~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/drm/virtio/virtgpu_vq.c:180:6: note: Access to field 'resp_size' results in a dereference of a null pointer (loaded from variable 'vbuf')
if (vbuf->resp_size > MAX_INLINE_RESP_SIZE)
--
^
drivers/mfd/wm831x-irq.c:531:21: note: The result of the left shift is undefined due to shifting by '4294967295', which is greater or equal to the width of type 'int'
while (!(ret & 1 << (i - WM831X_IRQ_GPIO_1))) {
^ ~~~~~~~~~~~~~~~~~~~~~~~
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
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.
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/video/fbdev/core/fbcvt.c:261:4: warning: Value stored to 'cnt' is never read [clang-analyzer-deadcode.DeadStores]
cnt -= read;
^ ~~~~
drivers/video/fbdev/core/fbcvt.c:261:4: note: Value stored to 'cnt' is never read
cnt -= read;
^ ~~~~
drivers/video/fbdev/core/fbcvt.c:262:4: warning: Value stored to 'offset' is never read [clang-analyzer-deadcode.DeadStores]
offset += read;
^ ~~~~
drivers/video/fbdev/core/fbcvt.c:262:4: note: Value stored to 'offset' is never read
offset += read;
^ ~~~~
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.
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.
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.
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.
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.
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.
14 warnings generated.
Suppressed 14 warnings (8 in non-user code, 6 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.
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.
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.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
6 warnings generated.
>> drivers/gpio/gpiolib.c:550:8: warning: Null pointer passed as 1st argument to string comparison function [clang-analyzer-unix.cstring.NullArg]
if (!strcmp(gc->label, hog->chip_label))
^
drivers/gpio/gpiolib.c:574:33: note: Assuming field 'parent' is null
struct fwnode_handle *fwnode = gc->parent ? dev_fwnode(gc->parent) : NULL;
^~~~~~~~~~
drivers/gpio/gpiolib.c:574:33: note: '?' condition is false
drivers/gpio/gpiolib.c:586:6: note: Assuming 'gdev' is non-null
if (!gdev)
^~~~~
drivers/gpio/gpiolib.c:586:2: note: Taking false branch
if (!gdev)
^
drivers/gpio/gpiolib.c:593:2: note: Calling 'of_gpio_dev_init'
of_gpio_dev_init(gc, gdev);
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib-of.h:40:1: note: Returning without writing to 'gc->label'
}
^
drivers/gpio/gpiolib.c:593:2: note: Returning from 'of_gpio_dev_init'
of_gpio_dev_init(gc, gdev);
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib.c:594:2: note: Calling 'acpi_gpio_dev_init'
acpi_gpio_dev_init(gc, gdev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib-acpi.h:63:89: note: Returning without writing to 'gc->label'
static inline void acpi_gpio_dev_init(struct gpio_chip *gc, struct gpio_device *gdev) { }
^
drivers/gpio/gpiolib.c:594:2: note: Returning from 'acpi_gpio_dev_init'
acpi_gpio_dev_init(gc, gdev);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib.c:600:21: note: Value assigned to field 'label'
gdev->dev.fwnode = dev_fwnode(&gdev->dev) ?: fwnode;
^~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib.c:600:21: note: '?' condition is true
drivers/gpio/gpiolib.c:603:6: note: Assuming field 'id' is >= 0
if (gdev->id < 0) {
^~~~~~~~~~~~
drivers/gpio/gpiolib.c:603:2: note: Taking false branch
if (gdev->id < 0) {
^
drivers/gpio/gpiolib.c:609:6: note: Assuming 'ret' is 0
if (ret)
^~~
drivers/gpio/gpiolib.c:609:2: note: Taking false branch
if (ret)
^
drivers/gpio/gpiolib.c:613:6: note: Assuming field 'parent' is null
if (gc->parent && gc->parent->driver)
^~~~~~~~~~
drivers/gpio/gpiolib.c:613:17: note: Left side of '&&' is false
if (gc->parent && gc->parent->driver)
^
drivers/gpio/gpiolib.c:615:11: note: Assuming field 'owner' is null
else if (gc->owner)
^~~~~~~~~
drivers/gpio/gpiolib.c:615:7: note: Taking false branch
else if (gc->owner)
^
drivers/gpio/gpiolib.c:622:6: note: Assuming field 'descs' is non-null
if (!gdev->descs) {
^~~~~~~~~~~~
drivers/gpio/gpiolib.c:622:2: note: Taking false branch
if (!gdev->descs) {
^
drivers/gpio/gpiolib.c:627:6: note: Assuming field 'ngpio' is not equal to 0
if (gc->ngpio == 0) {
^~~~~~~~~~~~~~
drivers/gpio/gpiolib.c:627:2: note: Taking false branch
if (gc->ngpio == 0) {
^
drivers/gpio/gpiolib.c:633:6: note: Assuming field 'ngpio' is <= FASTPATH_NGPIO
if (gc->ngpio > FASTPATH_NGPIO)
^~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpio/gpiolib.c:633:2: note: Taking false branch
if (gc->ngpio > FASTPATH_NGPIO)
^
drivers/gpio/gpiolib.c:637:30: note: Assuming pointer value is null
gdev->label = kstrdup_const(gc->label ?: "unknown", GFP_KERNEL);
^~~~~~~~~
drivers/gpio/gpiolib.c:637:30: note: '?' condition is false
drivers/gpio/gpiolib.c:638:6: note: Assuming field 'label' is non-null
if (!gdev->label) {
^~~~~~~~~~~~
drivers/gpio/gpiolib.c:638:2: note: Taking false branch
if (!gdev->label) {
^
drivers/gpio/gpiolib.c:646:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&gpio_lock, flags);
^
include/linux/spinlock.h:384:2: note: expanded from macro 'spin_lock_irqsave'
raw_spin_lock_irqsave(spinlock_check(lock), flags); \
^
include/linux/spinlock.h:250:2: note: expanded from macro 'raw_spin_lock_irqsave'
do { \
^
drivers/gpio/gpiolib.c:646:2: note: Loop condition is false. Exiting loop
spin_lock_irqsave(&gpio_lock, flags);
^
include/linux/spinlock.h:382:43: note: expanded from macro 'spin_lock_irqsave'
#define spin_lock_irqsave(lock, flags) \
--
^
drivers/video/fbdev/smscufx.c:1112:2: note: Taking false branch
if (dev->urbs.count > 0)
^
drivers/video/fbdev/smscufx.c:1115:2: note: Taking false branch
pr_debug("freeing ufx_data %p", dev);
^
include/linux/printk.h:471:2: note: expanded from macro 'pr_debug'
dynamic_pr_debug(fmt, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:162:2: note: expanded from macro 'dynamic_pr_debug'
_dynamic_func_call(fmt, __dynamic_pr_debug, \
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:133:2: note: expanded from macro '__dynamic_func_call'
if (DYNAMIC_DEBUG_BRANCH(id)) \
^
drivers/video/fbdev/smscufx.c:1115:2: note: Loop condition is false. Exiting loop
pr_debug("freeing ufx_data %p", dev);
^
include/linux/printk.h:471:2: note: expanded from macro 'pr_debug'
dynamic_pr_debug(fmt, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:162:2: note: expanded from macro 'dynamic_pr_debug'
_dynamic_func_call(fmt, __dynamic_pr_debug, \
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:131:49: note: expanded from macro '__dynamic_func_call'
#define __dynamic_func_call(id, fmt, func, ...) do { \
^
drivers/video/fbdev/smscufx.c:1117:2: note: Memory is released
kfree(dev);
^~~~~~~~~~
include/linux/kref.h:65:3: note: Returning; memory was released
release(kref);
^~~~~~~~~~~~~
drivers/video/fbdev/smscufx.c:1731:2: note: Returning; memory was released
kref_put(&dev->kref, ufx_free); /* ref for framebuffer */
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/video/fbdev/smscufx.c:1732:2: note: Calling 'kref_put'
kref_put(&dev->kref, ufx_free); /* last ref from kref_init */
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/kref.h:64:6: note: Calling 'refcount_dec_and_test'
if (refcount_dec_and_test(&kref->refcount)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/refcount.h:333:9: note: Calling '__refcount_dec_and_test'
return __refcount_dec_and_test(r, NULL);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/refcount.h:315:9: note: Calling '__refcount_sub_and_test'
return __refcount_sub_and_test(1, r, oldp);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/refcount.h:272:12: note: Calling 'atomic_fetch_sub_release'
int old = atomic_fetch_sub_release(i, &r->refs);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/asm-generic/atomic-instrumented.h:168:9: note: Calling 'arch_atomic_fetch_sub'
return arch_atomic_fetch_sub_release(i, v);
^
include/linux/atomic-arch-fallback.h:296:39: note: expanded from macro 'arch_atomic_fetch_sub_release'
#define arch_atomic_fetch_sub_release arch_atomic_fetch_sub
^
arch/arm/include/asm/atomic.h:224:1: note: Loop condition is false. Exiting loop
ATOMIC_OPS(sub, -=, sub)
^
arch/arm/include/asm/atomic.h:221:2: note: expanded from macro 'ATOMIC_OPS'
ATOMIC_FETCH_OP(op, c_op, asm_op)
^
arch/arm/include/asm/atomic.h:192:2: note: expanded from macro 'ATOMIC_FETCH_OP'
raw_local_irq_save(flags); \
^
include/linux/irqflags.h:169:2: note: expanded from macro 'raw_local_irq_save'
do { \
^
arch/arm/include/asm/atomic.h:224:1: note: Use of memory after it is freed
ATOMIC_OPS(sub, -=, sub)
^
arch/arm/include/asm/atomic.h:221:2: note: expanded from macro 'ATOMIC_OPS'
ATOMIC_FETCH_OP(op, c_op, asm_op)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
arch/arm/include/asm/atomic.h:193:8: note: expanded from macro 'ATOMIC_FETCH_OP'
val = v->counter; \
^~~~~~~~~~
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.
9 warnings generated.
drivers/gpu/host1x/cdma.c:558:15: warning: Value stored to 'space' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
unsigned int space = cdma->slots_free;
^~~~~ ~~~~~~~~~~~~~~~~
drivers/gpu/host1x/cdma.c:558:15: note: Value stored to 'space' during its initialization is never read
unsigned int space = cdma->slots_free;
^~~~~ ~~~~~~~~~~~~~~~~
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.
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/host1x/job.c:185:35: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
job->addr_phys[job->num_unpins] = phys_addr;
^
drivers/gpu/host1x/job.c:599:8: note: Calling 'pin_job'
err = pin_job(host, job);
^~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:119:14: note: Assuming 'i' is < field 'num_relocs'
for (i = 0; i < job->num_relocs; i++) {
^~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:119:2: note: Loop condition is true. Entering loop body
for (i = 0; i < job->num_relocs; i++) {
^
drivers/gpu/host1x/job.c:121:14: note: 'phys_addr' declared without an initial value
dma_addr_t phys_addr, *phys;
^~~~~~~~~
drivers/gpu/host1x/job.c:125:7: note: Assuming field 'bo' is non-null
if (!reloc->target.bo) {
^~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:125:3: note: Taking false branch
if (!reloc->target.bo) {
^
drivers/gpu/host1x/job.c:142:7: note: Assuming 'domain' is non-null
if (!domain || client->group)
^~~~~~~
drivers/gpu/host1x/job.c:142:7: note: Left side of '||' is false
drivers/gpu/host1x/job.c:142:18: note: Assuming field 'group' is null
if (!domain || client->group)
^~~~~~~~~~~~~
drivers/gpu/host1x/job.c:142:3: note: Taking false branch
if (!domain || client->group)
^
drivers/gpu/host1x/job.c:148:7: note: Calling 'IS_ERR'
if (IS_ERR(sgt)) {
^~~~~~~~~~~
include/linux/err.h:36:9: note: Assuming the condition is false
return IS_ERR_VALUE((unsigned long)ptr);
^
include/linux/err.h:22:34: note: expanded from macro 'IS_ERR_VALUE'
#define IS_ERR_VALUE(x) unlikely((unsigned long)(void *)(x) >= (unsigned long)-MAX_ERRNO)
~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
return IS_ERR_VALUE((unsigned long)ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:148:7: note: Returning from 'IS_ERR'
if (IS_ERR(sgt)) {
^~~~~~~~~~~
drivers/gpu/host1x/job.c:148:3: note: Taking false branch
if (IS_ERR(sgt)) {
^
drivers/gpu/host1x/job.c:153:7: note: Assuming 'sgt' is null
if (sgt) {
^~~
drivers/gpu/host1x/job.c:153:3: note: Taking false branch
if (sgt) {
^
drivers/gpu/host1x/job.c:185:35: note: Assigned value is garbage or undefined
job->addr_phys[job->num_unpins] = phys_addr;
^ ~~~~~~~~~
drivers/gpu/host1x/job.c:265:35: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
job->addr_phys[job->num_unpins] = phys_addr;
^
drivers/gpu/host1x/job.c:599:8: note: Calling 'pin_job'
err = pin_job(host, job);
^~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:119:14: note: Assuming 'i' is >= field 'num_relocs'
for (i = 0; i < job->num_relocs; i++) {
^~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:119:2: note: Loop condition is false. Execution continues on line 195
for (i = 0; i < job->num_relocs; i++) {
^
drivers/gpu/host1x/job.c:195:2: note: Taking false branch
if (IS_ENABLED(CONFIG_TEGRA_HOST1X_FIREWALL))
^
drivers/gpu/host1x/job.c:198:14: note: Assuming 'i' is < field 'num_gathers'
for (i = 0; i < job->num_gathers; i++) {
^~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:198:2: note: Loop condition is true. Entering loop body
for (i = 0; i < job->num_gathers; i++) {
^
drivers/gpu/host1x/job.c:202:3: note: 'phys_addr' declared without an initial value
dma_addr_t phys_addr;
^~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:210:7: note: Assuming field 'bo' is non-null
if (!g->bo) {
^~~~~~
drivers/gpu/host1x/job.c:210:3: note: Taking false branch
if (!g->bo) {
^
drivers/gpu/host1x/job.c:220:7: note: Assuming the condition is false
if (!iommu_get_domain_for_dev(host->dev))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/gpu/host1x/job.c:220:3: note: Taking false branch
if (!iommu_get_domain_for_dev(host->dev))
^
drivers/gpu/host1x/job.c:226:7: note: Calling 'IS_ERR'
if (IS_ERR(sgt)) {
^~~~~~~~~~~
include/linux/err.h:36:9: note: Assuming the condition is false
--
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
crypto/testmgr.c:607:3: note: Loop condition is false. Execution continues on line 614
while (offset + partitions[i].length + TESTMGR_POISON_LEN >
^
crypto/testmgr.c:617:7: note: 'out_divs' is null
if (out_divs)
^~~~~~~~
crypto/testmgr.c:617:3: note: Taking false branch
if (out_divs)
^
crypto/testmgr.c:620:7: note: 'data' is non-null
if (data) {
^~~~
crypto/testmgr.c:620:3: note: Taking true branch
if (data) {
^
crypto/testmgr.c:623:15: note: Assuming '__UNIQUE_ID___x247' is >= '__UNIQUE_ID___y248'
copy_len = min(partitions[i].length, data->count);
^
include/linux/minmax.h:45:19: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
__cmp(unique_x, unique_y, op); })
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
^~~~~~~~~~
crypto/testmgr.c:623:15: note: '?' condition is false
copy_len = min(partitions[i].length, data->count);
^
include/linux/minmax.h:45:19: note: expanded from macro 'min'
#define min(x, y) __careful_cmp(x, y, <)
^
include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
^
include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
__cmp(unique_x, unique_y, op); })
^
include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
^
crypto/testmgr.c:625:16: note: Assuming 'copied' is equal to 'copy_len'
if (WARN_ON(copied != copy_len))
^
include/asm-generic/bug.h:121:25: note: expanded from macro 'WARN_ON'
int __ret_warn_on = !!(condition); \
^~~~~~~~~
crypto/testmgr.c:625:8: note: Taking false branch
if (WARN_ON(copied != copy_len))
^
include/asm-generic/bug.h:122:2: note: expanded from macro 'WARN_ON'
if (unlikely(__ret_warn_on)) \
^
crypto/testmgr.c:625:4: note: Taking false branch
if (WARN_ON(copied != copy_len))
^
crypto/testmgr.c:600:14: note: Assuming 'i' is < field 'nents'
for (i = 0; i < tsgl->nents; i++) {
^~~~~~~~~~~~~~~
crypto/testmgr.c:600:2: note: Loop condition is true. Entering loop body
for (i = 0; i < tsgl->nents; i++) {
^
crypto/testmgr.c:601:25: note: Access to field 'offset' results in a dereference of an undefined pointer value (loaded from field 'div')
unsigned int offset = partitions[i].div->offset;
^ ~~~
crypto/testmgr.c:1056:3: warning: Value stored to 'p' is never read [clang-analyzer-deadcode.DeadStores]
p += scnprintf(p, end - p, " key_offset=%u", cfg->key_offset);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
crypto/testmgr.c:1056:3: note: Value stored to 'p' is never read
p += scnprintf(p, end - p, " key_offset=%u", cfg->key_offset);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
Suppressed 9 warnings (8 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (4 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
>> drivers/soc/ixp4xx/ixp4xx-npe.c:684:22: warning: Value stored to 'np' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct device_node *np = dev->of_node;
^~ ~~~~~~~~~~~~
drivers/soc/ixp4xx/ixp4xx-npe.c:684:22: note: Value stored to 'np' during its initialization is never read
struct device_node *np = dev->of_node;
^~ ~~~~~~~~~~~~
Suppressed 9 warnings (8 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
Suppressed 10 warnings (9 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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
9 warnings generated.
drivers/regulator/bcm590xx-regulator.c:140:8: warning: Excessive padding in 'struct bcm590xx_info' (6 padding bytes, where 2 is optimal).
Optimal fields order:
name,
vin_name,
volt_table,
linear_ranges,
n_voltages,
n_linear_ranges,
consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
struct bcm590xx_info {
~~~~~~~^~~~~~~~~~~~~~~
drivers/regulator/bcm590xx-regulator.c:140:8: note: Excessive padding in 'struct bcm590xx_info' (6 padding bytes, where 2 is optimal). Optimal fields order: name, vin_name, volt_table, linear_ranges, n_voltages, n_linear_ranges, consider reordering the fields or adding explicit padding members
struct bcm590xx_info {
~~~~~~~^~~~~~~~~~~~~~~
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.
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.
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.
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.
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.
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.
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.
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.
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 (4 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
--
async = list_first_entry_or_null(&map->async_free,
^
include/linux/list.h:546:20: note: expanded from macro 'list_first_entry_or_null'
pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
^
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/base/regmap/regmap.c:1499:11: note: Taking false branch
async = list_first_entry_or_null(&map->async_free,
^
include/linux/list.h:546:20: note: expanded from macro 'list_first_entry_or_null'
pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
^
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:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/base/regmap/regmap.c:1499:11: note: Loop condition is false. Exiting loop
async = list_first_entry_or_null(&map->async_free,
^
include/linux/list.h:546:20: note: expanded from macro 'list_first_entry_or_null'
pos__ != head__ ? list_entry(pos__, type, member) : NULL; \
^
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:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/base/regmap/regmap.c:1502:3: note: Calling 'list_del'
list_del(&async->list);
^~~~~~~~~~~~~~~~~~~~~~
include/linux/list.h:147:14: note: Use of memory after it is freed
entry->next = LIST_POISON1;
~~~~~~~~~~~ ^
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
drivers/iommu/iova.c:64:29: 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 long' [clang-analyzer-core.UndefinedBinaryOperatorResult]
iovad->dma_32bit_pfn = 1UL << (32 - iova_shift(iovad));
^ ~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iommu/iova.c:56:10: note: Assuming the condition is false
BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule));
^
include/asm-generic/bug.h:65:45: note: expanded from macro 'BUG_ON'
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
~~~~~~~~~^~~~~~~~~~
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
drivers/iommu/iova.c:56:9: note: Left side of '||' is false
BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule));
^
drivers/iommu/iova.c:56:2: note: Taking false branch
BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule));
^
include/asm-generic/bug.h:65:32: note: expanded from macro 'BUG_ON'
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
^
drivers/iommu/iova.c:56:2: note: Loop condition is false. Exiting loop
BUG_ON((granule > PAGE_SIZE) || !is_power_of_2(granule));
^
include/asm-generic/bug.h:65:27: note: expanded from macro 'BUG_ON'
#define BUG_ON(condition) do { if (unlikely(condition)) BUG(); } while (0)
^
drivers/iommu/iova.c:58:2: note: Loop condition is false. Exiting loop
spin_lock_init(&iovad->iova_rbtree_lock);
^
include/linux/spinlock.h:334:35: note: expanded from macro 'spin_lock_init'
# define spin_lock_init(lock) \
^
drivers/iommu/iova.c:64:29: 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 long'
iovad->dma_32bit_pfn = 1UL << (32 - iova_shift(iovad));
^ ~~~~~~~~~~~~~~~~~~~~~~~~
>> drivers/iommu/iova.c:247:14: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
align_mask <<= fls_long(size - 1);
^
drivers/iommu/iova.c:503:6: note: 'iova_pfn' is 0
if (iova_pfn)
^~~~~~~~
drivers/iommu/iova.c:503:2: note: Taking false branch
if (iova_pfn)
^
drivers/iommu/iova.c:507:13: note: Calling 'alloc_iova'
new_iova = alloc_iova(iovad, size, limit_pfn, true);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iommu/iova.c:379:6: note: Assuming 'new_iova' is non-null
if (!new_iova)
^~~~~~~~~
drivers/iommu/iova.c:379:2: note: Taking false branch
if (!new_iova)
^
drivers/iommu/iova.c:382:8: note: Calling '__alloc_and_insert_iova_range'
ret = __alloc_and_insert_iova_range(iovad, size, limit_pfn + 1,
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iommu/iova.c:246:6: note: 'size_aligned' is true
if (size_aligned)
^~~~~~~~~~~~
drivers/iommu/iova.c:246:2: note: Taking true branch
if (size_aligned)
^
drivers/iommu/iova.c:247:18: note: Calling 'fls_long'
align_mask <<= fls_long(size - 1);
^~~~~~~~~~~~~~~~~~
include/linux/bitops.h:187:2: note: Taking true branch
if (sizeof(l) == 4)
^
include/linux/bitops.h:188:10: note: Calling 'fls'
return fls(l);
^~~~~~
include/asm-generic/bitops/fls.h:15:2: note: 'r' initialized to 32
int r = 32;
^~~~~
include/asm-generic/bitops/fls.h:17:6: note: Assuming 'x' is not equal to 0, which participates in a condition later
if (!x)
^~
include/asm-generic/bitops/fls.h:17:2: note: Taking false branch
if (!x)
^
include/asm-generic/bitops/fls.h:19:6: note: Assuming the condition is false
if (!(x & 0xffff0000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:19:2: note: Taking false branch
if (!(x & 0xffff0000u)) {
^
include/asm-generic/bitops/fls.h:23:6: note: Assuming the condition is false
if (!(x & 0xff000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:23:2: note: Taking false branch
if (!(x & 0xff000000u)) {
^
include/asm-generic/bitops/fls.h:27:6: note: Assuming the condition is false
if (!(x & 0xf0000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:27:2: note: Taking false branch
if (!(x & 0xf0000000u)) {
^
include/asm-generic/bitops/fls.h:31:6: note: Assuming the condition is false
if (!(x & 0xc0000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:31:2: note: Taking false branch
if (!(x & 0xc0000000u)) {
^
include/asm-generic/bitops/fls.h:35:6: note: Assuming the condition is false
if (!(x & 0x80000000u)) {
^~~~~~~~~~~~~~~~~~
include/asm-generic/bitops/fls.h:35:2: note: Taking false branch
if (!(x & 0x80000000u)) {
^
include/asm-generic/bitops/fls.h:39:2: note: Returning the value 32 (loaded from 'r')
return r;
^~~~~~~~
include/linux/bitops.h:188:10: note: Returning from 'fls'
return fls(l);
^~~~~~
include/linux/bitops.h:188:3: note: Returning the value 32
return fls(l);
^~~~~~~~~~~~~
drivers/iommu/iova.c:247:18: note: Returning from 'fls_long'
align_mask <<= fls_long(size - 1);
^~~~~~~~~~~~~~~~~~
drivers/iommu/iova.c:247:14: note: Assigned value is garbage or undefined
align_mask <<= fls_long(size - 1);
^ ~~~~~~~~~~~~~~~~~~
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.
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.
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.
mm/memory.c:297:2: warning: Value stored to 'pud' is never read [clang-analyzer-deadcode.DeadStores]
pud = pud_offset(p4d, start);
--
5 warnings generated.
drivers/tty/serial/uartlite.c:368:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
ret = uart_in32(ULITE_CONTROL, port);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/tty/serial/uartlite.c:368:2: note: Value stored to 'ret' is never read
ret = uart_in32(ULITE_CONTROL, port);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
drivers/tty/serial/mxs-auart.c:1134:3: warning: Value stored to 'istat' is never read [clang-analyzer-deadcode.DeadStores]
istat &= ~AUART_INTR_TXIS;
^ ~~~~~~~~~~~~~~~~
drivers/tty/serial/mxs-auart.c:1134:3: note: Value stored to 'istat' is never read
istat &= ~AUART_INTR_TXIS;
^ ~~~~~~~~~~~~~~~~
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
>> drivers/media/rc/sunxi-cir.c:143:9: warning: Division by zero [clang-analyzer-core.DivideZero]
return DIV_ROUND_CLOSEST(USEC_PER_SEC * (ithr + 1),
^
include/linux/math.h:92:26: note: expanded from macro 'DIV_ROUND_CLOSEST'
(((__x) + ((__d) / 2)) / (__d)) : \
^
drivers/media/rc/sunxi-cir.c:246:9: note: Calling 'sunxi_ir_hw_init'
return sunxi_ir_hw_init(dev);
^~~~~~~~~~~~~~~~~~~~~
drivers/media/rc/sunxi-cir.c:179:6: note: 'ret' is 0
if (ret)
^~~
drivers/media/rc/sunxi-cir.c:179:2: note: Taking false branch
if (ret)
^
drivers/media/rc/sunxi-cir.c:183:6: note: 'ret' is 0
if (ret) {
^~~
drivers/media/rc/sunxi-cir.c:183:2: note: Taking false branch
if (ret) {
^
drivers/media/rc/sunxi-cir.c:189:6: note: 'ret' is 0
if (ret) {
^~~
drivers/media/rc/sunxi-cir.c:189:2: note: Taking false branch
if (ret) {
^
drivers/media/rc/sunxi-cir.c:195:2: note: Loop condition is false. Exiting loop
writel(REG_CTL_MD, ir->base + SUNXI_IR_CTL_REG);
^
arch/arm/include/asm/io.h:307:25: note: expanded from macro 'writel'
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
^
arch/arm/include/asm/io.h:169:20: note: expanded from macro '__iowmb'
#define __iowmb() do { } while (0)
^
drivers/media/rc/sunxi-cir.c:198:2: note: Calling 'sunxi_ir_set_timeout'
sunxi_ir_set_timeout(ir->rc, ir->rc->timeout);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/rc/sunxi-cir.c:157:26: note: Calling 'clk_get_rate'
unsigned int base_clk = clk_get_rate(ir->clk);
^~~~~~~~~~~~~~~~~~~~~
include/linux/clk.h:882:2: note: Returning zero
return 0;
^~~~~~~~
drivers/media/rc/sunxi-cir.c:157:26: note: Returning from 'clk_get_rate'
unsigned int base_clk = clk_get_rate(ir->clk);
^~~~~~~~~~~~~~~~~~~~~
drivers/media/rc/sunxi-cir.c:157:2: note: 'base_clk' initialized to 0
unsigned int base_clk = clk_get_rate(ir->clk);
^~~~~~~~~~~~~~~~~~~~~
drivers/media/rc/sunxi-cir.c:161:2: note: Taking false branch
dev_dbg(rc_dev->dev.parent, "setting idle threshold to %u\n", ithr);
^
include/linux/dev_printk.h:123:2: note: expanded from macro 'dev_dbg'
dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:166:2: note: expanded from macro 'dynamic_dev_dbg'
_dynamic_func_call(fmt,__dynamic_dev_dbg, \
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:133:2: note: expanded from macro '__dynamic_func_call'
if (DYNAMIC_DEBUG_BRANCH(id)) \
^
drivers/media/rc/sunxi-cir.c:161:2: note: Loop condition is false. Exiting loop
dev_dbg(rc_dev->dev.parent, "setting idle threshold to %u\n", ithr);
^
include/linux/dev_printk.h:123:2: note: expanded from macro 'dev_dbg'
dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:166:2: note: expanded from macro 'dynamic_dev_dbg'
_dynamic_func_call(fmt,__dynamic_dev_dbg, \
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:131:49: note: expanded from macro '__dynamic_func_call'
#define __dynamic_func_call(id, fmt, func, ...) do { \
^
drivers/media/rc/sunxi-cir.c:164:2: note: Loop condition is false. Exiting loop
writel(REG_CIR_NTHR(SUNXI_IR_RXNOISE) | REG_CIR_ITHR(ithr),
^
arch/arm/include/asm/io.h:307:25: note: expanded from macro 'writel'
#define writel(v,c) ({ __iowmb(); writel_relaxed(v,c); })
^
arch/arm/include/asm/io.h:169:20: note: expanded from macro '__iowmb'
#define __iowmb() do { } while (0)
^
drivers/media/rc/sunxi-cir.c:167:39: note: Passing the value 0 via 1st parameter 'base_clk'
rc_dev->timeout = sunxi_ithr_to_usec(base_clk, ithr);
^~~~~~~~
drivers/media/rc/sunxi-cir.c:167:20: note: Calling 'sunxi_ithr_to_usec'
rc_dev->timeout = sunxi_ithr_to_usec(base_clk, ithr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/rc/sunxi-cir.c:143:9: note: '__d' initialized to 0
return DIV_ROUND_CLOSEST(USEC_PER_SEC * (ithr + 1),
^
include/linux/math.h:88:2: note: expanded from macro 'DIV_ROUND_CLOSEST'
typeof(divisor) __d = divisor; \
--
fs/overlayfs/export.c:817:12: note: Assuming the condition is false
dentry = (flags & OVL_FH_FLAG_PATH_UPPER) ?
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/overlayfs/export.c:817:11: note: '?' condition is false
dentry = (flags & OVL_FH_FLAG_PATH_UPPER) ?
^
fs/overlayfs/export.c:819:4: note: Calling 'ovl_lower_fh_to_d'
ovl_lower_fh_to_d(sb, fh);
^~~~~~~~~~~~~~~~~~~~~~~~~
fs/overlayfs/export.c:708:6: note: Assuming 'err' is 0
if (err)
^~~
fs/overlayfs/export.c:708:2: note: Taking false branch
if (err)
^
fs/overlayfs/export.c:711:6: note: Left side of '||' is false
if (!d_is_dir(origin.dentry) ||
^
fs/overlayfs/export.c:712:6: note: Assuming the condition is false
!(origin.dentry->d_flags & DCACHE_DISCONNECTED)) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/overlayfs/export.c:711:2: note: Taking false branch
if (!d_is_dir(origin.dentry) ||
^
fs/overlayfs/export.c:726:6: note: Assuming field 'indexdir' is null
if (ofs->indexdir) {
^~~~~~~~~~~~~
fs/overlayfs/export.c:726:2: note: Taking false branch
if (ofs->indexdir) {
^
fs/overlayfs/export.c:736:6: note: 'index' is null
if (index && d_is_dir(index)) {
^~~~~
fs/overlayfs/export.c:736:12: note: Left side of '&&' is false
if (index && d_is_dir(index)) {
^
fs/overlayfs/export.c:749:2: note: Taking true branch
if (d_is_dir(origin.dentry)) {
^
fs/overlayfs/export.c:753:7: note: Assuming 'err' is 0
if (err)
^~~
fs/overlayfs/export.c:753:3: note: Taking false branch
if (err)
^
fs/overlayfs/export.c:756:6: note: 'index' is null
if (index) {
^~~~~
fs/overlayfs/export.c:756:2: note: Taking false branch
if (index) {
^
fs/overlayfs/export.c:763:11: note: Calling 'ovl_get_dentry'
dentry = ovl_get_dentry(sb, NULL, &origin, index);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
fs/overlayfs/export.c:654:34: note: 'upper' is null
const struct ovl_layer *layer = upper ? &ofs->layers[0] : lowerpath->layer;
^~~~~
fs/overlayfs/export.c:654:34: note: '?' condition is false
fs/overlayfs/export.c:655:24: note: '?' condition is false
struct dentry *real = upper ?: (index ?: lowerpath->dentry);
^
fs/overlayfs/export.c:655:34: note: '?' condition is false
struct dentry *real = upper ?: (index ?: lowerpath->dentry);
^
fs/overlayfs/export.c:655:2: note: 'real' initialized to a null pointer value
struct dentry *real = upper ?: (index ?: lowerpath->dentry);
^~~~~~~~~~~~~~~~~~~
fs/overlayfs/export.c:661:16: note: Passing null pointer value via 1st parameter 'dentry'
if (!d_is_dir(real))
^~~~
fs/overlayfs/export.c:661:7: note: Calling 'd_is_dir'
if (!d_is_dir(real))
^~~~~~~~~~~~~~
include/linux/dcache.h:420:22: note: Passing null pointer value via 1st parameter 'dentry'
return d_can_lookup(dentry) || d_is_autodir(dentry);
^~~~~~
include/linux/dcache.h:420:9: note: Calling 'd_can_lookup'
return d_can_lookup(dentry) || d_is_autodir(dentry);
^~~~~~~~~~~~~~~~~~~~
include/linux/dcache.h:410:24: note: Passing null pointer value via 1st parameter 'dentry'
return __d_entry_type(dentry) == DCACHE_DIRECTORY_TYPE;
^~~~~~
include/linux/dcache.h:410:9: note: Calling '__d_entry_type'
return __d_entry_type(dentry) == DCACHE_DIRECTORY_TYPE;
^~~~~~~~~~~~~~~~~~~~~~
include/linux/dcache.h:395:9: note: Access to field 'd_flags' results in a dereference of a null pointer (loaded from variable 'dentry')
return dentry->d_flags & DCACHE_ENTRY_TYPE;
^~~~~~
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
>> drivers/w1/masters/mxc_w1.c:117:10: warning: Division by zero [clang-analyzer-core.DivideZero]
clkrate /= clkdiv;
~~~~~~~~^~~~~~~~~
drivers/w1/masters/mxc_w1.c:100:6: note: Assuming 'mdev' is non-null
if (!mdev)
^~~~~
drivers/w1/masters/mxc_w1.c:100:2: note: Taking false branch
if (!mdev)
^
drivers/w1/masters/mxc_w1.c:104:6: note: Calling 'IS_ERR'
if (IS_ERR(mdev->clk))
^~~~~~~~~~~~~~~~~
include/linux/err.h:36:2: note: Returning zero, which participates in a condition later
return IS_ERR_VALUE((unsigned long)ptr);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/w1/masters/mxc_w1.c:104:6: note: Returning from 'IS_ERR'
if (IS_ERR(mdev->clk))
^~~~~~~~~~~~~~~~~
drivers/w1/masters/mxc_w1.c:104:2: note: Taking false branch
if (IS_ERR(mdev->clk))
^
drivers/w1/masters/mxc_w1.c:107:8: note: Calling 'clk_prepare_enable'
err = clk_prepare_enable(mdev->clk);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/clk.h:950:8: note: Calling 'clk_prepare'
ret = clk_prepare(clk);
^~~~~~~~~~~~~~~~
include/linux/clk.h:273:2: note: Loop condition is false. Exiting loop
might_sleep();
^
include/linux/kernel.h:132:2: note: expanded from macro 'might_sleep'
do { __might_sleep(__FILE__, __LINE__, 0); might_resched(); } while (0)
^
include/linux/clk.h:274:2: note: Returning zero, which participates in a condition later
return 0;
^~~~~~~~
include/linux/clk.h:950:8: note: Returning from 'clk_prepare'
ret = clk_prepare(clk);
^~~~~~~~~~~~~~~~
include/linux/clk.h:951:6: note: 'ret' is 0
if (ret)
^~~
include/linux/clk.h:951:2: note: Taking false branch
if (ret)
^
include/linux/clk.h:953:8: note: Calling 'clk_enable'
ret = clk_enable(clk);
^~~~~~~~~~~~~~~
include/linux/clk.h:865:2: note: Returning zero, which participates in a condition later
return 0;
^~~~~~~~
include/linux/clk.h:953:8: note: Returning from 'clk_enable'
ret = clk_enable(clk);
^~~~~~~~~~~~~~~
include/linux/clk.h:954:6: note: 'ret' is 0
if (ret)
^~~
include/linux/clk.h:954:2: note: Taking false branch
if (ret)
^
include/linux/clk.h:957:2: note: Returning zero (loaded from 'ret'), which participates in a condition later
return ret;
^~~~~~~~~~
drivers/w1/masters/mxc_w1.c:107:8: note: Returning from 'clk_prepare_enable'
err = clk_prepare_enable(mdev->clk);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/w1/masters/mxc_w1.c:108:6: note: 'err' is 0
if (err)
^~~
drivers/w1/masters/mxc_w1.c:108:2: note: Taking false branch
if (err)
^
drivers/w1/masters/mxc_w1.c:112:6: note: 'clkrate' is < 10000000
if (clkrate < 10000000)
^~~~~~~
drivers/w1/masters/mxc_w1.c:112:2: note: Taking true branch
if (clkrate < 10000000)
^
drivers/w1/masters/mxc_w1.c:116:11: note: Left side of '||' is true
clkdiv = DIV_ROUND_CLOSEST(clkrate, 1000000);
^
include/linux/math.h:89:23: note: expanded from macro 'DIV_ROUND_CLOSEST'
(((typeof(x))-1) > 0 || \
^
drivers/w1/masters/mxc_w1.c:116:2: note: The value 0 is assigned to 'clkdiv'
clkdiv = DIV_ROUND_CLOSEST(clkrate, 1000000);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/w1/masters/mxc_w1.c:117:10: note: Division by zero
clkrate /= clkdiv;
~~~~~~~~^~~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
--
drivers/hwmon/lm73.c:72:2: note: Taking false branch
if (status < 0)
^
drivers/hwmon/lm73.c:76:10: note: Assuming '__UNIQUE_ID___x278' is <= '__UNIQUE_ID___y279'
value = clamp_val(temp / 250, LM73_TEMP_MIN, LM73_TEMP_MAX) << 5;
^
include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:124:48: note: expanded from macro 'clamp_t'
#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:112:27: note: expanded from macro 'max_t'
#define max_t(type, x, y) __careful_cmp((type)(x), (type)(y), >)
^
note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
include/linux/minmax.h:104:48: note: expanded from macro 'min_t'
#define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), <)
~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
include/linux/minmax.h:38:14: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:31:25: note: expanded from macro '__cmp_once'
typeof(x) unique_x = (x); \
^
drivers/hwmon/lm73.c:76:10: note: '?' condition is false
value = clamp_val(temp / 250, LM73_TEMP_MIN, LM73_TEMP_MAX) << 5;
^
include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
^
include/linux/minmax.h:124:48: note: expanded from macro 'clamp_t'
#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
^
include/linux/minmax.h:112:27: note: expanded from macro 'max_t'
#define max_t(type, x, y) __careful_cmp((type)(x), (type)(y), >)
^
include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
^
include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
__cmp(unique_x, unique_y, op); })
^
include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
^
drivers/hwmon/lm73.c:76:10: note: '__UNIQUE_ID___x280' is < '__UNIQUE_ID___y281'
value = clamp_val(temp / 250, LM73_TEMP_MIN, LM73_TEMP_MAX) << 5;
^
include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:124:36: note: expanded from macro 'clamp_t'
#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
#define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), <)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
__cmp(unique_x, unique_y, op); })
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
^~~
drivers/hwmon/lm73.c:76:10: note: '?' condition is true
value = clamp_val(temp / 250, LM73_TEMP_MIN, LM73_TEMP_MAX) << 5;
^
include/linux/minmax.h:137:32: note: expanded from macro 'clamp_val'
#define clamp_val(val, lo, hi) clamp_t(typeof(val), val, lo, hi)
^
include/linux/minmax.h:124:36: note: expanded from macro 'clamp_t'
#define clamp_t(type, val, lo, hi) min_t(type, max_t(type, val, lo), hi)
^
include/linux/minmax.h:104:27: note: expanded from macro 'min_t'
#define min_t(type, x, y) __careful_cmp((type)(x), (type)(y), <)
^
include/linux/minmax.h:38:3: note: expanded from macro '__careful_cmp'
__cmp_once(x, y, __UNIQUE_ID(__x), __UNIQUE_ID(__y), op))
^
include/linux/minmax.h:33:3: note: expanded from macro '__cmp_once'
__cmp(unique_x, unique_y, op); })
^
include/linux/minmax.h:28:26: note: expanded from macro '__cmp'
#define __cmp(x, y, op) ((x) op (y) ? (x) : (y))
^
drivers/hwmon/lm73.c:76:62: note: The result of the left shift is undefined because the left operand is negative
value = clamp_val(temp / 250, LM73_TEMP_MIN, LM73_TEMP_MAX) << 5;
^
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.
12 warnings generated.
fs/binfmt_elf_fdpic.c:333:2: warning: Value stored to 'retval' is never read [clang-analyzer-deadcode.DeadStores]
retval = -ENOEXEC;
^ ~~~~~~~~
fs/binfmt_elf_fdpic.c:333:2: note: Value stored to 'retval' is never read
retval = -ENOEXEC;
^ ~~~~~~~~
>> fs/binfmt_elf_fdpic.c:335:3: warning: Value stored to 'stack_size' is never read [clang-analyzer-deadcode.DeadStores]
stack_size = 131072UL; /* same as exec.c's default commit */
^ ~~~~~~~~
fs/binfmt_elf_fdpic.c:335:3: note: Value stored to 'stack_size' is never read
stack_size = 131072UL; /* same as exec.c's default commit */
^ ~~~~~~~~
fs/binfmt_elf_fdpic.c:772:2: warning: Value stored to 'load_addr' is never read [clang-analyzer-deadcode.DeadStores]
load_addr = params->load_addr;
^ ~~~~~~~~~~~~~~~~~
fs/binfmt_elf_fdpic.c:772:2: note: Value stored to 'load_addr' is never read
load_addr = params->load_addr;
^ ~~~~~~~~~~~~~~~~~
fs/binfmt_elf_fdpic.c:773:2: warning: Value stored to 'seg' is never read [clang-analyzer-deadcode.DeadStores]
seg = loadmap->segs;
^ ~~~~~~~~~~~~~
fs/binfmt_elf_fdpic.c:773:2: note: Value stored to 'seg' is never read
seg = loadmap->segs;
^ ~~~~~~~~~~~~~
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
drivers/leds/uleds.c:150:4: warning: Value stored to 'retval' is never read [clang-analyzer-deadcode.DeadStores]
retval = copy_to_user(buffer, &udev->brightness,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/leds/uleds.c:150:4: note: Value stored to 'retval' is never read
retval = copy_to_user(buffer, &udev->brightness,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
include/linux/hid.h:1007:9: warning: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'input') [clang-analyzer-core.NullDereference]
input->name, c, type);
^
drivers/hid/hid-cherry.c:42:6: note: Assuming the condition is false
if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hid/hid-cherry.c:42:2: note: Taking false branch
if ((usage->hid & HID_USAGE_PAGE) != HID_UP_CONSUMER)
^
drivers/hid/hid-cherry.c:45:2: note: Control jumps to 'case 771:' at line 48
switch (usage->hid & HID_USAGE) {
^
drivers/hid/hid-cherry.c:48:14: note: Calling 'hid_map_usage_clear'
case 0x303: ch_map_key_clear(KEY_PROG3); break;
^
drivers/hid/hid-cherry.c:36:29: note: expanded from macro 'ch_map_key_clear'
#define ch_map_key_clear(c) hid_map_usage_clear(hi, usage, bit, max, \
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:1035:2: note: Calling 'hid_map_usage'
hid_map_usage(hidinput, usage, bit, max, type, c);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:982:2: note: 'input' initialized here
struct input_dev *input = hidinput->input;
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:986:2: note: Control jumps to 'case 1:' at line 995
switch (type) {
^
include/linux/hid.h:998:3: note: Execution continues on line 1005
break;
^
include/linux/hid.h:1005:15: note: 'c' is <= 'limit'
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1005:15: note: Left side of '||' is false
if (unlikely(c > limit || !bmap)) {
^
include/linux/hid.h:1005:28: note: Assuming 'bmap' is null
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1005:28: note: Assuming pointer value is null
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1005:2: note: Taking true branch
if (unlikely(c > limit || !bmap)) {
^
include/linux/hid.h:1006:3: note: Assuming the condition is true
pr_warn_ratelimited("%s: Invalid code %d type %d\n",
--
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:1035:2: note: Calling 'hid_map_usage'
hid_map_usage(hidinput, usage, bit, max, type, c);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:982:2: note: 'input' initialized here
struct input_dev *input = hidinput->input;
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:986:2: note: Control jumps to 'case 1:' at line 995
switch (type) {
^
include/linux/hid.h:998:3: note: Execution continues on line 1005
break;
^
include/linux/hid.h:1005:15: note: 'c' is <= 'limit'
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1005:15: note: Left side of '||' is false
if (unlikely(c > limit || !bmap)) {
^
include/linux/hid.h:1005:28: note: Assuming 'bmap' is null
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1005:28: note: Assuming pointer value is null
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1005:2: note: Taking true branch
if (unlikely(c > limit || !bmap)) {
^
include/linux/hid.h:1006:3: note: Assuming the condition is true
pr_warn_ratelimited("%s: Invalid code %d type %d\n",
^
include/linux/printk.h:557:2: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/printk.h:540:6: note: expanded from macro 'printk_ratelimited'
if (__ratelimit(&_rs)) \
^~~~~~~~~~~~~~~~~
include/linux/ratelimit_types.h:41:28: note: expanded from macro '__ratelimit'
#define __ratelimit(state) ___ratelimit(state, __func__)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:1006:3: note: Taking true branch
pr_warn_ratelimited("%s: Invalid code %d type %d\n",
^
include/linux/printk.h:557:2: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:540:2: note: expanded from macro 'printk_ratelimited'
if (__ratelimit(&_rs)) \
^
include/linux/hid.h:1007:9: note: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'input')
input->name, c, type);
^
include/linux/printk.h:557:49: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~
include/linux/printk.h:541:17: note: expanded from macro 'printk_ratelimited'
printk(fmt, ##__VA_ARGS__); \
^~~~~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
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.
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.
9 warnings generated.
drivers/hwmon/ltc2945.c:286:2: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
ret = regmap_update_bits(regmap, LTC2945_CONTROL, CONTROL_TEST_MODE,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hwmon/ltc2945.c:286:2: note: Value stored to 'ret' is never read
ret = regmap_update_bits(regmap, LTC2945_CONTROL, CONTROL_TEST_MODE,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
>> drivers/i2c/busses/i2c-riic.c:359:38: warning: Division by zero [clang-analyzer-core.DivideZero]
brl -= t->scl_fall_ns / (1000000000 / rate);
~~~~~~~~~~~^~~~~~
drivers/i2c/busses/i2c-riic.c:297:6: note: Assuming field 'bus_freq_hz' is <= I2C_MAX_FAST_MODE_FREQ
if (t->bus_freq_hz > I2C_MAX_FAST_MODE_FREQ) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/i2c/busses/i2c-riic.c:297:2: note: Taking false branch
if (t->bus_freq_hz > I2C_MAX_FAST_MODE_FREQ) {
^
drivers/i2c/busses/i2c-riic.c:305:9: note: Calling 'clk_get_rate'
rate = clk_get_rate(riic->clk);
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/clk.h:882:2: note: Returning zero
return 0;
^~~~~~~~
drivers/i2c/busses/i2c-riic.c:305:9: note: Returning from 'clk_get_rate'
rate = clk_get_rate(riic->clk);
^~~~~~~~~~~~~~~~~~~~~~~
drivers/i2c/busses/i2c-riic.c:305:2: note: The value 0 is assigned to 'rate'
rate = clk_get_rate(riic->clk);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/i2c/busses/i2c-riic.c:324:2: note: Loop condition is true. Entering loop body
for (cks = 0; cks < 7; cks++) {
^
drivers/i2c/busses/i2c-riic.c:330:7: note: Assuming the condition is true
if (brl <= (0x1F + 3))
^~~~~~~~~~~~~~~~~
drivers/i2c/busses/i2c-riic.c:330:3: note: Taking true branch
if (brl <= (0x1F + 3))
^
drivers/i2c/busses/i2c-riic.c:331:4: note: Execution continues on line 337
break;
^
drivers/i2c/busses/i2c-riic.c:337:2: note: Taking false branch
if (brl > (0x1F + 3)) {
^
drivers/i2c/busses/i2c-riic.c:347:6: note: 'cks' is equal to 0
if (cks == 0) {
^~~
drivers/i2c/busses/i2c-riic.c:347:2: note: Taking true branch
if (cks == 0) {
^
drivers/i2c/busses/i2c-riic.c:359:38: note: Division by zero
brl -= t->scl_fall_ns / (1000000000 / rate);
~~~~~~~~~~~^~~~~~
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.
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.
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.
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.
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.
fs/autofs/root.c:562: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(cp, symname);
^~~~~~
fs/autofs/root.c:562: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(cp, symname);
^~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
9 warnings generated.
Suppressed 9 warnings (8 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.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
--
^
drivers/hid/hid-samsung.c:105:2: note: Assuming 'hid_debug' is 0
dbg_hid("samsung wireless keyboard/mouse input mapping event [0x%x]\n",
^
include/linux/hid.h:1208:6: note: expanded from macro 'dbg_hid'
if (hid_debug) \
^~~~~~~~~
drivers/hid/hid-samsung.c:105:2: note: Taking false branch
dbg_hid("samsung wireless keyboard/mouse input mapping event [0x%x]\n",
^
include/linux/hid.h:1208:2: note: expanded from macro 'dbg_hid'
if (hid_debug) \
^
drivers/hid/hid-samsung.c:105:2: note: Loop condition is false. Exiting loop
dbg_hid("samsung wireless keyboard/mouse input mapping event [0x%x]\n",
^
include/linux/hid.h:1206:32: note: expanded from macro 'dbg_hid'
#define dbg_hid(fmt, ...) \
^
drivers/hid/hid-samsung.c:108:2: note: Control jumps to 'case 561:' at line 120
switch (usage->hid & HID_USAGE) {
^
drivers/hid/hid-samsung.c:120:14: note: Calling 'hid_map_usage_clear'
case 0x231: samsung_kbd_mouse_map_key_clear(KEY_STOP); break;
^
drivers/hid/hid-samsung.c:93:2: note: expanded from macro 'samsung_kbd_mouse_map_key_clear'
hid_map_usage_clear(hi, usage, bit, max, EV_KEY, (c))
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:1035:2: note: Calling 'hid_map_usage'
hid_map_usage(hidinput, usage, bit, max, type, c);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:982:2: note: 'input' initialized here
struct input_dev *input = hidinput->input;
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:986:2: note: Control jumps to 'case 1:' at line 995
switch (type) {
^
include/linux/hid.h:998:3: note: Execution continues on line 1005
break;
^
include/linux/hid.h:1005:15: note: 'c' is <= 'limit'
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1005:15: note: Left side of '||' is false
if (unlikely(c > limit || !bmap)) {
^
include/linux/hid.h:1005:28: note: Assuming 'bmap' is null
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1005:28: note: Assuming pointer value is null
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1005:2: note: Taking true branch
if (unlikely(c > limit || !bmap)) {
^
include/linux/hid.h:1006:3: note: Assuming the condition is true
pr_warn_ratelimited("%s: Invalid code %d type %d\n",
^
include/linux/printk.h:557:2: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/printk.h:540:6: note: expanded from macro 'printk_ratelimited'
if (__ratelimit(&_rs)) \
^~~~~~~~~~~~~~~~~
include/linux/ratelimit_types.h:41:28: note: expanded from macro '__ratelimit'
#define __ratelimit(state) ___ratelimit(state, __func__)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:1006:3: note: Taking true branch
pr_warn_ratelimited("%s: Invalid code %d type %d\n",
^
include/linux/printk.h:557:2: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^
include/linux/printk.h:540:2: note: expanded from macro 'printk_ratelimited'
if (__ratelimit(&_rs)) \
^
include/linux/hid.h:1007:9: note: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'input')
input->name, c, type);
^
include/linux/printk.h:557:49: note: expanded from macro 'pr_warn_ratelimited'
printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
^~~~~~~~~~~
include/linux/printk.h:541:17: note: expanded from macro 'printk_ratelimited'
printk(fmt, ##__VA_ARGS__); \
^~~~~~~~~~~
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
Suppressed 9 warnings (8 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.
9 warnings generated.
>> drivers/iommu/mtk_iommu_v1.c:384:3: warning: Value stored to 'fwspec' is never read [clang-analyzer-deadcode.DeadStores]
fwspec = dev_iommu_fwspec_get(dev);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/iommu/mtk_iommu_v1.c:384:3: note: Value stored to 'fwspec' is never read
fwspec = dev_iommu_fwspec_get(dev);
^ ~~~~~~~~~~~~~~~~~~~~~~~~~
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.
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.
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.
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.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
Suppressed 10 warnings (8 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.
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.
9 warnings generated.
Suppressed 9 warnings (8 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.
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.
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.
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/bcma/driver_mips.c:129:12: warning: The result of the left shift is undefined due to shifting by '63', which is greater or equal to the width of type 'int' [clang-analyzer-core.UndefinedBinaryOperatorResult]
if ((1 << bcma_core_mips_irqflag(core)) ==
^
drivers/bcma/driver_mips.c:305:6: note: Assuming field 'setup_done' is 0
if (mcore->setup_done)
^~~~~~~~~~~~~~~~~
drivers/bcma/driver_mips.c:305:2: note: Taking false branch
if (mcore->setup_done)
^
drivers/bcma/driver_mips.c:308:2: note: Taking false branch
bcma_debug(bus, "Initializing MIPS core...\n");
^
drivers/bcma/bcma_private.h:19:2: note: expanded from macro 'bcma_debug'
dev_dbg((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
^
include/linux/dev_printk.h:123:2: note: expanded from macro 'dev_dbg'
dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:166:2: note: expanded from macro 'dynamic_dev_dbg'
_dynamic_func_call(fmt,__dynamic_dev_dbg, \
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:133:2: note: expanded from macro '__dynamic_func_call'
if (DYNAMIC_DEBUG_BRANCH(id)) \
^
drivers/bcma/driver_mips.c:308:2: note: Loop condition is false. Exiting loop
bcma_debug(bus, "Initializing MIPS core...\n");
^
drivers/bcma/bcma_private.h:19:2: note: expanded from macro 'bcma_debug'
dev_dbg((bus)->dev, "bus%d: " fmt, (bus)->num, ##__VA_ARGS__)
^
include/linux/dev_printk.h:123:2: note: expanded from macro 'dev_dbg'
dynamic_dev_dbg(dev, dev_fmt(fmt), ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:166:2: note: expanded from macro 'dynamic_dev_dbg'
_dynamic_func_call(fmt,__dynamic_dev_dbg, \
^
include/linux/dynamic_debug.h:152:2: note: expanded from macro '_dynamic_func_call'
__dynamic_func_call(__UNIQUE_ID(ddebug), fmt, func, ##__VA_ARGS__)
^
include/linux/dynamic_debug.h:131:49: note: expanded from macro '__dynamic_func_call'
#define __dynamic_func_call(id, fmt, func, ...) do { \
^
drivers/bcma/driver_mips.c:314:2: note: Control jumps to 'case 21248:' at line 339
switch (bus->chipinfo.id) {
^
drivers/bcma/driver_mips.c:340:3: note: Calling 'bcma_core_mips_set_irq_name'
bcma_core_mips_set_irq_name(bus, 1, BCMA_CORE_PCIE, 0);
--
^
drivers/staging/emxx_udc/emxx_udc.c:2689:7: note: Loop condition is false. Exiting loop
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/staging/emxx_udc/emxx_udc.c:2692:6: note: Assuming 'udc' is null
if (!udc) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2692:6: note: Assuming pointer value is null
if (!udc) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2692:2: note: Taking true branch
if (!udc) {
^
drivers/staging/emxx_udc/emxx_udc.c:2693:11: note: Access to field 'dev' results in a dereference of a null pointer (loaded from field 'udc')
dev_err(ep->udc->dev, " *** %s, bad udc\n", __func__);
^
include/linux/dev_printk.h:112:11: note: expanded from macro 'dev_err'
_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
drivers/staging/emxx_udc/emxx_udc.c:2741:11: warning: Access to field 'dev' results in a dereference of a null pointer (loaded from field 'udc') [clang-analyzer-core.NullDereference]
dev_err(ep->udc->dev, "%s, bad udc\n", __func__);
^
include/linux/dev_printk.h:112:11: note: expanded from macro 'dev_err'
_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
drivers/staging/emxx_udc/emxx_udc.c:2732:6: note: Assuming '_ep' is non-null
if (!_ep) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2732:2: note: Taking false branch
if (!_ep) {
^
drivers/staging/emxx_udc/emxx_udc.c:2737:7: note: Left side of '&&' is false
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/staging/emxx_udc/emxx_udc.c:2737:7: note: Taking false branch
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/staging/emxx_udc/emxx_udc.c:2737:7: note: Loop condition is false. Exiting loop
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/staging/emxx_udc/emxx_udc.c:2740:6: note: Assuming 'udc' is null
if (!udc) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2740:2: note: Taking true branch
if (!udc) {
^
drivers/staging/emxx_udc/emxx_udc.c:2741:11: note: Access to field 'dev' results in a dereference of a null pointer (loaded from field 'udc')
dev_err(ep->udc->dev, "%s, bad udc\n", __func__);
^
include/linux/dev_printk.h:112:11: note: expanded from macro 'dev_err'
_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
>> drivers/staging/emxx_udc/emxx_udc.c:2754:3: warning: Value stored to 'data' is never read [clang-analyzer-deadcode.DeadStores]
data = _nbu2ss_readl(&preg->EP0_LENGTH) & EP0_LDATA;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/staging/emxx_udc/emxx_udc.c:2754:3: note: Value stored to 'data' is never read
data = _nbu2ss_readl(&preg->EP0_LENGTH) & EP0_LDATA;
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/staging/emxx_udc/emxx_udc.c:2757:3: warning: Value stored to 'data' is never read [clang-analyzer-deadcode.DeadStores]
data = _nbu2ss_readl(&preg->EP_REGS[ep->epnum - 1].EP_LEN_DCNT)
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/staging/emxx_udc/emxx_udc.c:2757:3: note: Value stored to 'data' is never read
data = _nbu2ss_readl(&preg->EP_REGS[ep->epnum - 1].EP_LEN_DCNT)
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/staging/emxx_udc/emxx_udc.c:2783:11: warning: Access to field 'dev' results in a dereference of a null pointer (loaded from field 'udc') [clang-analyzer-core.NullDereference]
dev_err(ep->udc->dev, "%s, bad udc\n", __func__);
^
include/linux/dev_printk.h:112:11: note: expanded from macro 'dev_err'
_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
drivers/staging/emxx_udc/emxx_udc.c:2774:6: note: Assuming '_ep' is non-null
if (!_ep) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2774:2: note: Taking false branch
if (!_ep) {
^
drivers/staging/emxx_udc/emxx_udc.c:2779:7: note: Left side of '&&' is false
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:61: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
drivers/staging/emxx_udc/emxx_udc.c:2779:7: note: Taking false branch
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:308:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/staging/emxx_udc/emxx_udc.c:2779:7: note: Loop condition is false. Exiting loop
ep = container_of(_ep, struct nbu2ss_ep, ep);
^
include/linux/kernel.h:495:2: note: expanded from macro 'container_of'
BUILD_BUG_ON_MSG(!__same_type(*(ptr), ((type *)0)->member) && \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:328:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:316:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:306:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/staging/emxx_udc/emxx_udc.c:2782:6: note: Assuming 'udc' is null
if (!udc) {
^~~~
drivers/staging/emxx_udc/emxx_udc.c:2782:2: note: Taking true branch
if (!udc) {
^
drivers/staging/emxx_udc/emxx_udc.c:2783:11: note: Access to field 'dev' results in a dereference of a null pointer (loaded from field 'udc')
dev_err(ep->udc->dev, "%s, bad udc\n", __func__);
^
include/linux/dev_printk.h:112:11: note: expanded from macro 'dev_err'
_dev_err(dev, dev_fmt(fmt), ##__VA_ARGS__)
^~~
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
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.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
4 warnings generated.
Suppressed 4 warnings (4 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
vim +29 drivers/gpu/host1x/intr.c
7ede0b0bf3e2595 Terje Bergstrom 2013-03-22 26
7ede0b0bf3e2595 Terje Bergstrom 2013-03-22 27 static void waiter_release(struct kref *kref)
7ede0b0bf3e2595 Terje Bergstrom 2013-03-22 28 {
7ede0b0bf3e2595 Terje Bergstrom 2013-03-22 @29 kfree(container_of(kref, struct host1x_waitlist, refcount));
7ede0b0bf3e2595 Terje Bergstrom 2013-03-22 30 }
7ede0b0bf3e2595 Terje Bergstrom 2013-03-22 31
:::::: The code at line 29 was first introduced by commit
:::::: 7ede0b0bf3e2595d40d6195b6fe4c4dcef438830 gpu: host1x: Add syncpoint wait and interrupts
:::::: TO: Terje Bergstrom <tbergstrom@nvidia.com>
:::::: CC: Thierry Reding <thierry.reding@avionic-design.de>
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
[-- Attachment #2: config.gz --]
[-- Type: application/gzip, Size: 25141 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-04-18 11:55 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-18 11:55 drivers/gpu/host1x/intr.c:29:2: warning: Attempt to free released memory [clang-analyzer-unix.Malloc] kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2021-11-19 1:56 kernel test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.