All of lore.kernel.org
 help / color / mirror / Atom feed
* [daniel-thompson:clang-analyzer/initial_review 7/7] security/apparmor/path.c:60:7: warning: Dereference of null pointer [clang-analyzer-core.NullDereference]
@ 2022-05-05 20:06 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-05-05 20:06 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 73209 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: Daniel Thompson <daniel.thompson@linaro.org>

tree:   https://git.linaro.org/people/daniel.thompson/linux.git clang-analyzer/initial_review
head:   ad6525bf355a301ca52b1dc3639fa340409c79b9
commit: ad6525bf355a301ca52b1dc3639fa340409c79b9 [7/7] [RFC] linux/err.h: Refactor IS_ERR_VALUE(x) to improve clang reasoning
:::::: branch date: 32 hours ago
:::::: commit date: 32 hours ago
config: i386-randconfig-c001 (https://download.01.org/0day-ci/archive/20220506/202205060303.K0fJbaUa-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 5e004fb787698440a387750db7f8028e7cb14cfc)
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
        git remote add daniel-thompson https://git.linaro.org/people/daniel.thompson/linux.git
        git fetch --no-tags daniel-thompson clang-analyzer/initial_review
        git checkout ad6525bf355a301ca52b1dc3639fa340409c79b9
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 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 >>)
   security/apparmor/label.c:204:2: note: Taking true branch
           AA_BUG(!vec);
           ^
   security/apparmor/include/lib.h:37:3: note: expanded from macro 'AA_BUG'
                   AA_BUG_FMT((X), "" args);                                   \
                   ^
   security/apparmor/include/lib.h:44:37: note: expanded from macro 'AA_BUG_FMT'
   #define AA_BUG_FMT(X, fmt, args...) no_printk(fmt, ##args)
                                       ^
   include/linux/printk.h:132:3: note: expanded from macro 'no_printk'
                   printk(fmt, ##__VA_ARGS__);             \
                   ^
   note: (skipping 1 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:370:3: note: expanded from macro '__printk_index_emit'
                   if (__builtin_constant_p(_fmt) && __builtin_constant_p(_level)) { \
                   ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   security/apparmor/label.c:204:2: note: Loop condition is false.  Exiting loop
           AA_BUG(!vec);
           ^
   security/apparmor/include/lib.h:37:3: note: expanded from macro 'AA_BUG'
                   AA_BUG_FMT((X), "" args);                                   \
                   ^
   security/apparmor/include/lib.h:44:37: note: expanded from macro 'AA_BUG_FMT'
   #define AA_BUG_FMT(X, fmt, args...) no_printk(fmt, ##args)
                                       ^
   include/linux/printk.h:132:3: note: expanded from macro 'no_printk'
                   printk(fmt, ##__VA_ARGS__);             \
                   ^
   include/linux/printk.h:446:26: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:369:2: note: expanded from macro '__printk_index_emit'
           do {                                                            \
           ^
   security/apparmor/label.c:204:2: note: Loop condition is false.  Exiting loop
           AA_BUG(!vec);
           ^
   security/apparmor/include/lib.h:35:2: note: expanded from macro 'AA_BUG'
           do {                                                                \
           ^
   security/apparmor/label.c:206:2: note: Loop condition is false. Execution continues on line 211
           for (i = 0; i < n; i++) {
           ^
   security/apparmor/label.c:1100:6: note: Returning from 'vec_unconfined'
           if (vec_unconfined(new->vec, new->size))
               ^
   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) ?                                        \
            ^~~~
   security/apparmor/label.c:1100:2: note: '?' condition is true
           if (vec_unconfined(new->vec, new->size))
           ^
   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) ?                                        \
           ^
   security/apparmor/label.c:1100:2: note: Taking true branch
           if (vec_unconfined(new->vec, new->size))
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   security/apparmor/label.c:1102:7: note: Access to field 'ns' results in a dereference of a null pointer
           ls = labels_set(new);
                ^
   security/apparmor/include/label.h:146:25: note: expanded from macro 'labels_set'
   #define labels_set(X) (&labels_ns(X)->labels)
                           ^~~~~~~~~~~~
   security/apparmor/include/label.h:145:22: note: expanded from macro 'labels_ns'
   #define labels_ns(X) (vec_ns(&((X)->vec[0]), (X)->size))
                        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 1 warnings (1 with check filters).
   1 warning generated.
   security/apparmor/lib.c:501:4: 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(hname, name);
                           ^~~~~~
   security/apparmor/lib.c:501:4: 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(hname, name);
                           ^~~~~~
   4 warnings generated.
>> security/apparmor/path.c:60:7: warning: Dereference of null pointer [clang-analyzer-core.NullDereference]
                   if (**name == '/')
                       ^
   security/apparmor/path.c:94:15: note: Assuming the condition is false
           int isdir = (flags & PATH_IS_DIR) ? 1 : 0;
                        ^~~~~~~~~~~~~~~~~~~
   security/apparmor/path.c:94:14: note: '?' condition is false
           int isdir = (flags & PATH_IS_DIR) ? 1 : 0;
                       ^
   security/apparmor/path.c:97:2: note: Assuming the condition is false
           if (path->mnt->mnt_flags & MNT_INTERNAL) {
           ^
   include/linux/compiler.h:56:45: 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))
                                                      ^~~~
   security/apparmor/path.c:97:2: note: '?' condition is false
           if (path->mnt->mnt_flags & MNT_INTERNAL) {
           ^
   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))
                                 ^
   security/apparmor/path.c:97:2: note: '?' condition is true
           if (path->mnt->mnt_flags & MNT_INTERNAL) {
           ^
   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) ?                                        \
           ^
   security/apparmor/path.c:97:2: note: Taking true branch
           if (path->mnt->mnt_flags & MNT_INTERNAL) {
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   security/apparmor/path.c:99:3: note: Value assigned to 'res'
                   res = dentry_path(path->dentry, buf, buflen);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   security/apparmor/path.c:100:3: note: Assigning the value of 'res'
                   *name = res;
                   ^~~~~~~~~~~
   security/apparmor/path.c:101:7: note: Calling 'IS_ERR'
                   if (IS_ERR(res)) {
                       ^
   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))
                                                      ^~~~
   include/linux/err.h:89:9: note: Assuming '_l' is equal to 0
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:58:3: note: expanded from macro 'IS_ERR_VALUE'
                   _l != 0 && -MAX_ERRNO <= _l;                                   \
                   ^~~~~~~
   include/linux/compiler.h:48:41: note: expanded from macro 'unlikely'
   #  define unlikely(x)   (__branch_check__(x, 0, __builtin_constant_p(x)))
                                             ^
   include/linux/compiler.h:33:34: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                         ^
   include/linux/err.h:89:9: note: Left side of '&&' is false
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:58:11: note: expanded from macro 'IS_ERR_VALUE'
                   _l != 0 && -MAX_ERRNO <= _l;                                   \
                           ^
   include/linux/err.h:89:9: note: '_l' is equal to 0
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:58:3: note: expanded from macro 'IS_ERR_VALUE'
                   _l != 0 && -MAX_ERRNO <= _l;                                   \
                   ^~
   include/linux/compiler.h:48:68: note: expanded from macro 'unlikely'
   #  define unlikely(x)   (__branch_check__(x, 0, __builtin_constant_p(x)))
                                                                        ^
   include/linux/compiler.h:35:19: note: expanded from macro '__branch_check__'
                                                expect, is_constant);      \
                                                        ^~~~~~~~~~~
   include/linux/err.h:89:9: note: Left side of '&&' is false
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:58:11: note: expanded from macro 'IS_ERR_VALUE'
                   _l != 0 && -MAX_ERRNO <= _l;                                   \
                           ^
   security/apparmor/path.c:101:7: note: Returning from 'IS_ERR'
                   if (IS_ERR(res)) {
                       ^
   include/linux/compiler.h:56:47: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
--
                         ^
   security/apparmor/path.c:105:7: note: Assuming field 's_magic' is not equal to 40864
                   if (path->dentry->d_sb->s_magic == PROC_SUPER_MAGIC &&
                       ^
   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))
                                                      ^~~~
   security/apparmor/path.c:105:55: note: Left side of '&&' is false
                   if (path->dentry->d_sb->s_magic == PROC_SUPER_MAGIC &&
                                                                       ^
   security/apparmor/path.c:105:3: note: '?' condition is false
                   if (path->dentry->d_sb->s_magic == PROC_SUPER_MAGIC &&
                   ^
   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))
                                 ^
   security/apparmor/path.c:105:27: note: Field 's_magic' is not equal to 40864
                   if (path->dentry->d_sb->s_magic == PROC_SUPER_MAGIC &&
                                           ^
   security/apparmor/path.c:105:55: note: Left side of '&&' is false
                   if (path->dentry->d_sb->s_magic == PROC_SUPER_MAGIC &&
                                                                       ^
   security/apparmor/path.c:105:3: note: '?' condition is false
                   if (path->dentry->d_sb->s_magic == PROC_SUPER_MAGIC &&
                   ^
   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) ?                                        \
           ^
   security/apparmor/path.c:105:3: note: Taking false branch
                   if (path->dentry->d_sb->s_magic == PROC_SUPER_MAGIC &&
                   ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   security/apparmor/path.c:113:12: note: Calling 'disconnect'
                           error = disconnect(path, buf, name, flags,
                                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   security/apparmor/path.c:53:6: note: Assuming the condition is false
           if (!(flags & PATH_CONNECT_PATH) &&
               ^
   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))
                                                      ^~~~
   security/apparmor/path.c:53:35: note: Left side of '&&' is false
           if (!(flags & PATH_CONNECT_PATH) &&
                                            ^
   security/apparmor/path.c:53:2: note: '?' condition is false
           if (!(flags & PATH_CONNECT_PATH) &&
           ^
   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))
                                 ^
   security/apparmor/path.c:53:35: note: Left side of '&&' is false
           if (!(flags & PATH_CONNECT_PATH) &&
                                            ^
   security/apparmor/path.c:53:2: note: '?' condition is false
           if (!(flags & PATH_CONNECT_PATH) &&
           ^
   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) ?                                        \
           ^
   security/apparmor/path.c:53:2: note: Taking false branch
           if (!(flags & PATH_CONNECT_PATH) &&
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   security/apparmor/path.c:63:7: note: Dereference of null pointer
                   if (**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:52: note: expanded from macro '__trace_if_var'
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                                      ^~~~
>> security/apparmor/path.c:106:7: warning: Null pointer passed as 1st argument to string comparison function [clang-analyzer-unix.cstring.NullArg]
                       strncmp(*name, "/sys/", 5) == 0) {
                       ^
   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))
                                                      ^~~~
   security/apparmor/path.c:94:15: note: Assuming the condition is false
           int isdir = (flags & PATH_IS_DIR) ? 1 : 0;
                        ^~~~~~~~~~~~~~~~~~~
   security/apparmor/path.c:94:14: note: '?' condition is false
           int isdir = (flags & PATH_IS_DIR) ? 1 : 0;
                       ^
   security/apparmor/path.c:97:2: note: Assuming the condition is false
           if (path->mnt->mnt_flags & MNT_INTERNAL) {
           ^
   include/linux/compiler.h:56:45: 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))
                                                      ^~~~
   security/apparmor/path.c:97:2: note: '?' condition is false
           if (path->mnt->mnt_flags & MNT_INTERNAL) {
           ^
   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))
                                 ^
   security/apparmor/path.c:97:2: note: '?' condition is true
           if (path->mnt->mnt_flags & MNT_INTERNAL) {
           ^
   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) ?                                        \
           ^
   security/apparmor/path.c:97:2: note: Taking true branch
           if (path->mnt->mnt_flags & MNT_INTERNAL) {
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   security/apparmor/path.c:99:3: note: Value assigned to 'res'
                   res = dentry_path(path->dentry, buf, buflen);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   security/apparmor/path.c:100:3: note: Assigning the value of 'res'
                   *name = res;
                   ^~~~~~~~~~~
   security/apparmor/path.c:101:7: note: Calling 'IS_ERR'
                   if (IS_ERR(res)) {
                       ^
   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))
                                                      ^~~~
   include/linux/err.h:89:9: note: Assuming '_l' is equal to 0
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:58:3: note: expanded from macro 'IS_ERR_VALUE'
                   _l != 0 && -MAX_ERRNO <= _l;                                   \
                   ^~~~~~~
   include/linux/compiler.h:48:41: note: expanded from macro 'unlikely'
   #  define unlikely(x)   (__branch_check__(x, 0, __builtin_constant_p(x)))
                                             ^
   include/linux/compiler.h:33:34: note: expanded from macro '__branch_check__'
                           ______r = __builtin_expect(!!(x), expect);      \
                                                         ^
   include/linux/err.h:89:9: note: Left side of '&&' is false
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:58:11: note: expanded from macro 'IS_ERR_VALUE'
                   _l != 0 && -MAX_ERRNO <= _l;                                   \
                           ^
   include/linux/err.h:89:9: note: '_l' is equal to 0
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:58:3: note: expanded from macro 'IS_ERR_VALUE'
                   _l != 0 && -MAX_ERRNO <= _l;                                   \
                   ^~
   include/linux/compiler.h:48:68: note: expanded from macro 'unlikely'
   #  define unlikely(x)   (__branch_check__(x, 0, __builtin_constant_p(x)))
                                                                        ^
   include/linux/compiler.h:35:19: note: expanded from macro '__branch_check__'
                                                expect, is_constant);      \
                                                        ^~~~~~~~~~~
   include/linux/err.h:89:9: note: Left side of '&&' is false
           return IS_ERR_VALUE((unsigned long)ptr);
                  ^
   include/linux/err.h:58:11: note: expanded from macro 'IS_ERR_VALUE'
                   _l != 0 && -MAX_ERRNO <= _l;                                   \
--
   #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/nvdimm/namespace_devs.c:2275:2: note: Taking false branch
           if (!nsblk)
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   drivers/nvdimm/namespace_devs.c:2285:6: note: Assuming field 'uuid' is non-null
           if (!nsblk->uuid)
               ^
   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/nvdimm/namespace_devs.c:2285:2: note: '?' condition is false
           if (!nsblk->uuid)
           ^
   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/nvdimm/namespace_devs.c:2285:14: note: Field 'uuid' is non-null
           if (!nsblk->uuid)
                       ^
   drivers/nvdimm/namespace_devs.c:2285:2: note: '?' condition is false
           if (!nsblk->uuid)
           ^
   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/nvdimm/namespace_devs.c:2285:2: note: Taking false branch
           if (!nsblk->uuid)
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   drivers/nvdimm/namespace_devs.c:2288:2: note: Assuming the condition is true
           if (name[0]) {
           ^
   include/linux/compiler.h:56:45: 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/nvdimm/namespace_devs.c:2288:2: note: '?' condition is false
           if (name[0]) {
           ^
   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/nvdimm/namespace_devs.c:2288:2: note: '?' condition is false
           if (name[0]) {
           ^
   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/nvdimm/namespace_devs.c:2288:2: note: Taking false branch
           if (name[0]) {
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   drivers/nvdimm/namespace_devs.c:2293:8: note: Calling 'nsblk_add_resource'
           res = nsblk_add_resource(nd_region, ndd, nsblk,
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/nvdimm/namespace_devs.c:2089:43: note: The left operand of '+' is a garbage value
                           sizeof(void *) * (nsblk->num_resources + 1),
                                             ~~~~~~~~~~~~~~~~~~~~ ^
   1 warning generated.
   kernel/trace/trace_printk.c:77: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(fmt, *iter);
                                   ^~~~~~
   kernel/trace/trace_printk.c:77: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(fmt, *iter);
                                   ^~~~~~
   1 warning generated.
>> fs/autofs/waitq.c:358:14: warning: Null pointer passed as 1st argument to string length function [clang-analyzer-unix.cstring.NullArg]
                   qstr.len = strlen(p);
                              ^      ~
   fs/autofs/waitq.c:315:2: note: Assuming the condition is true
           if (sbi->flags & AUTOFS_SBI_CATATONIC)
           ^
   include/linux/compiler.h:56:45: 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))
                                                      ^~~~
   fs/autofs/waitq.c:315:2: note: '?' condition is false
           if (sbi->flags & AUTOFS_SBI_CATATONIC)
           ^
   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))
                                 ^
   fs/autofs/waitq.c:315:2: note: '?' condition is false
           if (sbi->flags & AUTOFS_SBI_CATATONIC)
           ^
   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) ?                                        \
           ^
   fs/autofs/waitq.c:315:2: note: Taking false branch
           if (sbi->flags & AUTOFS_SBI_CATATONIC)
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   fs/autofs/waitq.c:325:6: note: Assuming 'pid' is not equal to 0
           if (pid == 0 || tgid == 0)
               ^
   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))
                                                      ^~~~
   fs/autofs/waitq.c:325:6: note: Left side of '||' is false
           if (pid == 0 || tgid == 0)
               ^
   fs/autofs/waitq.c:325:18: note: Assuming 'tgid' is not equal to 0
           if (pid == 0 || tgid == 0)
                           ^
   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))
                                                      ^~~~
   fs/autofs/waitq.c:325:2: note: '?' condition is false
           if (pid == 0 || tgid == 0)
           ^
   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))
                                 ^
   fs/autofs/waitq.c:325:6: note: 'pid' is not equal to 0
           if (pid == 0 || tgid == 0)
               ^
   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) ?                                        \
            ^~~~
   fs/autofs/waitq.c:325:6: note: Left side of '||' is false
           if (pid == 0 || tgid == 0)
               ^
   fs/autofs/waitq.c:325:18: note: 'tgid' is not equal to 0
           if (pid == 0 || tgid == 0)
                           ^
   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) ?                                        \
            ^~~~
   fs/autofs/waitq.c:325:2: note: '?' condition is false
           if (pid == 0 || tgid == 0)
           ^
   include/linux/compiler.h:56:28: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
