:::::: 
:::::: Manual check reason: "low confidence static check warning: 
kernel/sched/core.c:5714:2: warning: Comparing pointers that point to different 
objects [comparePointers]"
:::::: 

CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Peter Zijlstra <[email protected]>
CC: Kees Cook <[email protected]>

Hi Peter,

First bad commit (maybe != root cause):

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   874c8ca1e60b2c564a48f7e7acc40d328d5c8733
commit: 546a3fee174969ff323d70ff27b1ef181f0d7ceb sched: Reverse sched_class 
layout
date:   3 weeks ago
:::::: branch date: 8 hours ago
:::::: commit date: 3 weeks ago
compiler: arceb-elf-gcc (GCC) 11.3.0
reproduce (cppcheck warning):
        # apt-get install cppcheck
        git checkout 546a3fee174969ff323d70ff27b1ef181f0d7ceb
        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 warnings: (new ones prefixed by >>)
>> mm/huge_memory.c:1719:15: warning: Local variable 'entry' shadows outer 
>> variable [shadowVariable]
     swp_entry_t entry = pmd_to_swp_entry(*pmd);
                 ^
   mm/huge_memory.c:1700:8: note: Shadowed declaration
    pmd_t entry;
          ^
   mm/huge_memory.c:1719:15: note: Shadow variable
     swp_entry_t entry = pmd_to_swp_entry(*pmd);
                 ^

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

>> mm/vmstat.c:1406:53: warning: Parameter 'pos' can be declared with const 
>> [constParameter]
   static void *frag_start(struct seq_file *m, loff_t *pos)
                                                       ^
>> mm/vmstat.c:1647:68: warning: Parameter 'zone' can be declared with const 
>> [constParameter]
   static bool is_zone_first_populated(pg_data_t *pgdat, struct zone *zone)
                                                                      ^
   mm/vmstat.c:1777:55: warning: Parameter 'pos' can be declared with const 
[constParameter]
   static void *vmstat_start(struct seq_file *m, loff_t *pos)
                                                         ^
