Messages in this thread | | | Date | Thu, 16 Oct 2014 11:27:59 +0530 | From | Srikar Dronamraju <> | Subject | Re: [PATCH v1 10/10] uprobes: Remove "weak" from function declarations |
| |
* Bjorn Helgaas <bhelgaas@google.com> [2014-10-15 11:06:50]:
> For the following interfaces: > > set_swbp() > set_orig_insn() > is_swbp_insn() > is_trap_insn() > uprobe_get_swbp_addr() > arch_uprobe_ignore() > arch_uprobe_copy_ixol() > > kernel/events/uprobes.c provides default definitions explicitly marked > "weak". Some architectures provide their own definitions intended to > override the defaults, but the "weak" attribute on the declarations applied > to the arch definitions as well, so the linker chose one based on link > order (see 10629d711ed7 ("PCI: Remove __weak annotation from > pcibios_get_phb_of_node decl")). > > Remove the "weak" attribute from the declarations so we always prefer a > non-weak definition over the weak one, independent of link order. >
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> > CC: Victor Kamensky <victor.kamensky@linaro.org> > CC: Oleg Nesterov <oleg@redhat.com> > CC: David A. Long <dave.long@linaro.org> > CC: Srikar Dronamraju <srikar@linux.vnet.ibm.com> > CC: Ananth N Mavinakayanahalli <ananth@in.ibm.com> > --- > include/linux/uprobes.h | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/include/linux/uprobes.h b/include/linux/uprobes.h > index 4f844c6b03ee..60beb5dc7977 100644 > --- a/include/linux/uprobes.h > +++ b/include/linux/uprobes.h > @@ -98,11 +98,11 @@ struct uprobes_state { > struct xol_area *xol_area; > }; > > -extern int __weak set_swbp(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long vaddr); > -extern int __weak set_orig_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long vaddr); > -extern bool __weak is_swbp_insn(uprobe_opcode_t *insn); > -extern bool __weak is_trap_insn(uprobe_opcode_t *insn); > -extern unsigned long __weak uprobe_get_swbp_addr(struct pt_regs *regs); > +extern int set_swbp(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long vaddr); > +extern int set_orig_insn(struct arch_uprobe *aup, struct mm_struct *mm, unsigned long vaddr); > +extern bool is_swbp_insn(uprobe_opcode_t *insn); > +extern bool is_trap_insn(uprobe_opcode_t *insn); > +extern unsigned long uprobe_get_swbp_addr(struct pt_regs *regs); > extern unsigned long uprobe_get_trap_addr(struct pt_regs *regs); > extern int uprobe_write_opcode(struct mm_struct *mm, unsigned long vaddr, uprobe_opcode_t); > extern int uprobe_register(struct inode *inode, loff_t offset, struct uprobe_consumer *uc); > @@ -128,8 +128,8 @@ extern bool arch_uprobe_xol_was_trapped(struct task_struct *tsk); > extern int arch_uprobe_exception_notify(struct notifier_block *self, unsigned long val, void *data); > extern void arch_uprobe_abort_xol(struct arch_uprobe *aup, struct pt_regs *regs); > extern unsigned long arch_uretprobe_hijack_return_addr(unsigned long trampoline_vaddr, struct pt_regs *regs); > -extern bool __weak arch_uprobe_ignore(struct arch_uprobe *aup, struct pt_regs *regs); > -extern void __weak arch_uprobe_copy_ixol(struct page *page, unsigned long vaddr, > +extern bool arch_uprobe_ignore(struct arch_uprobe *aup, struct pt_regs *regs); > +extern void arch_uprobe_copy_ixol(struct page *page, unsigned long vaddr, > void *src, unsigned long len); > #else /* !CONFIG_UPROBES */ > struct uprobes_state { > > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/
-- Thanks and Regards Srikar Dronamraju
| |