--
   include/linux/printk.h:446:26: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:370:7: note: expanded from macro '__printk_index_emit'
                   if (__builtin_constant_p(_fmt) && __builtin_constant_p(_level)) { \
                       ^
   include/linux/hid.h:1036:3: note: Taking true branch
                   pr_warn_ratelimited("%s: Invalid code %d type %d\n",
                   ^
   include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:640:3: note: expanded from macro 'printk_ratelimited'
                   printk(fmt, ##__VA_ARGS__);                             \
                   ^
   include/linux/printk.h:446:26: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:370:3: note: expanded from macro '__printk_index_emit'
                   if (__builtin_constant_p(_fmt) && __builtin_constant_p(_level)) { \
                   ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   include/linux/hid.h:1036:3: note: '?' condition is true
                   pr_warn_ratelimited("%s: Invalid code %d type %d\n",
                   ^
   include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:640:3: note: expanded from macro 'printk_ratelimited'
                   printk(fmt, ##__VA_ARGS__);                             \
                   ^
   include/linux/printk.h:446:26: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:379:12: note: expanded from macro '__printk_index_emit'
                                   .fmt = __builtin_constant_p(_fmt) ? (_fmt) : NULL, \
                                          ^
   include/linux/hid.h:1036:3: note: '?' condition is true
                   pr_warn_ratelimited("%s: Invalid code %d type %d\n",
                   ^
   include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:640:3: note: expanded from macro 'printk_ratelimited'
                   printk(fmt, ##__VA_ARGS__);                             \
                   ^
   include/linux/printk.h:446:26: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:383:14: note: expanded from macro '__printk_index_emit'
                                   .level = __builtin_constant_p(_level) ? (_level) : NULL, \
                                            ^
   include/linux/hid.h:1036:3: note: Loop condition is false.  Exiting loop
                   pr_warn_ratelimited("%s: Invalid code %d type %d\n",
                   ^
   include/linux/printk.h:656:2: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
           ^
   include/linux/printk.h:640:3: note: expanded from macro 'printk_ratelimited'
                   printk(fmt, ##__VA_ARGS__);                             \
                   ^
   include/linux/printk.h:446:26: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                            ^
   include/linux/printk.h:417:3: note: expanded from macro 'printk_index_wrap'
                   __printk_index_emit(_fmt, NULL, NULL);                  \
                   ^
   include/linux/printk.h:369:2: note: expanded from macro '__printk_index_emit'
           do {                                                            \
           ^
   include/linux/hid.h:1037: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:656:49: note: expanded from macro 'pr_warn_ratelimited'
           printk_ratelimited(KERN_WARNING pr_fmt(fmt), ##__VA_ARGS__)
                                                          ^~~~~~~~~~~
   include/linux/printk.h:640:17: note: expanded from macro 'printk_ratelimited'
                   printk(fmt, ##__VA_ARGS__);                             \
                                 ^~~~~~~~~~~
   include/linux/printk.h:446:60: note: expanded from macro 'printk'
   #define printk(fmt, ...) printk_index_wrap(_printk, fmt, ##__VA_ARGS__)
                                                              ^~~~~~~~~~~
   include/linux/printk.h:418:19: note: expanded from macro 'printk_index_wrap'
                   _p_func(_fmt, ##__VA_ARGS__);                           \
                                   ^~~~~~~~~~~
   1 warning generated.
>> drivers/hid/uhid.c:519:2: warning: Null pointer passed as 1st argument to string copy function [clang-analyzer-unix.cstring.NullArg]
           strncpy(hid->name, ev->u.create2.name, len);
           ^
   drivers/hid/uhid.c:729:6: note: Assuming the condition is false
           if (count < sizeof(__u32))
               ^
   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/hid/uhid.c:729:2: note: '?' condition is false
           if (count < sizeof(__u32))
           ^
   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/hid/uhid.c:729:2: note: '?' condition is false
           if (count < sizeof(__u32))
           ^
   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/hid/uhid.c:729:2: note: Taking false branch
           if (count < sizeof(__u32))
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   drivers/hid/uhid.c:733:2: note: Assuming 'ret' is 0
           if (ret)
           ^
   include/linux/compiler.h:56:45: 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/hid/uhid.c:733:2: note: '?' condition is false
           if (ret)
           ^
   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/hid/uhid.c:733:6: note: 'ret' is 0
           if (ret)
               ^
   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/hid/uhid.c:733:2: note: '?' condition is false
           if (ret)
           ^
   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/hid/uhid.c:733:2: note: Taking false branch
           if (ret)
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   drivers/hid/uhid.c:737:8: note: Assuming '__UNIQUE_ID___x231' is >= '__UNIQUE_ID___y232'
           len = min(count, sizeof(uhid->input_buf));
                 ^
   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))
--
   #define __trace_if_var(cond) (__builtin_constant_p(cond) ? (cond) : __trace_if_value(cond))
                                 ^
   sound/soc/soc-dapm.c:1655:6: note: 'power_up' is true
           if (power_up)
               ^
   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) ?                                        \
            ^~~~
   sound/soc/soc-dapm.c:1655:2: note: '?' condition is true
           if (power_up)
           ^
   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) ?                                        \
           ^
   sound/soc/soc-dapm.c:1655:2: note: Taking true branch
           if (power_up)
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   sound/soc/soc-dapm.c:1660:2: note: Loop condition is false. Execution continues on line 1729
           list_for_each_entry_safe(w, n, list, power_list) {
           ^
   include/linux/list.h:725:2: note: expanded from macro 'list_for_each_entry_safe'
           for (pos = list_first_entry(head, typeof(*pos), member),        \
           ^
   sound/soc/soc-dapm.c:1729:6: note: Assuming the condition is false
           if (!list_empty(&pending))
               ^
   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))
                                                      ^~~~
   sound/soc/soc-dapm.c:1729:2: note: '?' condition is false
           if (!list_empty(&pending))
           ^
   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))
                                 ^
   sound/soc/soc-dapm.c:1729:6: note: Assuming the condition is true
           if (!list_empty(&pending))
               ^
   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) ?                                        \
            ^~~~
   sound/soc/soc-dapm.c:1729:2: note: '?' condition is true
           if (!list_empty(&pending))
           ^
   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) ?                                        \
           ^
   sound/soc/soc-dapm.c:1729:2: note: Taking true branch
           if (!list_empty(&pending))
           ^
   include/linux/compiler.h:56:23: note: expanded from macro 'if'
   #define if(cond, ...) if ( __trace_if_var( !!(cond , ## __VA_ARGS__) ) )
                         ^
   sound/soc/soc-dapm.c:1730:3: note: Calling 'dapm_seq_run_coalesced'
                   dapm_seq_run_coalesced(card, &pending);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   sound/soc/soc-dapm.c:1594:6: note: Assigned value is garbage or undefined
           reg = w->reg;
               ^ ~~~~~~
   1 warning generated.
   drivers/nvme/target/core.c:1124:10: warning: Although the value stored to 'cc_css' is used in the enclosing expression, the value is never actually read from 'cc_css' [clang-analyzer-deadcode.DeadStores]
           switch (cc_css <<= NVME_CC_CSS_SHIFT) {
                   ^          ~~~~~~~~~~~~~~~~~
   drivers/nvme/target/core.c:1124:10: note: Although the value stored to 'cc_css' is used in the enclosing expression, the value is never actually read from 'cc_css'
           switch (cc_css <<= NVME_CC_CSS_SHIFT) {
                   ^          ~~~~~~~~~~~~~~~~~
   2 warnings generated.
>> include/net/neighbour.h:592:3: warning: Null pointer passed as 2nd argument to memory copy function [clang-analyzer-unix.cstring.NullArg]
                   memcpy(dst, n->ha, dev->addr_len);
                   ^
   arch/x86/include/asm/string_32.h:150:25: note: expanded from macro 'memcpy'
   #define memcpy(t, f, n) __builtin_memcpy(t, f, n)
                           ^
   net/sched/sch_teql.c:265:6: note: Left side of '||' is false
           if (rcu_access_pointer(txq->qdisc) == &noop_qdisc)
               ^
   include/linux/rcupdate.h:495:31: note: expanded from macro 'rcu_access_pointer'
   #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
                                 ^
   include/linux/rcupdate.h:384:43: note: expanded from macro '__rcu_access_pointer'
           typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
                                                    ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
                              ^
   include/linux/compiler_types.h:313:3: note: expanded from macro '__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   net/sched/sch_teql.c:265:6: note: Left side of '||' is false
           if (rcu_access_pointer(txq->qdisc) == &noop_qdisc)
               ^
   include/linux/rcupdate.h:495:31: note: expanded from macro 'rcu_access_pointer'
   #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
                                 ^
   include/linux/rcupdate.h:384:43: note: expanded from macro '__rcu_access_pointer'
           typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
                                                    ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
                              ^
   include/linux/compiler_types.h:313:3: note: expanded from macro '__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   net/sched/sch_teql.c:265:6: note: Left side of '||' is true
           if (rcu_access_pointer(txq->qdisc) == &noop_qdisc)
               ^
   include/linux/rcupdate.h:495:31: note: expanded from macro 'rcu_access_pointer'
   #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
                                 ^
   include/linux/rcupdate.h:384:43: note: expanded from macro '__rcu_access_pointer'
           typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
                                                    ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
                              ^
   include/linux/compiler_types.h:314:28: note: expanded from macro '__native_word'
            sizeof(t) == sizeof(int) || sizeof(t) == sizeof(long))
                                     ^
   net/sched/sch_teql.c:265:6: note: '?' condition is true
           if (rcu_access_pointer(txq->qdisc) == &noop_qdisc)
               ^
   include/linux/rcupdate.h:495:31: note: expanded from macro 'rcu_access_pointer'
   #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
                                 ^
   include/linux/rcupdate.h:384:43: note: expanded from macro '__rcu_access_pointer'
           typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
                                                    ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   note: (skipping 3 expansions in backtrace; use -fmacro-backtrace-limit=0 to see all)
   include/linux/compiler_types.h:326:3: note: expanded from macro '__compiletime_assert'
                   if (!(condition))                                       \
                   ^
   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))
                                 ^
   net/sched/sch_teql.c:265:6: note: Left side of '||' is false
           if (rcu_access_pointer(txq->qdisc) == &noop_qdisc)
               ^
   include/linux/rcupdate.h:495:31: note: expanded from macro 'rcu_access_pointer'
   #define rcu_access_pointer(p) __rcu_access_pointer((p), __UNIQUE_ID(rcu), __rcu)
                                 ^
   include/linux/rcupdate.h:384:43: note: expanded from macro '__rcu_access_pointer'
           typeof(*p) *local = (typeof(*p) *__force)READ_ONCE(p); \
                                                    ^
   include/asm-generic/rwonce.h:49:2: note: expanded from macro 'READ_ONCE'
           compiletime_assert_rwonce_type(x);                              \
           ^
   include/asm-generic/rwonce.h:36:21: note: expanded from macro 'compiletime_assert_rwonce_type'
           compiletime_assert(__native_word(t) || sizeof(t) == sizeof(long long),  \
                              ^
   include/linux/compiler_types.h:313:3: note: expanded from macro '__native_word'
           (sizeof(t) == sizeof(char) || sizeof(t) == sizeof(short) || \
            ^
   net/sched/sch_teql.c:265:6: note: Left side of '||' is false

vim +60 security/apparmor/path.c

cdff264264254e John Johansen    2010-07-29   36  
bd35db8b8ca6e2 John Johansen    2014-07-25   37  /* If the path is not connected to the expected root,
bd35db8b8ca6e2 John Johansen    2014-07-25   38   * check if it is a sysctl and handle specially else remove any
bd35db8b8ca6e2 John Johansen    2014-07-25   39   * leading / that __d_path may have returned.
bd35db8b8ca6e2 John Johansen    2014-07-25   40   * Unless
bd35db8b8ca6e2 John Johansen    2014-07-25   41   *     specifically directed to connect the path,
bd35db8b8ca6e2 John Johansen    2014-07-25   42   * OR
bd35db8b8ca6e2 John Johansen    2014-07-25   43   *     if in a chroot and doing chroot relative paths and the path
bd35db8b8ca6e2 John Johansen    2014-07-25   44   *     resolves to the namespace root (would be connected outside
bd35db8b8ca6e2 John Johansen    2014-07-25   45   *     of chroot) and specifically directed to connect paths to
bd35db8b8ca6e2 John Johansen    2014-07-25   46   *     namespace root.
bd35db8b8ca6e2 John Johansen    2014-07-25   47   */
bd35db8b8ca6e2 John Johansen    2014-07-25   48  static int disconnect(const struct path *path, char *buf, char **name,
72c8a768641dc6 John Johansen    2017-05-22   49  		      int flags, const char *disconnected)
bd35db8b8ca6e2 John Johansen    2014-07-25   50  {
bd35db8b8ca6e2 John Johansen    2014-07-25   51  	int error = 0;
bd35db8b8ca6e2 John Johansen    2014-07-25   52  
bd35db8b8ca6e2 John Johansen    2014-07-25   53  	if (!(flags & PATH_CONNECT_PATH) &&
bd35db8b8ca6e2 John Johansen    2014-07-25   54  	    !(((flags & CHROOT_NSCONNECT) == CHROOT_NSCONNECT) &&
bd35db8b8ca6e2 John Johansen    2014-07-25   55  	      our_mnt(path->mnt))) {
bd35db8b8ca6e2 John Johansen    2014-07-25   56  		/* disconnected path, don't return pathname starting
bd35db8b8ca6e2 John Johansen    2014-07-25   57  		 * with '/'
bd35db8b8ca6e2 John Johansen    2014-07-25   58  		 */
bd35db8b8ca6e2 John Johansen    2014-07-25   59  		error = -EACCES;
bd35db8b8ca6e2 John Johansen    2014-07-25  @60  		if (**name == '/')
bd35db8b8ca6e2 John Johansen    2014-07-25   61  			*name = *name + 1;
72c8a768641dc6 John Johansen    2017-05-22   62  	} else {
72c8a768641dc6 John Johansen    2017-05-22   63  		if (**name != '/')
bd35db8b8ca6e2 John Johansen    2014-07-25   64  			/* CONNECT_PATH with missing root */
bd35db8b8ca6e2 John Johansen    2014-07-25   65  			error = prepend(name, *name - buf, "/", 1);
72c8a768641dc6 John Johansen    2017-05-22   66  		if (!error && disconnected)
72c8a768641dc6 John Johansen    2017-05-22   67  			error = prepend(name, *name - buf, disconnected,
72c8a768641dc6 John Johansen    2017-05-22   68  					strlen(disconnected));
72c8a768641dc6 John Johansen    2017-05-22   69  	}
bd35db8b8ca6e2 John Johansen    2014-07-25   70  
bd35db8b8ca6e2 John Johansen    2014-07-25   71  	return error;
bd35db8b8ca6e2 John Johansen    2014-07-25   72  }
bd35db8b8ca6e2 John Johansen    2014-07-25   73  
cdff264264254e John Johansen    2010-07-29   74  /**
cdff264264254e John Johansen    2010-07-29   75   * d_namespace_path - lookup a name associated with a given path
cdff264264254e John Johansen    2010-07-29   76   * @path: path to lookup  (NOT NULL)
cdff264264254e John Johansen    2010-07-29   77   * @buf:  buffer to store path to  (NOT NULL)
cdff264264254e John Johansen    2010-07-29   78   * @name: Returns - pointer for start of path name with in @buf (NOT NULL)
cdff264264254e John Johansen    2010-07-29   79   * @flags: flags controlling path lookup
72c8a768641dc6 John Johansen    2017-05-22   80   * @disconnected: string to prefix to disconnected paths
cdff264264254e John Johansen    2010-07-29   81   *
cdff264264254e John Johansen    2010-07-29   82   * Handle path name lookup.
cdff264264254e John Johansen    2010-07-29   83   *
cdff264264254e John Johansen    2010-07-29   84   * Returns: %0 else error code if path lookup fails
cdff264264254e John Johansen    2010-07-29   85   *          When no error the path name is returned in @name which points to
4af7c863fc85ad Randy Dunlap     2020-08-07   86   *          a position in @buf
cdff264264254e John Johansen    2010-07-29   87   */
4227c333f65cdd John Johansen    2017-05-23   88  static int d_namespace_path(const struct path *path, char *buf, char **name,
4227c333f65cdd John Johansen    2017-05-23   89  			    int flags, const char *disconnected)
cdff264264254e John Johansen    2010-07-29   90  {
cdff264264254e John Johansen    2010-07-29   91  	char *res;
02125a826459a6 Al Viro          2011-12-05   92  	int error = 0;
02125a826459a6 Al Viro          2011-12-05   93  	int connected = 1;
4227c333f65cdd John Johansen    2017-05-23   94  	int isdir = (flags & PATH_IS_DIR) ? 1 : 0;
4227c333f65cdd John Johansen    2017-05-23   95  	int buflen = aa_g_path_max - isdir;
cdff264264254e John Johansen    2010-07-29   96  
02125a826459a6 Al Viro          2011-12-05   97  	if (path->mnt->mnt_flags & MNT_INTERNAL) {
02125a826459a6 Al Viro          2011-12-05   98  		/* it's not mounted anywhere */
02125a826459a6 Al Viro          2011-12-05   99  		res = dentry_path(path->dentry, buf, buflen);
02125a826459a6 Al Viro          2011-12-05  100  		*name = res;
02125a826459a6 Al Viro          2011-12-05  101  		if (IS_ERR(res)) {
02125a826459a6 Al Viro          2011-12-05  102  			*name = buf;
02125a826459a6 Al Viro          2011-12-05  103  			return PTR_ERR(res);
02125a826459a6 Al Viro          2011-12-05  104  		}
02125a826459a6 Al Viro          2011-12-05  105  		if (path->dentry->d_sb->s_magic == PROC_SUPER_MAGIC &&
02125a826459a6 Al Viro          2011-12-05 @106  		    strncmp(*name, "/sys/", 5) == 0) {
02125a826459a6 Al Viro          2011-12-05  107  			/* TODO: convert over to using a per namespace
02125a826459a6 Al Viro          2011-12-05  108  			 * control instead of hard coded /proc
02125a826459a6 Al Viro          2011-12-05  109  			 */
4227c333f65cdd John Johansen    2017-05-23  110  			error = prepend(name, *name - buf, "/proc", 5);
4227c333f65cdd John Johansen    2017-05-23  111  			goto out;
bd35db8b8ca6e2 John Johansen    2014-07-25  112  		} else
4227c333f65cdd John Johansen    2017-05-23  113  			error = disconnect(path, buf, name, flags,
72c8a768641dc6 John Johansen    2017-05-22  114  					   disconnected);
4227c333f65cdd John Johansen    2017-05-23  115  		goto out;
02125a826459a6 Al Viro          2011-12-05  116  	}
02125a826459a6 Al Viro          2011-12-05  117  
02125a826459a6 Al Viro          2011-12-05  118  	/* resolve paths relative to chroot?*/
cdff264264254e John Johansen    2010-07-29  119  	if (flags & PATH_CHROOT_REL) {
02125a826459a6 Al Viro          2011-12-05  120  		struct path root;
44672e4fbd40e2 Nicholas Piggin  2010-08-18  121  		get_fs_root(current->fs, &root);
02125a826459a6 Al Viro          2011-12-05  122  		res = __d_path(path, &root, buf, buflen);
02125a826459a6 Al Viro          2011-12-05  123  		path_put(&root);
3372b68a3c9826 John Johansen    2012-02-16  124  	} else {
02125a826459a6 Al Viro          2011-12-05  125  		res = d_absolute_path(path, buf, buflen);
3372b68a3c9826 John Johansen    2012-02-16  126  		if (!our_mnt(path->mnt))
3372b68a3c9826 John Johansen    2012-02-16  127  			connected = 0;
3372b68a3c9826 John Johansen    2012-02-16  128  	}
cdff264264254e John Johansen    2010-07-29  129  
cdff264264254e John Johansen    2010-07-29  130  	/* handle error conditions - and still allow a partial path to
cdff264264254e John Johansen    2010-07-29  131  	 * be returned.
cdff264264254e John Johansen    2010-07-29  132  	 */
3372b68a3c9826 John Johansen    2012-02-16  133  	if (!res || IS_ERR(res)) {
4227c333f65cdd John Johansen    2017-05-23  134  		if (PTR_ERR(res) == -ENAMETOOLONG) {
4227c333f65cdd John Johansen    2017-05-23  135  			error = -ENAMETOOLONG;
4227c333f65cdd John Johansen    2017-05-23  136  			*name = buf;
4227c333f65cdd John Johansen    2017-05-23  137  			goto out;
4227c333f65cdd John Johansen    2017-05-23  138  		}
3372b68a3c9826 John Johansen    2012-02-16  139  		connected = 0;
fbba8d89acea5d John Johansen    2012-02-16  140  		res = dentry_path_raw(path->dentry, buf, buflen);
cdff264264254e John Johansen    2010-07-29  141  		if (IS_ERR(res)) {
cdff264264254e John Johansen    2010-07-29  142  			error = PTR_ERR(res);
cdff264264254e John Johansen    2010-07-29  143  			*name = buf;
cdff264264254e John Johansen    2010-07-29  144  			goto out;
e4f4e6ba5eaadb Vasyl Gomonovych 2019-07-26  145  		}
fbba8d89acea5d John Johansen    2012-02-16  146  	} else if (!our_mnt(path->mnt))
02125a826459a6 Al Viro          2011-12-05  147  		connected = 0;
cdff264264254e John Johansen    2010-07-29  148  
fbba8d89acea5d John Johansen    2012-02-16  149  	*name = res;
fbba8d89acea5d John Johansen    2012-02-16  150  
4227c333f65cdd John Johansen    2017-05-23  151  	if (!connected)
4227c333f65cdd John Johansen    2017-05-23  152  		error = disconnect(path, buf, name, flags, disconnected);
4227c333f65cdd John Johansen    2017-05-23  153  
e819ff519b2d74 John Johansen    2010-08-27  154  	/* Handle two cases:
e819ff519b2d74 John Johansen    2010-08-27  155  	 * 1. A deleted dentry && profile is not allowing mediation of deleted
e819ff519b2d74 John Johansen    2010-08-27  156  	 * 2. On some filesystems, newly allocated dentries appear to the
e819ff519b2d74 John Johansen    2010-08-27  157  	 *    security_path hooks as a deleted dentry except without an inode
e819ff519b2d74 John Johansen    2010-08-27  158  	 *    allocated.
e819ff519b2d74 John Johansen    2010-08-27  159  	 */
729b8a3dee2bc8 David Howells    2015-01-29  160  	if (d_unlinked(path->dentry) && d_is_positive(path->dentry) &&
4227c333f65cdd John Johansen    2017-05-23  161  	    !(flags & (PATH_MEDIATE_DELETED | PATH_DELEGATE_DELETED))) {
cdff264264254e John Johansen    2010-07-29  162  			error = -ENOENT;
cdff264264254e John Johansen    2010-07-29  163  			goto out;
cdff264264254e John Johansen    2010-07-29  164  	}
cdff264264254e John Johansen    2010-07-29  165  
cdff264264254e John Johansen    2010-07-29  166  out:
cdff264264254e John Johansen    2010-07-29  167  	/*
cdff264264254e John Johansen    2010-07-29  168  	 * Append "/" to the pathname.  The root directory is a special
cdff264264254e John Johansen    2010-07-29  169  	 * case; it already ends in slash.
cdff264264254e John Johansen    2010-07-29  170  	 */
4227c333f65cdd John Johansen    2017-05-23  171  	if (!error && isdir && ((*name)[1] != '\0' || (*name)[0] != '/'))
4227c333f65cdd John Johansen    2017-05-23  172  		strcpy(&buf[aa_g_path_max - 2], "/");
57fa1e18091e66 John Johansen    2012-02-16  173  
cdff264264254e John Johansen    2010-07-29  174  	return error;
cdff264264254e John Johansen    2010-07-29  175  }
cdff264264254e John Johansen    2010-07-29  176  

:::::: The code at line 60 was first introduced by commit
:::::: bd35db8b8ca6e27fc17a9057ef78e1ddfc0de351 apparmor: internal paths should be treated as disconnected

:::::: TO: John Johansen <john.johansen@canonical.com>
:::::: CC: John Johansen <john.johansen@canonical.com>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-05-05 20:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-05 20:06 [daniel-thompson:clang-analyzer/initial_review 7/7] security/apparmor/path.c:60:7: warning: Dereference of null pointer [clang-analyzer-core.NullDereference] 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.