Re: [PATCH RESEND] trace_uprobe: support reference counter in fd-based uprobe

From: Song Liu
Date: Tue Sep 25 2018 - 10:46:50 EST


Hi,

This patch is based on this branch:

https://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace.git/log/?h=ftrace/core

Thanks,
Song



> On Sep 24, 2018, at 11:26 PM, kbuild test robot <lkp@xxxxxxxxx> wrote:
>
> Hi Song,
>
> Thank you for the patch! Yet something to improve:
>
> [auto build test ERROR on tip/perf/core]
> [also build test ERROR on v4.19-rc5 next-20180925]
> [if your patch is applied to the wrong git tree, please drop us a note to help improve the system]
>
> url: https://github.com/0day-ci/linux/commits/Song-Liu/trace_uprobe-support-reference-counter-in-fd-based-uprobe/20180925-135454
> config: i386-randconfig-x005-201838 (attached as .config)
> compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
> reproduce:
> # save the attached .config to linux build tree
> make ARCH=i386
>
> All errors (new ones prefixed by >>):
>
> kernel/trace/trace_uprobe.c: In function 'create_local_trace_uprobe':
>>> kernel/trace/trace_uprobe.c:1376:4: error: 'struct trace_uprobe' has no member named 'ref_ctr_offset'
> tu->ref_ctr_offset = ref_ctr_offset;
> ^~
>
> vim +1376 kernel/trace/trace_uprobe.c
>
> 1340
> 1341 #ifdef CONFIG_PERF_EVENTS
> 1342 struct trace_event_call *
> 1343 create_local_trace_uprobe(char *name, unsigned long offs,
> 1344 unsigned long ref_ctr_offset, bool is_return)
> 1345 {
> 1346 struct trace_uprobe *tu;
> 1347 struct path path;
> 1348 int ret;
> 1349
> 1350 ret = kern_path(name, LOOKUP_FOLLOW, &path);
> 1351 if (ret)
> 1352 return ERR_PTR(ret);
> 1353
> 1354 if (!d_is_reg(path.dentry)) {
> 1355 path_put(&path);
> 1356 return ERR_PTR(-EINVAL);
> 1357 }
> 1358
> 1359 /*
> 1360 * local trace_kprobes are not added to probe_list, so they are never
> 1361 * searched in find_trace_kprobe(). Therefore, there is no concern of
> 1362 * duplicated name "DUMMY_EVENT" here.
> 1363 */
> 1364 tu = alloc_trace_uprobe(UPROBE_EVENT_SYSTEM, "DUMMY_EVENT", 0,
> 1365 is_return);
> 1366
> 1367 if (IS_ERR(tu)) {
> 1368 pr_info("Failed to allocate trace_uprobe.(%d)\n",
> 1369 (int)PTR_ERR(tu));
> 1370 path_put(&path);
> 1371 return ERR_CAST(tu);
> 1372 }
> 1373
> 1374 tu->offset = offs;
> 1375 tu->path = path;
>> 1376 tu->ref_ctr_offset = ref_ctr_offset;
> 1377 tu->filename = kstrdup(name, GFP_KERNEL);
> 1378 init_trace_event_call(tu, &tu->tp.call);
> 1379
> 1380 if (set_print_fmt(&tu->tp, is_ret_probe(tu)) < 0) {
> 1381 ret = -ENOMEM;
> 1382 goto error;
> 1383 }
> 1384
> 1385 return &tu->tp.call;
> 1386 error:
> 1387 free_trace_uprobe(tu);
> 1388 return ERR_PTR(ret);
> 1389 }
> 1390
>
> ---
> 0-DAY kernel test infrastructure Open Source Technology Center
> https://urldefense.proofpoint.com/v2/url?u=https-3A__lists.01.org_pipermail_kbuild-2Dall&d=DwIBAg&c=5VD0RTtNlTh3ycd41b3MUw&r=i6WobKxbeG3slzHSIOxTVtYIJw7qjCE6S0spDTKL-J4&m=3vAXcNkXYHALEVsIZG7-ToPCNADLh0bCVwEpureyaaw&s=eKJR9UoqZ2KCoTN58CznxX7ipOGdcRwG0zWFLsbzHXc&e= Intel Corporation
> <.config.gz>