linux-pci.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).