CC: l...@lists.linux.dev
CC: kbuild-...@lists.01.org
BCC: l...@intel.com
CC: linux-ker...@vger.kernel.org
TO: Aaron Tomlin <atom...@redhat.com>
CC: Luis Chamberlain <mcg...@kernel.org>
CC: Christophe Leroy <christophe.le...@csgroup.eu>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git 
modules-testing
head:   2139ea23db5919966c90392bb0b994b80cefd4b6
commit: 4f244f3c74d1aee08609ab3cbb40e589d033677b [1/14] module: Move all into 
module/
:::::: branch date: 26 hours ago
:::::: commit date: 26 hours ago
config: arm-randconfig-c002-20220308 
(https://download.01.org/0day-ci/archive/20220309/202203090558.7bykqhzq-...@intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
d271fc04d5b97b12e6b797c6067d3c96a8d7470e)
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/mcgrof/linux.git/commit/?id=4f244f3c74d1aee08609ab3cbb40e589d033677b
        git remote add mcgrof 
https://git.kernel.org/pub/scm/linux/kernel/git/mcgrof/linux.git
        git fetch --no-tags mcgrof modules-testing
        git checkout 4f244f3c74d1aee08609ab3cbb40e589d033677b
        # 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 <l...@intel.com>


clang-analyzer warnings: (new ones prefixed by >>)
            ^~~~
   drivers/firmware/qemu_fw_cfg.c:500:6: note: Left side of '||' is false
           if (!dir || !target || !name || !*name)
               ^
   drivers/firmware/qemu_fw_cfg.c:500:26: note: 'name' is non-null
           if (!dir || !target || !name || !*name)
                                   ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                                                
        ^~~~
   include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
            ^~~~
   drivers/firmware/qemu_fw_cfg.c:500:6: note: Left side of '||' is false
           if (!dir || !target || !name || !*name)
               ^
   drivers/firmware/qemu_fw_cfg.c:500:2: note: '?' condition is false
           if (!dir || !target || !name || !*name)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ^
   include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                                       ^
   include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
           ^
   drivers/firmware/qemu_fw_cfg.c:500:2: note: Taking false branch
           if (!dir || !target || !name || !*name)
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   drivers/firmware/qemu_fw_cfg.c:505:6: note: Assuming 'name_copy' is non-null
           if (!name_copy)
               ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                      ^~~~
   drivers/firmware/qemu_fw_cfg.c:505:2: note: '?' condition is false
           if (!name_copy)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ^
   include/linux/compiler.h:58:31: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                 ^
   drivers/firmware/qemu_fw_cfg.c:505:7: note: 'name_copy' is non-null
           if (!name_copy)
                ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                                                 ^~~~
   include/linux/compiler.h:58:86: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                                                
        ^~~~
   include/linux/compiler.h:69:3: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
            ^~~~
   drivers/firmware/qemu_fw_cfg.c:505:2: note: '?' condition is false
           if (!name_copy)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ^
   include/linux/compiler.h:58:69: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                                       ^
   include/linux/compiler.h:69:2: note: expanded from macro '__trace_if_value'
           (cond) ?                                        \
           ^
   drivers/firmware/qemu_fw_cfg.c:505:2: note: Taking false branch
           if (!name_copy)
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   drivers/firmware/qemu_fw_cfg.c:509:10: note: Assuming 'tok' is non-null
           while ((tok = strsep(&p, "/")) && *tok) {
                   ^~~
   drivers/firmware/qemu_fw_cfg.c:509:9: note: Left side of '&&' is true
           while ((tok = strsep(&p, "/")) && *tok) {
                  ^
   drivers/firmware/qemu_fw_cfg.c:509:2: note: Loop condition is false. 
Execution continues on line 557
           while ((tok = strsep(&p, "/")) && *tok) {
           ^
   drivers/firmware/qemu_fw_cfg.c:558:2: note: Undefined or garbage value 
returned to caller
           return ret;
           ^      ~~~
   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.
   3 warnings generated.
>> kernel/module/decompress.c:215:2: warning: Value stored to 'error' is never 
>> read [clang-analyzer-deadcode.DeadStores]
           error = module_extend_max_pages(info, n_pages);
           ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   kernel/module/decompress.c:215:2: note: Value stored to 'error' is never read
           error = module_extend_max_pages(info, n_pages);
           ^       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   2 warnings generated.
   Suppressed 2 warnings (2 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   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/gadget/legacy/raw_gadget.c:389:2: note: Loop condition is false. 
 Exiting loop
           spin_lock_irqsave(&dev->lock, flags);
           ^
   include/linux/spinlock.h:379:2: note: expanded from macro 'spin_lock_irqsave'
           raw_spin_lock_irqsave(spinlock_check(lock), flags);     \
           ^
   include/linux/spinlock.h:264:3: note: expanded from macro 
'raw_spin_lock_irqsave'
                   _raw_spin_lock_irqsave(lock, flags);    \
                   ^
   include/linux/spinlock_api_up.h:69:45: note: expanded from macro 
'_raw_spin_lock_irqsave'
   #define _raw_spin_lock_irqsave(lock, flags)     __LOCK_IRQSAVE(lock, flags)
                                                   ^
   include/linux/spinlock_api_up.h:40:8: note: expanded from macro 
'__LOCK_IRQSAVE'
     do { local_irq_save(flags); __LOCK(lock); } while (0)
          ^
   include/linux/irqflags.h:221:3: note: expanded from macro 'local_irq_save'
                   raw_local_irq_save(flags);              \
                   ^
   include/linux/irqflags.h:176:2: note: expanded from macro 
'raw_local_irq_save'
           do {                                            \
           ^
   drivers/usb/gadget/legacy/raw_gadget.c:389:2: note: Assuming the condition 
is false
           spin_lock_irqsave(&dev->lock, flags);
           ^
   include/linux/spinlock.h:379:2: note: expanded from macro 'spin_lock_irqsave'
           raw_spin_lock_irqsave(spinlock_check(lock), flags);     \
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/spinlock.h:264:3: note: expanded from macro 
'raw_spin_lock_irqsave'
                   _raw_spin_lock_irqsave(lock, flags);    \
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/spinlock_api_up.h:69:45: note: expanded from macro 
'_raw_spin_lock_irqsave'
   #define _raw_spin_lock_irqsave(lock, flags)     __LOCK_IRQSAVE(lock, flags)
                                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/irqflags.h:222:7: note: expanded from macro 'local_irq_save'
                   if (!raw_irqs_disabled_flags(flags))    \
                   ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/compiler.h:58:52: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : 
__trace_if_value(cond))
                                                      ^~~~
   drivers/usb/gadget/legacy/raw_gadget.c:389:2: note: '?' condition is false
           spin_lock_irqsave(&dev->lock, flags);
           ^
   include/linux/spinlock.h:379:2: note: expanded from macro 'spin_lock_irqsave'
           raw_spin_lock_irqsave(spinlock_check(lock), flags);     \
           ^
   include/linux/spinlock.h:264:3: note: expanded from macro 
'raw_spin_lock_irqsave'
                   _raw_spin_lock_irqsave(lock, flags);    \
                   ^
   include/linux/spinlock_api_up.h:69:45: note: expanded from macro 
'_raw_spin_lock_irqsave'
   #define _raw_spin_lock_irqsave(lock, flags)     __LOCK_IRQSAVE(lock, flags)
                                                   ^
   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to 
see all)
   include/linux/irqflags.h:222:3: note: expanded from macro 'local_irq_save'
                   if (!raw_irqs_disabled_flags(flags))    \
                   ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                              ^

vim +/error +215 kernel/module/decompress.c

b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  203  
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  204  int 
module_decompress(struct load_info *info, const void *buf, size_t size)
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  205  {
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  206       
unsigned int n_pages;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  207       
ssize_t data_size;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  208       
int error;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  209  
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  210       
/*
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  211       
 * Start with number of pages twice as big as needed for
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  212       
 * compressed data.
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  213       
 */
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  214       
n_pages = DIV_ROUND_UP(size, PAGE_SIZE) * 2;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05 @215       
error = module_extend_max_pages(info, n_pages);
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  216  
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  217       
data_size = MODULE_DECOMPRESS_FN(info, buf, size);
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  218       
if (data_size < 0) {
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  219       
        error = data_size;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  220       
        goto err;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  221       
}
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  222  
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  223       
info->hdr = vmap(info->pages, info->used_pages, VM_MAP, PAGE_KERNEL);
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  224       
if (!info->hdr) {
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  225       
        error = -ENOMEM;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  226       
        goto err;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  227       
}
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  228  
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  229       
info->len = data_size;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  230       
return 0;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  231  
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  232  err:
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  233       
module_decompress_cleanup(info);
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  234       
return error;
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  235  }
b1ae6dc41eaaa9 kernel/module_decompress.c Dmitry Torokhov 2022-01-05  236  

:::::: The code at line 215 was first introduced by commit
:::::: b1ae6dc41eaaa98bb75671e0f3665bfda248c3e7 module: add in-kernel support 
for decompressing

:::::: TO: Dmitry Torokhov <dmitry.torok...@gmail.com>
:::::: CC: Luis Chamberlain <mcg...@kernel.org>

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-...@lists.01.org
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to