CC: [email protected]
CC: [email protected]
TO: Mark Brown <[email protected]>
CC: Will Deacon <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   f40ddce88593482919761f74910f42f4b84c004b
commit: 9e0f085c2b33ebe13bcec53cbacce505fe78fde7 arm64: Move console stack 
display code to stacktrace.c
date:   5 months ago
:::::: branch date: 4 days ago
:::::: commit date: 5 months ago
compiler: aarch64-linux-gcc (GCC) 9.3.0

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


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

>> arch/arm64/kernel/stacktrace.c:178:26: warning: Either the condition 'regs' 
>> is redundant or there is possible null pointer dereference: regs. 
>> [nullPointerRedundantCheck]
     } else if (frame.fp == regs->regs[29]) {
                            ^
   arch/arm64/kernel/stacktrace.c:148:6: note: Assuming that condition 'regs' 
is not redundant
    if (regs) {
        ^
   arch/arm64/kernel/stacktrace.c:178:26: note: Null pointer dereference
     } else if (frame.fp == regs->regs[29]) {
                            ^

vim +/regs +178 arch/arm64/kernel/stacktrace.c

9e0f085c2b33eb Mark Brown 2020-09-21  139  
9e0f085c2b33eb Mark Brown 2020-09-21  140  void dump_backtrace(struct pt_regs 
*regs, struct task_struct *tsk,
9e0f085c2b33eb Mark Brown 2020-09-21  141                   const char *loglvl)
9e0f085c2b33eb Mark Brown 2020-09-21  142  {
9e0f085c2b33eb Mark Brown 2020-09-21  143       struct stackframe frame;
9e0f085c2b33eb Mark Brown 2020-09-21  144       int skip = 0;
9e0f085c2b33eb Mark Brown 2020-09-21  145  
9e0f085c2b33eb Mark Brown 2020-09-21  146       pr_debug("%s(regs = %p tsk = 
%p)\n", __func__, regs, tsk);
9e0f085c2b33eb Mark Brown 2020-09-21  147  
9e0f085c2b33eb Mark Brown 2020-09-21  148       if (regs) {
9e0f085c2b33eb Mark Brown 2020-09-21  149               if (user_mode(regs))
9e0f085c2b33eb Mark Brown 2020-09-21  150                       return;
9e0f085c2b33eb Mark Brown 2020-09-21  151               skip = 1;
9e0f085c2b33eb Mark Brown 2020-09-21  152       }
9e0f085c2b33eb Mark Brown 2020-09-21  153  
9e0f085c2b33eb Mark Brown 2020-09-21  154       if (!tsk)
9e0f085c2b33eb Mark Brown 2020-09-21  155               tsk = current;
9e0f085c2b33eb Mark Brown 2020-09-21  156  
9e0f085c2b33eb Mark Brown 2020-09-21  157       if (!try_get_task_stack(tsk))
9e0f085c2b33eb Mark Brown 2020-09-21  158               return;
9e0f085c2b33eb Mark Brown 2020-09-21  159  
9e0f085c2b33eb Mark Brown 2020-09-21  160       if (tsk == current) {
9e0f085c2b33eb Mark Brown 2020-09-21  161               start_backtrace(&frame,
9e0f085c2b33eb Mark Brown 2020-09-21  162                               
(unsigned long)__builtin_frame_address(0),
9e0f085c2b33eb Mark Brown 2020-09-21  163                               
(unsigned long)dump_backtrace);
9e0f085c2b33eb Mark Brown 2020-09-21  164       } else {
9e0f085c2b33eb Mark Brown 2020-09-21  165               /*
9e0f085c2b33eb Mark Brown 2020-09-21  166                * task blocked in 
__switch_to
9e0f085c2b33eb Mark Brown 2020-09-21  167                */
9e0f085c2b33eb Mark Brown 2020-09-21  168               start_backtrace(&frame,
9e0f085c2b33eb Mark Brown 2020-09-21  169                               
thread_saved_fp(tsk),
9e0f085c2b33eb Mark Brown 2020-09-21  170                               
thread_saved_pc(tsk));
9e0f085c2b33eb Mark Brown 2020-09-21  171       }
9e0f085c2b33eb Mark Brown 2020-09-21  172  
9e0f085c2b33eb Mark Brown 2020-09-21  173       printk("%sCall trace:\n", 
loglvl);
9e0f085c2b33eb Mark Brown 2020-09-21  174       do {
9e0f085c2b33eb Mark Brown 2020-09-21  175               /* skip until specified 
stack frame */
9e0f085c2b33eb Mark Brown 2020-09-21  176               if (!skip) {
9e0f085c2b33eb Mark Brown 2020-09-21  177                       
dump_backtrace_entry(frame.pc, loglvl);
9e0f085c2b33eb Mark Brown 2020-09-21 @178               } else if (frame.fp == 
regs->regs[29]) {
9e0f085c2b33eb Mark Brown 2020-09-21  179                       skip = 0;
9e0f085c2b33eb Mark Brown 2020-09-21  180                       /*
9e0f085c2b33eb Mark Brown 2020-09-21  181                        * Mostly, this 
is the case where this function is
9e0f085c2b33eb Mark Brown 2020-09-21  182                        * called in 
panic/abort. As exception handler's
9e0f085c2b33eb Mark Brown 2020-09-21  183                        * stack frame 
does not contain the corresponding pc
9e0f085c2b33eb Mark Brown 2020-09-21  184                        * at which an 
exception has taken place, use regs->pc
9e0f085c2b33eb Mark Brown 2020-09-21  185                        * instead.
9e0f085c2b33eb Mark Brown 2020-09-21  186                        */
9e0f085c2b33eb Mark Brown 2020-09-21  187                       
dump_backtrace_entry(regs->pc, loglvl);
9e0f085c2b33eb Mark Brown 2020-09-21  188               }
9e0f085c2b33eb Mark Brown 2020-09-21  189       } while (!unwind_frame(tsk, 
&frame));
9e0f085c2b33eb Mark Brown 2020-09-21  190  
9e0f085c2b33eb Mark Brown 2020-09-21  191       put_task_stack(tsk);
9e0f085c2b33eb Mark Brown 2020-09-21  192  }
9e0f085c2b33eb Mark Brown 2020-09-21  193  

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

Reply via email to