:::::: 
:::::: Manual check reason: "low confidence static check first_new_problem: 
fs/proc/task_mmu.c:964:28: warning: Dereference of null pointer 
[clang-analyzer-core.NullDereference]"
:::::: 

CC: [email protected]
BCC: [email protected]
TO: Ammar Faizi <[email protected]>

tree:   https://github.com/ammarfaizi2/linux-block 
google/android/kernel/common/android13-5.15
head:   754bb029c85fb4b18d198216540f75e635dde8d4
commit: 67cc8ce9a649a8407c8e815d03b88761c4ddfe67 [5484/5636] FROMLIST: mm: rcu 
safe vma freeing
:::::: branch date: 9 weeks ago
:::::: commit date: 2 months ago
config: x86_64-randconfig-c007 
(https://download.01.org/0day-ci/archive/20220605/[email protected]/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project 
b364c76683f8ef241025a9556300778c07b590c2)
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
        # 
https://github.com/ammarfaizi2/linux-block/commit/67cc8ce9a649a8407c8e815d03b88761c4ddfe67
        git remote add ammarfaizi2-block 
https://github.com/ammarfaizi2/linux-block
        git fetch --no-tags ammarfaizi2-block 
google/android/kernel/common/android13-5.15
        git checkout 67cc8ce9a649a8407c8e815d03b88761c4ddfe67
        # save the config file
        COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 
clang-analyzer 

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>


clang-analyzer warnings: (new ones prefixed by >>)
                   ^
   lib/vsprintf.c:1360:9: note: Assigned value is garbage or undefined
                           *p++ = temp[digits];
                                ^ ~~~~~~~~~~~~
   lib/vsprintf.c:1423:4: warning: Value stored to 'needcolon' is never read 