>> mm/swap.c:600:20: warning: Using pointer that is a temporary. 
>> [danglingTemporaryLifetime]
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:598:25: note: Address of variable taken here.
    struct pagevec *pvec = &per_cpu(lru_pvecs.lru_add, cpu);
                           ^
   mm/swap.c:598:33: note: Temporary created here.
    struct pagevec *pvec = &per_cpu(lru_pvecs.lru_add, cpu);
                                   ^
   mm/swap.c:600:20: note: Using pointer that is a temporary.
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:605:30: warning: Using pointer that is a temporary. 
[danglingTemporaryLifetime]
    if (data_race(pagevec_count(pvec))) {
                                ^
   mm/swap.c:603:9: note: Address of variable taken here.
    pvec = &per_cpu(lru_rotate.pvec, cpu);
           ^
   mm/swap.c:603:17: note: Temporary created here.
    pvec = &per_cpu(lru_rotate.pvec, cpu);
                   ^
   mm/swap.c:605:30: note: Using pointer that is a temporary.
    if (data_race(pagevec_count(pvec))) {
                                ^
   mm/swap.c:615:20: warning: Using pointer that is a temporary. 
[danglingTemporaryLifetime]
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:614:9: note: Address of variable taken here.
    pvec = &per_cpu(lru_pvecs.lru_deactivate_file, cpu);
           ^
   mm/swap.c:614:17: note: Temporary created here.
    pvec = &per_cpu(lru_pvecs.lru_deactivate_file, cpu);
                   ^
   mm/swap.c:615:20: note: Using pointer that is a temporary.
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:619:20: warning: Using pointer that is a temporary. 
[danglingTemporaryLifetime]
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:618:9: note: Address of variable taken here.
    pvec = &per_cpu(lru_pvecs.lru_deactivate, cpu);
           ^
   mm/swap.c:618:17: note: Temporary created here.
    pvec = &per_cpu(lru_pvecs.lru_deactivate, cpu);
                   ^
   mm/swap.c:619:20: note: Using pointer that is a temporary.
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:623:20: warning: Using pointer that is a temporary. 
[danglingTemporaryLifetime]
    if (pagevec_count(pvec))
                      ^
   mm/swap.c:622:9: note: Address of variable taken here.
    pvec = &per_cpu(lru_pvecs.lru_lazyfree, cpu);
           ^
   mm/swap.c:622:17: note: Temporary created here.
    pvec = &per_cpu(lru_pvecs.lru_lazyfree, cpu);
                   ^
   mm/swap.c:623:20: note: Using pointer that is a temporary.
    if (pagevec_count(pvec))
                      ^
>> mm/huge_memory.c:1615:54: warning: Parameter 'new_pmd_ptl' can be declared 
>> with const [constParameter]
   static inline int pmd_move_must_withdraw(spinlock_t *new_pmd_ptl,
                                                        ^
>> mm/huge_memory.c:1616:19: warning: Parameter 'old_pmd_ptl' can be declared 
>> with const [constParameter]
         spinlock_t *old_pmd_ptl,
                     ^
>> mm/huge_memory.c:2973:9: warning: Local variable 'buf' shadows outer 
>> argument [shadowArgument]
     char *buf = input_buf;
           ^
   mm/huge_memory.c:2949:77: note: Shadowed declaration
   static ssize_t split_huge_pages_write(struct file *file, const char __user 
*buf,
                                                                               ^
   mm/huge_memory.c:2973:9: note: Shadow variable
     char *buf = input_buf;
           ^
>> kernel/sched/core.c:5714:2: warning: Comparing pointers that point to 
>> different objects [comparePointers]
    for_each_class(class) {
    ^
   kernel/sched/sched.h:2190:27: note: Variable declared here.
   extern struct sched_class __sched_class_highest[];
                             ^
   kernel/sched/core.c:5714:2: note: Array decayed to pointer here.
    for_each_class(class) {
    ^
   kernel/sched/sched.h:2191:27: note: Variable declared here.
   extern struct sched_class __sched_class_lowest[];
                             ^
   kernel/sched/core.c:5714:2: note: Array decayed to pointer here.
    for_each_class(class) {
    ^
   kernel/sched/core.c:5714:2: note: Comparing pointers that point to different 
objects
    for_each_class(class) {
    ^
   kernel/sched/sched.h:2004:67: warning: Parameter 'p' can be declared with 
const [constParameter]
   static inline int task_current(struct rq *rq, struct task_struct *p)
                                                                     ^
   kernel/sched/core.c:2760:4: warning: Address of local auto-variable assigned 
to a function parameter. [autoVariables]
      p->migration_pending = &my_pending;
      ^
   kernel/sched/core.c:9130:3: warning: Comparing pointers that point to 
different objects [comparePointers]
     for_each_class(class) {
     ^
   kernel/sched/sched.h:2190:27: note: Variable declared here.
   extern struct sched_class __sched_class_highest[];
                             ^
   kernel/sched/core.c:9130:3: note: Array decayed to pointer here.
     for_each_class(class) {
     ^
   kernel/sched/sched.h:2191:27: note: Variable declared here.
   extern struct sched_class __sched_class_lowest[];
                             ^
   kernel/sched/core.c:9130:3: note: Array decayed to pointer here.
     for_each_class(class) {
     ^
   kernel/sched/core.c:9130:3: note: Comparing pointers that point to different 
objects
     for_each_class(class) {
     ^
   kernel/sched/core.c:9142:3: warning: Comparing pointers that point to 
different objects [comparePointers]
     for_each_class(class) {
     ^
   kernel/sched/sched.h:2190:27: note: Variable declared here.
   extern struct sched_class __sched_class_highest[];
                             ^
   kernel/sched/core.c:9142:3: note: Array decayed to pointer here.
     for_each_class(class) {
     ^
   kernel/sched/sched.h:2191:27: note: Variable declared here.
   extern struct sched_class __sched_class_lowest[];
                             ^
   kernel/sched/core.c:9142:3: note: Array decayed to pointer here.
     for_each_class(class) {
     ^
   kernel/sched/core.c:9142:3: note: Comparing pointers that point to different 
objects
     for_each_class(class) {
     ^

vim +5714 kernel/sched/core.c

457d1f465778ccb kernel/sched/core.c Chen Yu         2020-04-21  5679  
^1da177e4c3f415 kernel/sched.c      Linus Torvalds  2005-04-16  5680  /*
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5681   * Pick 
up the highest-prio task:
^1da177e4c3f415 kernel/sched.c      Linus Torvalds  2005-04-16  5682   */
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5683  static 
inline struct task_struct *
539f65125d20aac kernel/sched/core.c Peter Zijlstra  2020-11-17  5684  
__pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5685  {
49ee576809d8374 kernel/sched/core.c Peter Zijlstra  2017-01-19  5686    const 
struct sched_class *class;
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5687    struct 
task_struct *p;
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5688  
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5689    /*
0ba87bb27d66b78 kernel/sched/core.c Peter Zijlstra  2017-03-01  5690     * 
Optimization: we know that if all tasks are in the fair class we can
0ba87bb27d66b78 kernel/sched/core.c Peter Zijlstra  2017-03-01  5691     * call 
that function directly, but only if the @prev task wasn't of a
b19a888c1e9bdf1 kernel/sched/core.c Tal Zussman     2020-11-12  5692     * 
higher scheduling class, because otherwise those lose the
0ba87bb27d66b78 kernel/sched/core.c Peter Zijlstra  2017-03-01  5693     * 
opportunity to pull in more work from other CPUs.
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5694     */
546a3fee174969f kernel/sched/core.c Peter Zijlstra  2022-05-17  5695    if 
(likely(!sched_class_above(prev->sched_class, &fair_sched_class) &&
0ba87bb27d66b78 kernel/sched/core.c Peter Zijlstra  2017-03-01  5696            
   rq->nr_running == rq->cfs.h_nr_running)) {
0ba87bb27d66b78 kernel/sched/core.c Peter Zijlstra  2017-03-01  5697  
5d7d605642b28a5 kernel/sched/core.c Peter Zijlstra  2019-11-08  5698            
p = pick_next_task_fair(rq, prev, rf);
6ccdc84b81a0a6c kernel/sched/core.c Peter Zijlstra  2014-04-24  5699            
if (unlikely(p == RETRY_TASK))
67692435c411e5c kernel/sched/core.c Peter Zijlstra  2019-05-29  5700            
        goto restart;
6ccdc84b81a0a6c kernel/sched/core.c Peter Zijlstra  2014-04-24  5701  
1699949d3314e5d kernel/sched/core.c Masahiro Yamada 2021-05-19  5702            
/* Assume the next prioritized class is idle_sched_class */
5d7d605642b28a5 kernel/sched/core.c Peter Zijlstra  2019-11-08  5703            
if (!p) {
f488e1057bb97b8 kernel/sched/core.c Peter Zijlstra  2019-11-08  5704            
        put_prev_task(rq, prev);
98c2f700edb413e kernel/sched/core.c Peter Zijlstra  2019-11-08  5705            
        p = pick_next_task_idle(rq);
f488e1057bb97b8 kernel/sched/core.c Peter Zijlstra  2019-11-08  5706            
}
6ccdc84b81a0a6c kernel/sched/core.c Peter Zijlstra  2014-04-24  5707  
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5708            
return p;
^1da177e4c3f415 kernel/sched.c      Linus Torvalds  2005-04-16  5709    }
^1da177e4c3f415 kernel/sched.c      Linus Torvalds  2005-04-16  5710  
67692435c411e5c kernel/sched/core.c Peter Zijlstra  2019-05-29  5711  restart:
457d1f465778ccb kernel/sched/core.c Chen Yu         2020-04-21  5712    
put_prev_task_balance(rq, prev, rf);
67692435c411e5c kernel/sched/core.c Peter Zijlstra  2019-05-29  5713  
34f971f6f7988be kernel/sched.c      Peter Zijlstra  2010-09-22 @5714    
for_each_class(class) {
98c2f700edb413e kernel/sched/core.c Peter Zijlstra  2019-11-08  5715            
p = class->pick_next_task(rq);
67692435c411e5c kernel/sched/core.c Peter Zijlstra  2019-05-29  5716            
if (p)
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5717            
        return p;
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5718    }
34f971f6f7988be kernel/sched.c      Peter Zijlstra  2010-09-22  5719  
bc9ffef31bf5981 kernel/sched/core.c Peter Zijlstra  2021-08-24  5720    BUG(); 
/* The idle class should always have a runnable task. */
dd41f596cda0d7d kernel/sched.c      Ingo Molnar     2007-07-09  5721  }
^1da177e4c3f415 kernel/sched.c      Linus Torvalds  2005-04-16  5722  

:::::: The code at line 5714 was first introduced by commit
:::::: 34f971f6f7988be4d014eec3e3526bee6d007ffa sched: Create special class for 
stop/migrate work

:::::: TO: Peter Zijlstra <[email protected]>
:::::: CC: Ingo Molnar <[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