lkml.org 
[lkml]   [2014]   [Oct]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Date
    SubjectRe: [PATCH v1 10/10] uprobes: Remove "weak" from function declarations
    [+cc Victor, Oleg, David, Srikar, Ananth, Russell, linux-arm-kernel,
    Ben, Paul, Michael, linuxppc-dev. arm and powerpc define some of
    these functions and are at risk for this issue.]

    On Wed, Oct 15, 2014 at 11:06 AM, Bjorn Helgaas <bhelgaas@google.com> wrote:
    > 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.
    >
    > 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 {
    >


    \
     
     \ /
      Last update: 2014-10-16 02:21    [W:4.039 / U:0.568 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site