[clang-analyzer-deadcode.DeadStores]
                           needcolon = false;
                           ^           ~~~~~
   lib/vsprintf.c:1423:4: note: Value stored to 'needcolon' is never read
                           needcolon = false;
                           ^           ~~~~~
   lib/vsprintf.c:1791: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(p, *fourcc & BIT(31) ? " big-endian" : " little-endian");
           ^~~~~~
   lib/vsprintf.c:1791: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(p, *fourcc & BIT(31) ? " big-endian" : " little-endian");
           ^~~~~~
   Suppressed 11 warnings (11 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   drivers/acpi/acpica/nsrepair.c:264:8: warning: Dereference of null pointer 
[clang-analyzer-core.NullDereference]
                               return_object->common.reference_count;
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/acpica/nsrepair.c:125:2: note: 'return_object' initialized here
           union acpi_operand_object *return_object = *return_object_ptr;
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/acpica/nsrepair.c:139:6: note: Assuming 'predefined' is non-null
           if (predefined) {
               ^~~~~~~~~~
   drivers/acpi/acpica/nsrepair.c:139:2: note: Taking true branch
           if (predefined) {
           ^
   drivers/acpi/acpica/nsrepair.c:140:7: note: Assuming 'return_object' is null
                   if (!return_object) {
                       ^~~~~~~~~~~~~~
   drivers/acpi/acpica/nsrepair.c:140:3: note: Taking true branch
                   if (!return_object) {
                   ^
   drivers/acpi/acpica/nsrepair.c:148:7: note: Assuming 'status' is 0
                   if (ACPI_FAILURE(status)) {
                       ^
   include/acpi/acexcep.h:58:41: note: expanded from macro 'ACPI_FAILURE'
   #define ACPI_FAILURE(a)                 (a)
                                           ^~~
   drivers/acpi/acpica/nsrepair.c:148:3: note: Taking false branch
                   if (ACPI_FAILURE(status)) {
                   ^
   drivers/acpi/acpica/nsrepair.c:156:7: note: Assuming 'new_object' is non-null
                   if (new_object) {
                       ^~~~~~~~~~
   drivers/acpi/acpica/nsrepair.c:156:3: note: Taking true branch
                   if (new_object) {
                   ^
   drivers/acpi/acpica/nsrepair.c:157:4: note: Control jumps to line 258
                           goto object_repaired;
                           ^
   drivers/acpi/acpica/nsrepair.c:258:6: note: Assuming the condition is true
           if (package_index != ACPI_NOT_PACKAGE_ELEMENT) {
               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/acpica/nsrepair.c:258:2: note: Taking true branch
           if (package_index != ACPI_NOT_PACKAGE_ELEMENT) {
           ^
   drivers/acpi/acpica/nsrepair.c:262:7: note: Assuming the condition is true
                   if (!(info->return_flags & ACPI_OBJECT_WRAPPED)) {
                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/acpi/acpica/nsrepair.c:262:3: note: Taking true branch
                   if (!(info->return_flags & ACPI_OBJECT_WRAPPED)) {
                   ^
   drivers/acpi/acpica/nsrepair.c:264:8: note: Dereference of null pointer
                               return_object->common.reference_count;
                               ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   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.
   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.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   7 warnings generated.
>> fs/proc/task_mmu.c:964:28: warning: Dereference of null pointer 
>> [clang-analyzer-core.NullDereference]
           show_vma_header_prefix(m, priv->mm->mmap->vm_start,
                                     ^~~~~~~~~~~~~~~~~~~~~~~~
   fs/proc/task_mmu.c:878:6: note: Assuming field 'task' is non-null
           if (!priv->task)
               ^~~~~~~~~~~
   fs/proc/task_mmu.c:878:2: note: Taking false branch
           if (!priv->task)
           ^
   fs/proc/task_mmu.c:882:6: note: Assuming 'mm' is non-null
           if (!mm || !mmget_not_zero(mm)) {
               ^~~
   fs/proc/task_mmu.c:882:6: note: Left side of '||' is false
   fs/proc/task_mmu.c:882:2: note: Taking false branch
           if (!mm || !mmget_not_zero(mm)) {
           ^
   fs/proc/task_mmu.c:889:8: note: Calling 'mmap_read_lock_killable'
           ret = mmap_read_lock_killable(mm);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/mmap_lock.h:179:2: note: Calling 
'__mmap_lock_trace_start_locking'
           __mmap_lock_trace_start_locking(mm, false);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/mmap_lock.h:36:2: note: Taking false branch
           if (tracepoint_enabled(mmap_lock_start_locking))
           ^
   include/linux/mmap_lock.h:38:1: note: Returning without writing to 
'mm->.mmap', which participates in a condition later
   }
   ^
   include/linux/mmap_lock.h:38:1: note: Returning without writing to 
'mm->.mmap'
   include/linux/mmap_lock.h:179:2: note: Returning from 
'__mmap_lock_trace_start_locking'
           __mmap_lock_trace_start_locking(mm, false);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/mmap_lock.h:180:10: note: Value assigned to field 'mmap', 
which participates in a condition later
           error = down_read_killable(&mm->mmap_lock);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/mmap_lock.h:180:10: note: Value assigned to field 'mmap'
           error = down_read_killable(&mm->mmap_lock);
                   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/mmap_lock.h:181:48: note: Assuming 'error' is 0, which 
participates in a condition later
           __mmap_lock_trace_acquire_returned(mm, false, !error);
                                                         ^~~~~~
   include/linux/mmap_lock.h:181:2: note: Calling 
'__mmap_lock_trace_acquire_returned'
           __mmap_lock_trace_acquire_returned(mm, false, !error);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/mmap_lock.h:43:2: note: Taking false branch
           if (tracepoint_enabled(mmap_lock_acquire_returned))
           ^
   include/linux/mmap_lock.h:45:1: note: Returning without writing to 
'mm->.mmap', which participates in a condition later
   }
   ^
   include/linux/mmap_lock.h:45:1: note: Returning without writing to 
'mm->.mmap'
   include/linux/mmap_lock.h:181:2: note: Returning from 
'__mmap_lock_trace_acquire_returned'
           __mmap_lock_trace_acquire_returned(mm, false, !error);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   include/linux/mmap_lock.h:182:2: note: Returning zero (loaded from 'error'), 
which participates in a condition later
           return error;
           ^~~~~~~~~~~~
   fs/proc/task_mmu.c:889:8: note: Returning from 'mmap_read_lock_killable'
           ret = mmap_read_lock_killable(mm);
                 ^~~~~~~~~~~~~~~~~~~~~~~~~~~
   fs/proc/task_mmu.c:890:6: note: 'ret' is 0
           if (ret)
               ^~~
   fs/proc/task_mmu.c:890:2: note: Taking false branch
           if (ret)
           ^
   fs/proc/task_mmu.c:895:29: note: Assuming pointer value is null
           for (vma = priv->mm->mmap; vma;) {
                                      ^~~
   fs/proc/task_mmu.c:895:2: note: Loop condition is false. Execution continues 
on line 964
           for (vma = priv->mm->mmap; vma;) {
           ^
   fs/proc/task_mmu.c:964:28: note: Dereference of null pointer
           show_vma_header_prefix(m, priv->mm->mmap->vm_start,
                                     ^~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   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.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   1 warning generated.
   Suppressed 1 warnings (1 with check filters).
   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.
   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.
   1 warning generated.
   Suppressed 1 warnings (1 in non-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.
   lib/glob.c:48:32: warning: Assigned value is garbage or undefined 
[clang-analyzer-core.uninitialized.Assign]
           char const *back_pat = NULL, *back_str = back_str;
                                         ^          ~~~~~~~~
   lib/glob.c:48:32: note: Assigned value is garbage or undefined
           char const *back_pat = NULL, *back_str = back_str;
                                         ^          ~~~~~~~~
--
                             ^~~~   ~~~~~~~~~~~~~~~~
   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.
   3 warnings generated.
   drivers/acpi/acpica/dbexec.c:390:2: warning: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
           strcpy(name_string, name);
           ^~~~~~
   drivers/acpi/acpica/dbexec.c:390:2: note: Call to function 'strcpy' is 
insecure as it does not provide bounding of the memory buffer. Replace 
unbounded copy functions with analogous functions that support length arguments 
such as 'strlcpy'. CWE-119
           strcpy(name_string, name);
           ^~~~~~
   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.
   drivers/acpi/acpica/dbhistry.c:73: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(acpi_gbl_history_buffer[acpi_gbl_next_history_index].command,
           ^~~~~~
   drivers/acpi/acpica/dbhistry.c:73: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(acpi_gbl_history_buffer[acpi_gbl_next_history_index].command,
           ^~~~~~
   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.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-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.
   Suppressed 3 warnings (3 in non-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.
   drivers/leds/led-triggers.c:276: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((char *)trig->name, name);
           ^~~~~~
   drivers/leds/led-triggers.c:276: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((char *)trig->name, name);
           ^~~~~~
   Suppressed 3 warnings (3 in non-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.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-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.
   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.
   drivers/net/phy/realtek.c:813:3: warning: Value stored to 'err' is never 
read [clang-analyzer-deadcode.DeadStores]
                   err = phy_write_paged(phydev, 0xa42, RTL9000A_GINMR, val);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/phy/realtek.c:813:3: note: Value stored to 'err' is never read
                   err = phy_write_paged(phydev, 0xa42, RTL9000A_GINMR, val);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/phy/realtek.c:820:3: warning: Value stored to 'err' is never 
read [clang-analyzer-deadcode.DeadStores]
                   err = rtl9000a_ack_interrupt(phydev);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   drivers/net/phy/realtek.c:820:3: note: Value stored to 'err' is never read
                   err = rtl9000a_ack_interrupt(phydev);
                   ^     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   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.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   5 warnings generated.
   Suppressed 5 warnings (5 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   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.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-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.
>> arch/x86/mm/pat/memtype.c:1098:24: warning: Dereference of null pointer 
>> [clang-analyzer-core.NullDereference]
                   if (follow_phys(vma, vma->vm_start, 0, &prot, &paddr)) {
                                        ^~~~~~~~~~~~~
   arch/x86/mm/pat/memtype.c:1092:6: note: Assuming 'vma' is null
           if (vma && !(vma->vm_flags & VM_PAT))
               ^~~
   arch/x86/mm/pat/memtype.c:1092:10: note: Left side of '&&' is false
           if (vma && !(vma->vm_flags & VM_PAT))
                   ^
   arch/x86/mm/pat/memtype.c:1097:6: note: Assuming 'paddr' is 0
           if (!paddr && !size) {
               ^~~~~~
   arch/x86/mm/pat/memtype.c:1097:6: note: Left side of '&&' is true
   arch/x86/mm/pat/memtype.c:1097:16: note: Assuming 'size' is 0
           if (!paddr && !size) {
                         ^~~~~
   arch/x86/mm/pat/memtype.c:1097:2: note: Taking true branch
           if (!paddr && !size) {
           ^
   arch/x86/mm/pat/memtype.c:1098:24: note: Dereference of null pointer
                   if (follow_phys(vma, vma->vm_start, 0, &prot, &paddr)) {
                                        ^~~~~~~~~~~~~
   Suppressed 3 warnings (3 in non-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.
   Suppressed 3 warnings (3 in non-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.
   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.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   6 warnings generated.
   Suppressed 6 warnings (6 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   3 warnings generated.
   Suppressed 3 warnings (3 in non-user code).
   Use -header-filter=.* to display errors from all non-system headers. Use 
-system-headers to display errors from system headers as well.
   19 warnings generated.
   drivers/target/target_core_configfs.c:2017:5: warning: Value stored to 'ret' 
is never read [clang-analyzer-deadcode.DeadStores]
                                   ret = -EINVAL;
                                   ^     ~~~~~~~
   drivers/target/target_core_configfs.c:2017:5: note: Value stored to 'ret' is 
never read
                                   ret = -EINVAL;
                                   ^     ~~~~~~~
   drivers/target/target_core_configfs.c:2031:5: warning: Value stored to 'ret' 
is never read [clang-analyzer-deadcode.DeadStores]
                                   ret = -EINVAL;
                                   ^     ~~~~~~~
   drivers/target/target_core_configfs.c:2031:5: note: Value stored to 'ret' is 
never read
                                   ret = -EINVAL;
                                   ^     ~~~~~~~
   drivers/target/target_core_configfs.c:2095:5: warning: Value stored to 'ret' 
is never read [clang-analyzer-deadcode.DeadStores]
                                   ret = -EINVAL;
                                   ^     ~~~~~~~
   drivers/target/target_core_configfs.c:2095:5: note: Value stored to 'ret' is 
never read
                                   ret = -EINVAL;
                                   ^     ~~~~~~~
   drivers/target/target_core_configfs.c:2217:17: warning: Value stored to 
'hba' during its initialization is never read 
[clang-analyzer-deadcode.DeadStores]
           struct se_hba *hba = dev->se_hba;
                          ^~~   ~~~~~~~~~~~
   drivers/target/target_core_configfs.c:2217:17: note: Value stored to 'hba' 
during its initialization is never read
           struct se_hba *hba = dev->se_hba;
                          ^~~   ~~~~~~~~~~~
   drivers/target/target_core_configfs.c:2257:17: warning: Value stored to 
'hba' during its initialization is never read 
[clang-analyzer-deadcode.DeadStores]
           struct se_hba *hba = dev->se_hba;
                          ^~~   ~~~~~~~~~~~
   drivers/target/target_core_configfs.c:2257:17: note: Value stored to 'hba' 
during its initialization is never read
           struct se_hba *hba = dev->se_hba;
                          ^~~   ~~~~~~~~~~~
   drivers/target/target_core_configfs.c:2339:17: warning: Value stored to 
'hba' during its initialization is never read 
[clang-analyzer-deadcode.DeadStores]
           struct se_hba *hba = dev->se_hba;
                          ^~~   ~~~~~~~~~~~
   drivers/target/target_core_configfs.c:2339:17: note: Value stored to 'hba' 
during its initialization is never read

vim +964 fs/proc/task_mmu.c

258f669e7e88c1 Vlastimil Babka       2018-08-21  867  
258f669e7e88c1 Vlastimil Babka       2018-08-21  868  static int 
show_smaps_rollup(struct seq_file *m, void *v)
258f669e7e88c1 Vlastimil Babka       2018-08-21  869  {
258f669e7e88c1 Vlastimil Babka       2018-08-21  870    struct 
proc_maps_private *priv = m->private;
258f669e7e88c1 Vlastimil Babka       2018-08-21  871    struct mem_size_stats 
mss;
258f669e7e88c1 Vlastimil Babka       2018-08-21  872    struct mm_struct *mm;
258f669e7e88c1 Vlastimil Babka       2018-08-21  873    struct vm_area_struct 
*vma;
258f669e7e88c1 Vlastimil Babka       2018-08-21  874    unsigned long 
last_vma_end = 0;
258f669e7e88c1 Vlastimil Babka       2018-08-21  875    int ret = 0;
258f669e7e88c1 Vlastimil Babka       2018-08-21  876  
258f669e7e88c1 Vlastimil Babka       2018-08-21  877    priv->task = 
get_proc_task(priv->inode);
258f669e7e88c1 Vlastimil Babka       2018-08-21  878    if (!priv->task)
258f669e7e88c1 Vlastimil Babka       2018-08-21  879            return -ESRCH;
258f669e7e88c1 Vlastimil Babka       2018-08-21  880  
258f669e7e88c1 Vlastimil Babka       2018-08-21  881    mm = priv->mm;
258f669e7e88c1 Vlastimil Babka       2018-08-21  882    if (!mm || 
!mmget_not_zero(mm)) {
258f669e7e88c1 Vlastimil Babka       2018-08-21  883            ret = -ESRCH;
258f669e7e88c1 Vlastimil Babka       2018-08-21  884            goto 
out_put_task;
258f669e7e88c1 Vlastimil Babka       2018-08-21  885    }
258f669e7e88c1 Vlastimil Babka       2018-08-21  886  
258f669e7e88c1 Vlastimil Babka       2018-08-21  887    memset(&mss, 0, 
sizeof(mss));
258f669e7e88c1 Vlastimil Babka       2018-08-21  888  
d8ed45c5dcd455 Michel Lespinasse     2020-06-08  889    ret = 
mmap_read_lock_killable(mm);
a26a9781554857 Konstantin Khlebnikov 2019-07-11  890    if (ret)
a26a9781554857 Konstantin Khlebnikov 2019-07-11  891            goto out_put_mm;
a26a9781554857 Konstantin Khlebnikov 2019-07-11  892  
258f669e7e88c1 Vlastimil Babka       2018-08-21  893    
hold_task_mempolicy(priv);
258f669e7e88c1 Vlastimil Babka       2018-08-21  894  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  895    for (vma = 
priv->mm->mmap; vma;) {
03b4b1149308b0 Chinwen Chang         2020-10-13  896            
smap_gather_stats(vma, &mss, 0);
258f669e7e88c1 Vlastimil Babka       2018-08-21  897            last_vma_end = 
vma->vm_end;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  898  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  899            /*
ff9f47f6f00cfe Chinwen Chang         2020-10-13  900             * Release 
mmap_lock temporarily if someone wants to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  901             * access it 
for write request.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  902             */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  903            if 
(mmap_lock_is_contended(mm)) {
ff9f47f6f00cfe Chinwen Chang         2020-10-13  904                    
mmap_read_unlock(mm);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  905                    ret = 
mmap_read_lock_killable(mm);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  906                    if 
(ret) {
ff9f47f6f00cfe Chinwen Chang         2020-10-13  907                            
release_task_mempolicy(priv);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  908                            
goto out_put_mm;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  909                    }
ff9f47f6f00cfe Chinwen Chang         2020-10-13  910  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  911                    /*
ff9f47f6f00cfe Chinwen Chang         2020-10-13  912                     * 
After dropping the lock, there are four cases to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  913                     * 
consider. See the following example for explanation.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  914                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  915                     *   
+------+------+-----------+
ff9f47f6f00cfe Chinwen Chang         2020-10-13  916                     *   | 
VMA1 | VMA2 | VMA3      |
ff9f47f6f00cfe Chinwen Chang         2020-10-13  917                     *   
+------+------+-----------+
ff9f47f6f00cfe Chinwen Chang         2020-10-13  918                     *   |  
    |      |           |
ff9f47f6f00cfe Chinwen Chang         2020-10-13  919                     *  4k  
   8k     16k         400k
ff9f47f6f00cfe Chinwen Chang         2020-10-13  920                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  921                     * 
Suppose we drop the lock after reading VMA2 due to
ff9f47f6f00cfe Chinwen Chang         2020-10-13  922                     * 
contention, then we get:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  923                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  924                     *      
last_vma_end = 16k
ff9f47f6f00cfe Chinwen Chang         2020-10-13  925                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  926                     * 1) 
VMA2 is freed, but VMA3 exists:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  927                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  928                     *    
find_vma(mm, 16k - 1) will return VMA3.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  929                     *    
In this case, just continue from VMA3.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  930                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  931                     * 2) 
VMA2 still exists:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  932                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  933                     *    
find_vma(mm, 16k - 1) will return VMA2.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  934                     *    
Iterate the loop like the original one.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  935                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  936                     * 3) 
No more VMAs can be found:
ff9f47f6f00cfe Chinwen Chang         2020-10-13  937                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  938                     *    
find_vma(mm, 16k - 1) will return NULL.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  939                     *    
No more things to do, just break.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  940                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  941                     * 4) 
(last_vma_end - 1) is the middle of a vma (VMA'):
ff9f47f6f00cfe Chinwen Chang         2020-10-13  942                     *
ff9f47f6f00cfe Chinwen Chang         2020-10-13  943                     *    
find_vma(mm, 16k - 1) will return VMA' whose range
ff9f47f6f00cfe Chinwen Chang         2020-10-13  944                     *    
contains last_vma_end.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  945                     *    
Iterate VMA' from last_vma_end.
ff9f47f6f00cfe Chinwen Chang         2020-10-13  946                     */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  947                    vma = 
find_vma(mm, last_vma_end - 1);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  948                    /* Case 
3 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  949                    if 
(!vma)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  950                            
break;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  951  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  952                    /* Case 
1 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  953                    if 
(vma->vm_start >= last_vma_end)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  954                            
continue;
ff9f47f6f00cfe Chinwen Chang         2020-10-13  955  
ff9f47f6f00cfe Chinwen Chang         2020-10-13  956                    /* Case 
4 above */
ff9f47f6f00cfe Chinwen Chang         2020-10-13  957                    if 
(vma->vm_end > last_vma_end)
ff9f47f6f00cfe Chinwen Chang         2020-10-13  958                            
smap_gather_stats(vma, &mss, last_vma_end);
ff9f47f6f00cfe Chinwen Chang         2020-10-13  959            }
ff9f47f6f00cfe Chinwen Chang         2020-10-13  960            /* Case 2 above 
*/
ff9f47f6f00cfe Chinwen Chang         2020-10-13  961            vma = 
vma->vm_next;
258f669e7e88c1 Vlastimil Babka       2018-08-21  962    }
258f669e7e88c1 Vlastimil Babka       2018-08-21  963  
258f669e7e88c1 Vlastimil Babka       2018-08-21 @964    
show_vma_header_prefix(m, priv->mm->mmap->vm_start,
258f669e7e88c1 Vlastimil Babka       2018-08-21  965                           
last_vma_end, 0, 0, 0, 0);
258f669e7e88c1 Vlastimil Babka       2018-08-21  966    seq_pad(m, ' ');
258f669e7e88c1 Vlastimil Babka       2018-08-21  967    seq_puts(m, 
"[rollup]\n");
258f669e7e88c1 Vlastimil Babka       2018-08-21  968  
ee2ad71b0756e9 Luigi Semenzato       2019-07-11  969    __show_smap(m, &mss, 
true);
258f669e7e88c1 Vlastimil Babka       2018-08-21  970  
258f669e7e88c1 Vlastimil Babka       2018-08-21  971    
release_task_mempolicy(priv);
d8ed45c5dcd455 Michel Lespinasse     2020-06-08  972    mmap_read_unlock(mm);
258f669e7e88c1 Vlastimil Babka       2018-08-21  973  
a26a9781554857 Konstantin Khlebnikov 2019-07-11  974  out_put_mm:
a26a9781554857 Konstantin Khlebnikov 2019-07-11  975    mmput(mm);
258f669e7e88c1 Vlastimil Babka       2018-08-21  976  out_put_task:
258f669e7e88c1 Vlastimil Babka       2018-08-21  977    
put_task_struct(priv->task);
258f669e7e88c1 Vlastimil Babka       2018-08-21  978    priv->task = NULL;
258f669e7e88c1 Vlastimil Babka       2018-08-21  979  
493b0e9d945fa9 Daniel Colascione     2017-09-06  980    return ret;
e070ad49f31155 Mauricio Lin          2005-09-03  981  }
d1be35cb6f9697 Andrei Vagin          2018-04-10  982  #undef SEQ_PUT_DEC
e070ad49f31155 Mauricio Lin          2005-09-03  983  

:::::: The code at line 964 was first introduced by commit
:::::: 258f669e7e88c18edbc23fe5ce00a476b924551f mm: /proc/pid/smaps_rollup: 
convert to single value seq_file

:::::: TO: Vlastimil Babka <[email protected]>
:::::: CC: Linus Torvalds <[email protected]>

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to