* [pci:pci/hotplug 50/50] drivers/pci/pcie/aer_inject.c:533:20: error: field 'ops' has incomplete type
@ 2018-10-11 19:16 kbuild test robot
0 siblings, 0 replies; only message in thread
From: kbuild test robot @ 2018-10-11 19:16 UTC (permalink / raw)
To: Keith Busch; +Cc: kbuild-all, linux-pci, Bjorn Helgaas
[-- Attachment #1: Type: text/plain, Size: 5209 bytes --]
tree: https://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git pci/hotplug
head: bb5d7215a17f1ae821f48122fb7deb5abbe5b5d1
commit: bb5d7215a17f1ae821f48122fb7deb5abbe5b5d1 [50/50] PCI/AER: Covertly inject errors with ftrace hooks
config: i386-randconfig-x073-201840 (attached as .config)
compiler: gcc-7 (Debian 7.3.0-1) 7.3.0
reproduce:
git checkout bb5d7215a17f1ae821f48122fb7deb5abbe5b5d1
# save the attached .config to linux build tree
make ARCH=i386
All errors (new ones prefixed by >>):
>> drivers/pci/pcie/aer_inject.c:533:20: error: field 'ops' has incomplete type
struct ftrace_ops ops;
^~~
drivers/pci/pcie/aer_inject.c: In function 'aer_inject_resolve_hook_address':
>> drivers/pci/pcie/aer_inject.c:564:55: error: 'MCOUNT_INSN_SIZE' undeclared (first use in this function); did you mean 'KCOV_CMP_SIZE'?
*((unsigned long*) hook->original) = hook->address + MCOUNT_INSN_SIZE;
^~~~~~~~~~~~~~~~
KCOV_CMP_SIZE
drivers/pci/pcie/aer_inject.c:564:55: note: each undeclared identifier is reported only once for each function it appears in
drivers/pci/pcie/aer_inject.c: In function 'aer_inject_ftrace_thunk':
>> drivers/pci/pcie/aer_inject.c:572:29: error: dereferencing pointer to incomplete type 'struct ftrace_ops'
struct aer_hook *hook = ops->private;
^~
drivers/pci/pcie/aer_inject.c: In function 'aer_inject_install_hook':
>> drivers/pci/pcie/aer_inject.c:586:20: error: 'FTRACE_OPS_FL_SAVE_REGS' undeclared (first use in this function); did you mean 'PTRACE_SETREGS'?
hook->ops.flags = FTRACE_OPS_FL_SAVE_REGS |
^~~~~~~~~~~~~~~~~~~~~~~
PTRACE_SETREGS
>> drivers/pci/pcie/aer_inject.c:587:6: error: 'FTRACE_OPS_FL_RECURSION_SAFE' undeclared (first use in this function); did you mean 'FTRACE_OPS_FL_SAVE_REGS'?
FTRACE_OPS_FL_RECURSION_SAFE |
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
FTRACE_OPS_FL_SAVE_REGS
>> drivers/pci/pcie/aer_inject.c:588:6: error: 'FTRACE_OPS_FL_IPMODIFY' undeclared (first use in this function); did you mean 'FTRACE_OPS_FL_SAVE_REGS'?
FTRACE_OPS_FL_IPMODIFY;
^~~~~~~~~~~~~~~~~~~~~~
FTRACE_OPS_FL_SAVE_REGS
vim +/ops +533 drivers/pci/pcie/aer_inject.c
525
526 static asmlinkage int (*read_config_dword)(struct pci_bus *bus,
527 unsigned int devfn,
528 int where, u32 *val);
529 static asmlinkage int (*write_config_dword)(struct pci_bus *bus,
530 unsigned int devfn,
531 int where, u32 val);
532 struct aer_hook {
> 533 struct ftrace_ops ops;
534 const char *name;
535 void *function;
536 void *original;
537 unsigned long address;
538 };
539
540 static int asmlinkage ainj_read_config_dword(struct pci_bus *bus,
541 unsigned int devfn, int where, u32 *val)
542 {
543 if (!aer_inj_read_config(bus, devfn, where, sizeof(u32), (u32 *)val))
544 return 0;
545 return read_config_dword(bus, devfn, where, val);
546 }
547
548 static int asmlinkage ainj_write_config_dword(struct pci_bus *bus,
549 unsigned int devfn, int where, u32 val)
550 {
551 if (!aer_inj_write_config(bus, devfn, where, sizeof(u32), val))
552 return 0;
553 return write_config_dword(bus, devfn, where, val);
554 }
555
556 static int aer_inject_resolve_hook_address(struct aer_hook *hook)
557 {
558 hook->address = kallsyms_lookup_name(hook->name);
559
560 if (!hook->address) {
561 pr_warn("unresolved symbol: %s\n", hook->name);
562 return -ENOENT;
563 }
> 564 *((unsigned long*) hook->original) = hook->address + MCOUNT_INSN_SIZE;
565
566 return 0;
567 }
568
569 static void notrace aer_inject_ftrace_thunk(unsigned long ip, unsigned long parent_ip,
570 struct ftrace_ops *ops, struct pt_regs *regs)
571 {
> 572 struct aer_hook *hook = ops->private;
573 instruction_pointer_set(regs, (unsigned long)hook->function);
574 }
575
576 static int aer_inject_install_hook(struct aer_hook *hook)
577 {
578 int err;
579
580 err = aer_inject_resolve_hook_address(hook);
581 if (err)
582 return err;
583
584 hook->ops.private = hook;
585 hook->ops.func = aer_inject_ftrace_thunk;
> 586 hook->ops.flags = FTRACE_OPS_FL_SAVE_REGS |
> 587 FTRACE_OPS_FL_RECURSION_SAFE |
> 588 FTRACE_OPS_FL_IPMODIFY;
589 err = ftrace_set_filter_ip(&hook->ops, hook->address, 0, 0);
590 if (err) {
591 pr_warn("ftrace_set_filter_ip() failed: %d\n", err);
592 return err;
593 }
594
595 err = register_ftrace_function(&hook->ops);
596 if (err) {
597 pr_warn("register_ftrace_function() failed: %d\n", err);
598 ftrace_set_filter_ip(&hook->ops, hook->address, 1, 0);
599 return err;
600 }
601 return 0;
602 }
603
---
0-DAY kernel test infrastructure Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all Intel Corporation
[-- Attachment #2: .config.gz --]
[-- Type: application/gzip, Size: 32223 bytes --]
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2018-10-11 19:20 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-10-11 19:16 [pci:pci/hotplug 50/50] drivers/pci/pcie/aer_inject.c:533:20: error: field 'ops' has incomplete type kbuild test robot
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.