free_insn_slot(&uprobe_insn_pages, task, p->ainsn.insn_thumb);
return -EFAULT;
}
- if ((p->safe_arm == -1) && (p->safe_thumb == -1)) {
+ if ((p->safe_arm == 1) && (p->safe_thumb == 1)) {
printk("Error in %s at %d: failed arch_copy_trampoline_*_uprobe() (both) [tgid=%u, addr=%lx, data=%lx]\n",
__FILE__, __LINE__, task->tgid, (unsigned long)p->addr, (unsigned long)p->opcode);
free_insn_slot(&uprobe_insn_pages, task, p->ainsn.insn_arm);
kprobe_opcode_t insn[MAX_INSN_SIZE];
struct arch_specific_insn ainsn;
- p->safe_arm = -1;
+ p->safe_arm = 1;
if ((unsigned long) p->addr & 0x01)
{
printk("Error in %s at %d: attempt to register kprobe at an unaligned address\n", __FILE__, __LINE__);
if (pc_dep && (ARM_INSN_REG_RD (ainsn.insn_arm[0]) == 13))
{
printk("Error in %s at %d: instruction check failed (arm)\n", __FILE__, __LINE__);
- p->safe_arm = -1;
+ p->safe_arm = 1;
// TODO: move free to later phase
//free_insn_slot (&uprobe_insn_pages, task, p->ainsn.insn_arm, 0);
//ret = -EFAULT;
{
printk("Error in %s at %d: failed to prepare exec buffer for insn %lx!",
__FILE__, __LINE__, insn[0]);
- p->safe_arm = -1;
+ p->safe_arm = 1;
// TODO: move free to later phase
//free_insn_slot (&uprobe_insn_pages, task, p->ainsn.insn_arm, 0);
//return -EINVAL;
struct arch_specific_insn ainsn;
kprobe_opcode_t insns[UPROBES_TRAMP_LEN * 2];
- p->safe_thumb = -1;
+ p->safe_thumb = 1;
if ((unsigned long) p->addr & 0x01)
{
printk("Error in %s at %d: attempt to register kprobe at an unaligned address\n", __FILE__, __LINE__);
{
printk("Error in %s at %d: failed to prepare exec buffer for insn %lx!",
__FILE__, __LINE__, insn[0]);
- p->safe_thumb = -1;
+ p->safe_thumb = 1;
//free_insn_slot (&uprobe_insn_pages, task, p->ainsn.insn_thumb, 0);
//return -EINVAL;
}
struct kprobe *kp;
if (unlikely(thumb_mode(regs))) {
- if (p->safe_thumb != -1) {
+ if (p->safe_thumb != 1) {
p->ainsn.insn = p->ainsn.insn_thumb;
list_for_each_entry_rcu(kp, &p->list, list) {
kp->ainsn.insn = p->ainsn.insn_thumb;
return -1;
}
} else {
- if (p->safe_arm != -1) {
+ if (p->safe_arm != 1) {
p->ainsn.insn = p->ainsn.insn_arm;
list_for_each_entry_rcu(kp, &p->list, list) {
kp->ainsn.insn = p->ainsn.insn_arm;