Hi Delyan, Thank you for the patch! Yet something to improve: [auto build test ERROR on bpf-next/master] url: https://github.com/intel-lab-lkp/linux/commits/Delyan-Kratunov/sleepable-uprobe-support/20220503-071247 base: https://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next.git master config: i386-defconfig (https://download.01.org/0day-ci/archive/20220503/202205031441.1fhDuUQK-lkp@xxxxxxxxx/config) compiler: gcc-11 (Debian 11.2.0-20) 11.2.0 reproduce (this is a W=1 build): # https://github.com/intel-lab-lkp/linux/commit/cfa0f114829902b579da16d7520a39317905c502 git remote add linux-review https://github.com/intel-lab-lkp/linux git fetch --no-tags linux-review Delyan-Kratunov/sleepable-uprobe-support/20220503-071247 git checkout cfa0f114829902b579da16d7520a39317905c502 # save the config file mkdir build_dir && cp config build_dir/.config make W=1 O=build_dir ARCH=i386 SHELL=/bin/bash If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot <lkp@xxxxxxxxx> All errors (new ones prefixed by >>): kernel/trace/trace_uprobe.c: In function '__uprobe_perf_func': >> kernel/trace/trace_uprobe.c:1349:23: error: implicit declaration of function 'uprobe_call_bpf'; did you mean 'trace_call_bpf'? [-Werror=implicit-function-declaration] 1349 | ret = uprobe_call_bpf(call, regs); | ^~~~~~~~~~~~~~~ | trace_call_bpf cc1: some warnings being treated as errors vim +1349 kernel/trace/trace_uprobe.c 1334 1335 static void __uprobe_perf_func(struct trace_uprobe *tu, 1336 unsigned long func, struct pt_regs *regs, 1337 struct uprobe_cpu_buffer *ucb, int dsize) 1338 { 1339 struct trace_event_call *call = trace_probe_event_call(&tu->tp); 1340 struct uprobe_trace_entry_head *entry; 1341 struct hlist_head *head; 1342 void *data; 1343 int size, esize; 1344 int rctx; 1345 1346 if (bpf_prog_array_valid(call)) { 1347 u32 ret; 1348 > 1349 ret = uprobe_call_bpf(call, regs); 1350 if (!ret) 1351 return; 1352 } 1353 1354 esize = SIZEOF_TRACE_ENTRY(is_ret_probe(tu)); 1355 1356 size = esize + tu->tp.size + dsize; 1357 size = ALIGN(size + sizeof(u32), sizeof(u64)) - sizeof(u32); 1358 if (WARN_ONCE(size > PERF_MAX_TRACE_SIZE, "profile buffer not large enough")) 1359 return; 1360 1361 preempt_disable(); 1362 head = this_cpu_ptr(call->perf_events); 1363 if (hlist_empty(head)) 1364 goto out; 1365 1366 entry = perf_trace_buf_alloc(size, NULL, &rctx); 1367 if (!entry) 1368 goto out; 1369 1370 if (is_ret_probe(tu)) { 1371 entry->vaddr[0] = func; 1372 entry->vaddr[1] = instruction_pointer(regs); 1373 data = DATAOF_TRACE_ENTRY(entry, true); 1374 } else { 1375 entry->vaddr[0] = instruction_pointer(regs); 1376 data = DATAOF_TRACE_ENTRY(entry, false); 1377 } 1378 1379 memcpy(data, ucb->buf, tu->tp.size + dsize); 1380 1381 if (size - esize > tu->tp.size + dsize) { 1382 int len = tu->tp.size + dsize; 1383 1384 memset(data + len, 0, size - esize - len); 1385 } 1386 1387 perf_trace_buf_submit(entry, size, rctx, call->event.type, 1, regs, 1388 head, NULL); 1389 out: 1390 preempt_enable(); 1391 } 1392 -- 0-DAY CI Kernel Test Service https://01.org/lkp