regs->ARM_cpsr &= ~PSR_T_BIT;
}
+void arch_remove_uprobe(struct uprobe *up)
+{
+ swap_slot_free(up->sm, up->atramp.utramp);
+}
+
static void restore_opcode_for_thumb(struct kprobe *p, struct pt_regs *regs)
{
if (thumb_mode(regs) && !is_thumb2(p->opcode)) {
unsigned long arch_get_trampoline_addr(struct kprobe *p, struct pt_regs *regs);
void arch_set_orig_ret_addr(unsigned long orig_ret_addr, struct pt_regs *regs);
+void arch_remove_uprobe(struct uprobe *up);
static inline unsigned long swap_get_uarg(struct pt_regs *regs, unsigned long n)
{
regs->EREG(ip) = orig_ret_addr;
}
+void arch_remove_uprobe(struct uprobe *up)
+{
+ struct kprobe *p = up2kp(up);
+
+ swap_slot_free(up->sm, p->ainsn.insn);
+}
+
static void set_user_jmp_op(void *from, void *to)
{
struct __arch_jmp_op
struct task_struct *task);
unsigned long arch_get_trampoline_addr(struct kprobe *p, struct pt_regs *regs);
void arch_set_orig_ret_addr(unsigned long orig_ret_addr, struct pt_regs *regs);
+void arch_remove_uprobe(struct uprobe *up);
static inline unsigned long swap_get_uarg(struct pt_regs *regs, unsigned long n)
{
static void remove_uprobe(struct uprobe *up)
{
- struct kprobe *p = up2kp(up);
-
- swap_slot_free(up->sm, p->ainsn.insn);
+ arch_remove_uprobe(up);
}
static struct hlist_head *uretprobe_inst_table_head(void *hash_key)