CC: [email protected]
CC: [email protected]
TO: Ravi Bangoria <[email protected]>
CC: Michael Ellerman <[email protected]>
CC: Michael Neuling <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   50987beca096a7ed4f453a6da245fd6a2fadedeb
commit: 29da4f91c0c1fbda12b8a31be0d564930208c92e powerpc/watchpoint: Don't 
allow concurrent perf and ptrace events
date:   11 months ago
:::::: branch date: 13 hours ago
:::::: commit date: 11 months ago
config: powerpc-randconfig-m031-20210414 (attached as .config)
compiler: powerpc-linux-gcc (GCC) 9.3.0

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

smatch warnings:
arch/powerpc/kernel/hw_breakpoint.c:176 task_bps_add() warn: passing a valid 
pointer to 'PTR_ERR'
arch/powerpc/kernel/hw_breakpoint.c:236 cpu_bps_add() warn: passing a valid 
pointer to 'PTR_ERR'

vim +/PTR_ERR +176 arch/powerpc/kernel/hw_breakpoint.c

29da4f91c0c1fb Ravi Bangoria 2020-05-14  169  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  170  static int task_bps_add(struct 
perf_event *bp)
29da4f91c0c1fb Ravi Bangoria 2020-05-14  171  {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  172    struct breakpoint *tmp;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  173  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  174    tmp = alloc_breakpoint(bp);
29da4f91c0c1fb Ravi Bangoria 2020-05-14  175    if (IS_ERR(tmp))
29da4f91c0c1fb Ravi Bangoria 2020-05-14 @176            return PTR_ERR(tmp);
29da4f91c0c1fb Ravi Bangoria 2020-05-14  177  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  178    list_add(&tmp->list, &task_bps);
29da4f91c0c1fb Ravi Bangoria 2020-05-14  179    return 0;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  180  }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  181  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  182  static void 
task_bps_remove(struct perf_event *bp)
29da4f91c0c1fb Ravi Bangoria 2020-05-14  183  {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  184    struct list_head *pos, *q;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  185  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  186    list_for_each_safe(pos, q, 
&task_bps) {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  187            struct breakpoint *tmp 
= list_entry(pos, struct breakpoint, list);
29da4f91c0c1fb Ravi Bangoria 2020-05-14  188  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  189            if (tmp->bp == bp) {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  190                    
list_del(&tmp->list);
29da4f91c0c1fb Ravi Bangoria 2020-05-14  191                    kfree(tmp);
29da4f91c0c1fb Ravi Bangoria 2020-05-14  192                    break;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  193            }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  194    }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  195  }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  196  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  197  /*
29da4f91c0c1fb Ravi Bangoria 2020-05-14  198   * If any task has breakpoint 
from alternate infrastructure,
29da4f91c0c1fb Ravi Bangoria 2020-05-14  199   * return true. Otherwise return 
false.
29da4f91c0c1fb Ravi Bangoria 2020-05-14  200   */
29da4f91c0c1fb Ravi Bangoria 2020-05-14  201  static bool 
all_task_bps_check(struct perf_event *bp)
29da4f91c0c1fb Ravi Bangoria 2020-05-14  202  {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  203    struct breakpoint *tmp;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  204  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  205    list_for_each_entry(tmp, 
&task_bps, list) {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  206            if (!can_co_exist(tmp, 
bp))
29da4f91c0c1fb Ravi Bangoria 2020-05-14  207                    return true;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  208    }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  209    return false;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  210  }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  211  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  212  /*
29da4f91c0c1fb Ravi Bangoria 2020-05-14  213   * If same task has breakpoint 
from alternate infrastructure,
29da4f91c0c1fb Ravi Bangoria 2020-05-14  214   * return true. Otherwise return 
false.
29da4f91c0c1fb Ravi Bangoria 2020-05-14  215   */
29da4f91c0c1fb Ravi Bangoria 2020-05-14  216  static bool 
same_task_bps_check(struct perf_event *bp)
29da4f91c0c1fb Ravi Bangoria 2020-05-14  217  {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  218    struct breakpoint *tmp;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  219  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  220    list_for_each_entry(tmp, 
&task_bps, list) {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  221            if (tmp->bp->hw.target 
== bp->hw.target &&
29da4f91c0c1fb Ravi Bangoria 2020-05-14  222                !can_co_exist(tmp, 
bp))
29da4f91c0c1fb Ravi Bangoria 2020-05-14  223                    return true;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  224    }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  225    return false;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  226  }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  227  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  228  static int cpu_bps_add(struct 
perf_event *bp)
29da4f91c0c1fb Ravi Bangoria 2020-05-14  229  {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  230    struct breakpoint **cpu_bp;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  231    struct breakpoint *tmp;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  232    int i = 0;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  233  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  234    tmp = alloc_breakpoint(bp);
29da4f91c0c1fb Ravi Bangoria 2020-05-14  235    if (IS_ERR(tmp))
29da4f91c0c1fb Ravi Bangoria 2020-05-14 @236            return PTR_ERR(tmp);
29da4f91c0c1fb Ravi Bangoria 2020-05-14  237  
29da4f91c0c1fb Ravi Bangoria 2020-05-14  238    cpu_bp = per_cpu_ptr(cpu_bps, 
bp->cpu);
29da4f91c0c1fb Ravi Bangoria 2020-05-14  239    for (i = 0; i < nr_wp_slots(); 
i++) {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  240            if (!cpu_bp[i]) {
29da4f91c0c1fb Ravi Bangoria 2020-05-14  241                    cpu_bp[i] = tmp;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  242                    break;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  243            }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  244    }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  245    return 0;
29da4f91c0c1fb Ravi Bangoria 2020-05-14  246  }
29da4f91c0c1fb Ravi Bangoria 2020-05-14  247  

---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/[email protected]

Attachment: .config.gz
Description: application/gzip

_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to