:::::: 
:::::: Manual check reason: "low confidence static check warning: 
mm/madvise.c:124:28: warning: Parameter 'anon_name' can be declared with const 
[constParameter]"
:::::: 

CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Suren Baghdasaryan <[email protected]>
CC: Andrew Morton <[email protected]>
CC: Linux Memory Management List <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   32346491ddf24599decca06190ebca03ff9de7f8
commit: 5c26f6ac9416b63d093e29c30e79b3297e425472 mm: refactor 
vm_area_struct::anon_vma_name usage code
date:   4 months ago
:::::: branch date: 15 hours ago
:::::: commit date: 4 months ago
compiler: nios2-linux-gcc (GCC) 11.3.0
reproduce (cppcheck warning):
        # apt-get install cppcheck
        git checkout 5c26f6ac9416b63d093e29c30e79b3297e425472
        cppcheck --quiet --enable=style,performance,portability --template=gcc 
FILE

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


cppcheck possible warnings: (new ones prefixed by >>, may not real problems)

>> mm/madvise.c:124:28: warning: Parameter 'anon_name' can be declared with 
>> const [constParameter]
        struct anon_vma_name *anon_name)
                              ^
>> mm/swap.c:612:20: warning: Using pointer that is a temporary. 
>> [danglingTemporaryLifetime]
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:610:25: note: Address of variable taken here.
    struct pagevec *pvec = &per_cpu(lru_pvecs.lru_add, cpu);
                           ^
   mm/swap.c:610:33: note: Temporary created here.
    struct pagevec *pvec = &per_cpu(lru_pvecs.lru_add, cpu);
                                   ^
   mm/swap.c:612:20: note: Using pointer that is a temporary.
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:617:30: warning: Using pointer that is a temporary. 
[danglingTemporaryLifetime]
    if (data_race(pagevec_count(pvec))) {
                                ^
   mm/swap.c:615:9: note: Address of variable taken here.
    pvec = &per_cpu(lru_rotate.pvec, cpu);
           ^
   mm/swap.c:615:17: note: Temporary created here.
    pvec = &per_cpu(lru_rotate.pvec, cpu);
                   ^
   mm/swap.c:617:30: note: Using pointer that is a temporary.
    if (data_race(pagevec_count(pvec))) {
                                ^
   mm/swap.c:627:20: warning: Using pointer that is a temporary. 
[danglingTemporaryLifetime]
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:626:9: note: Address of variable taken here.
    pvec = &per_cpu(lru_pvecs.lru_deactivate_file, cpu);
           ^
   mm/swap.c:626:17: note: Temporary created here.
    pvec = &per_cpu(lru_pvecs.lru_deactivate_file, cpu);
                   ^
   mm/swap.c:627:20: note: Using pointer that is a temporary.
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:631:20: warning: Using pointer that is a temporary. 
[danglingTemporaryLifetime]
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:630:9: note: Address of variable taken here.
    pvec = &per_cpu(lru_pvecs.lru_deactivate, cpu);
           ^
   mm/swap.c:630:17: note: Temporary created here.
    pvec = &per_cpu(lru_pvecs.lru_deactivate, cpu);
                   ^
   mm/swap.c:631:20: note: Using pointer that is a temporary.
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:635:20: warning: Using pointer that is a temporary. 
[danglingTemporaryLifetime]
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:634:9: note: Address of variable taken here.
    pvec = &per_cpu(lru_pvecs.lru_lazyfree, cpu);
           ^
   mm/swap.c:634:17: note: Temporary created here.
    pvec = &per_cpu(lru_pvecs.lru_lazyfree, cpu);
                   ^
   mm/swap.c:635:20: note: Using pointer that is a temporary.
    if (pagevec_count(pvec))
                      ^

vim +/anon_name +124 mm/madvise.c

9a10064f5625d5 Colin Cross        2022-01-14  100  
9a10064f5625d5 Colin Cross        2022-01-14  101  /* mmap_lock should be 
write-locked */
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  102  static int 
replace_anon_vma_name(struct vm_area_struct *vma,
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  103                               
 struct anon_vma_name *anon_name)
9a10064f5625d5 Colin Cross        2022-01-14  104  {
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  105       struct anon_vma_name 
*orig_name = anon_vma_name(vma);
78db3412833dc9 Suren Baghdasaryan 2022-01-14  106  
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  107       if (!anon_name) {
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  108               vma->anon_name 
= NULL;
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  109               
anon_vma_name_put(orig_name);
9a10064f5625d5 Colin Cross        2022-01-14  110               return 0;
9a10064f5625d5 Colin Cross        2022-01-14  111       }
9a10064f5625d5 Colin Cross        2022-01-14  112  
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  113       if 
(anon_vma_name_eq(orig_name, anon_name))
9a10064f5625d5 Colin Cross        2022-01-14  114               return 0;
9a10064f5625d5 Colin Cross        2022-01-14  115  
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  116       
anon_vma_name_get(anon_name);
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  117       vma->anon_name = 
anon_name;
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  118       
anon_vma_name_put(orig_name);
9a10064f5625d5 Colin Cross        2022-01-14  119  
9a10064f5625d5 Colin Cross        2022-01-14  120       return 0;
9a10064f5625d5 Colin Cross        2022-01-14  121  }
9a10064f5625d5 Colin Cross        2022-01-14  122  #else /* 
CONFIG_ANON_VMA_NAME */
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  123  static int 
replace_anon_vma_name(struct vm_area_struct *vma,
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04 @124                               
 struct anon_vma_name *anon_name)
9a10064f5625d5 Colin Cross        2022-01-14  125  {
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  126       if (anon_name)
9a10064f5625d5 Colin Cross        2022-01-14  127               return -EINVAL;
9a10064f5625d5 Colin Cross        2022-01-14  128  
9a10064f5625d5 Colin Cross        2022-01-14  129       return 0;
9a10064f5625d5 Colin Cross        2022-01-14  130  }
9a10064f5625d5 Colin Cross        2022-01-14  131  #endif /* 
CONFIG_ANON_VMA_NAME */
^1da177e4c3f41 Linus Torvalds     2005-04-16  132  /*
ac1e9acc5acf0b Colin Cross        2022-01-14  133   * Update the vm_flags on 
region of a vma, splitting it or merging it as
ac1e9acc5acf0b Colin Cross        2022-01-14  134   * necessary.  Must be 
called with mmap_sem held for writing;
^1da177e4c3f41 Linus Torvalds     2005-04-16  135   */
ac1e9acc5acf0b Colin Cross        2022-01-14  136  static int 
madvise_update_vma(struct vm_area_struct *vma,
ac1e9acc5acf0b Colin Cross        2022-01-14  137                             
struct vm_area_struct **prev, unsigned long start,
9a10064f5625d5 Colin Cross        2022-01-14  138                             
unsigned long end, unsigned long new_flags,
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  139                             
struct anon_vma_name *anon_name)
^1da177e4c3f41 Linus Torvalds     2005-04-16  140  {
^1da177e4c3f41 Linus Torvalds     2005-04-16  141       struct mm_struct *mm = 
vma->vm_mm;
ac1e9acc5acf0b Colin Cross        2022-01-14  142       int error;
05b7438475ddba Prasanna Meda      2005-06-21  143       pgoff_t pgoff;
e798c6e87b64d9 Prasanna Meda      2005-06-21  144  
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  145       if (new_flags == 
vma->vm_flags && anon_vma_name_eq(anon_vma_name(vma), anon_name)) {
05b7438475ddba Prasanna Meda      2005-06-21  146               *prev = vma;
ac1e9acc5acf0b Colin Cross        2022-01-14  147               return 0;
05b7438475ddba Prasanna Meda      2005-06-21  148       }
05b7438475ddba Prasanna Meda      2005-06-21  149  
05b7438475ddba Prasanna Meda      2005-06-21  150       pgoff = vma->vm_pgoff + 
((start - vma->vm_start) >> PAGE_SHIFT);
05b7438475ddba Prasanna Meda      2005-06-21  151       *prev = vma_merge(mm, 
*prev, start, end, new_flags, vma->anon_vma,
19a809afe2fe08 Andrea Arcangeli   2015-09-04  152                         
vma->vm_file, pgoff, vma_policy(vma),
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  153                         
vma->vm_userfaultfd_ctx, anon_name);
05b7438475ddba Prasanna Meda      2005-06-21  154       if (*prev) {
05b7438475ddba Prasanna Meda      2005-06-21  155               vma = *prev;
05b7438475ddba Prasanna Meda      2005-06-21  156               goto success;
05b7438475ddba Prasanna Meda      2005-06-21  157       }
05b7438475ddba Prasanna Meda      2005-06-21  158  
05b7438475ddba Prasanna Meda      2005-06-21  159       *prev = vma;
^1da177e4c3f41 Linus Torvalds     2005-04-16  160  
^1da177e4c3f41 Linus Torvalds     2005-04-16  161       if (start != 
vma->vm_start) {
ac1e9acc5acf0b Colin Cross        2022-01-14  162               if 
(unlikely(mm->map_count >= sysctl_max_map_count))
ac1e9acc5acf0b Colin Cross        2022-01-14  163                       return 
-ENOMEM;
def5efe0376501 David Rientjes     2017-02-24  164               error = 
__split_vma(mm, vma, start, 1);
f3bc0dba3154fa Mike Rapoport      2019-09-23  165               if (error)
ac1e9acc5acf0b Colin Cross        2022-01-14  166                       return 
error;
def5efe0376501 David Rientjes     2017-02-24  167       }
^1da177e4c3f41 Linus Torvalds     2005-04-16  168  
^1da177e4c3f41 Linus Torvalds     2005-04-16  169       if (end != vma->vm_end) 
{
ac1e9acc5acf0b Colin Cross        2022-01-14  170               if 
(unlikely(mm->map_count >= sysctl_max_map_count))
ac1e9acc5acf0b Colin Cross        2022-01-14  171                       return 
-ENOMEM;
def5efe0376501 David Rientjes     2017-02-24  172               error = 
__split_vma(mm, vma, end, 0);
f3bc0dba3154fa Mike Rapoport      2019-09-23  173               if (error)
ac1e9acc5acf0b Colin Cross        2022-01-14  174                       return 
error;
def5efe0376501 David Rientjes     2017-02-24  175       }
^1da177e4c3f41 Linus Torvalds     2005-04-16  176  
836d5ffd345509 Hugh Dickins       2005-09-03  177  success:
^1da177e4c3f41 Linus Torvalds     2005-04-16  178       /*
c1e8d7c6a7a682 Michel Lespinasse  2020-06-08  179        * vm_flags is 
protected by the mmap_lock held in write mode.
^1da177e4c3f41 Linus Torvalds     2005-04-16  180        */
e798c6e87b64d9 Prasanna Meda      2005-06-21  181       vma->vm_flags = 
new_flags;
9a10064f5625d5 Colin Cross        2022-01-14  182       if (!vma->vm_file) {
5c26f6ac9416b6 Suren Baghdasaryan 2022-03-04  183               error = 
replace_anon_vma_name(vma, anon_name);
9a10064f5625d5 Colin Cross        2022-01-14  184               if (error)
9a10064f5625d5 Colin Cross        2022-01-14  185                       return 
error;
9a10064f5625d5 Colin Cross        2022-01-14  186       }
f3bc0dba3154fa Mike Rapoport      2019-09-23  187  
ac1e9acc5acf0b Colin Cross        2022-01-14  188       return 0;
^1da177e4c3f41 Linus Torvalds     2005-04-16  189  }
^1da177e4c3f41 Linus Torvalds     2005-04-16  190  

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