The patch titled i386 Text Edit Lock: kprobes has been added to the -mm tree. Its filename is i386-text-edit-lock-kprobes.patch *** Remember to use Documentation/SubmitChecklist when testing your code *** See http://www.zip.com.au/~akpm/linux/patches/stuff/added-to-mm.txt to find out what to do about this ------------------------------------------------------ Subject: i386 Text Edit Lock: kprobes From: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxx> Kprobes can use the text edit lock to insure mutual exclusion when edition the code and make sure the pages are writable. Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@xxxxxxxxxx> Cc: <prasanna@xxxxxxxxxx> Cc: <ananth@xxxxxxxxxx> Cc: <anil.s.keshavamurthy@xxxxxxxxx> Cc: <davem@xxxxxxxxxxxxx> Cc: Andi Kleen <ak@xxxxxxx> Signed-off-by: Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> --- arch/i386/kernel/kprobes.c | 30 ++++-------------------------- 1 files changed, 4 insertions(+), 26 deletions(-) diff -puN arch/i386/kernel/kprobes.c~i386-text-edit-lock-kprobes arch/i386/kernel/kprobes.c --- a/arch/i386/kernel/kprobes.c~i386-text-edit-lock-kprobes +++ a/arch/i386/kernel/kprobes.c @@ -169,42 +169,20 @@ int __kprobes arch_prepare_kprobe(struct void __kprobes arch_arm_kprobe(struct kprobe *p) { - unsigned long addr = (unsigned long) p->addr; - int page_readonly = 0; - - if (kernel_readonly_text(addr)) { - page_readonly = 1; - change_page_attr(virt_to_page(addr), 1, PAGE_KERNEL_RWX); - global_flush_tlb(); - } - + kernel_text_lock((unsigned long)p->addr, sizeof(kprobe_opcode_t)); *p->addr = BREAKPOINT_INSTRUCTION; + kernel_text_unlock((unsigned long)p->addr, sizeof(kprobe_opcode_t)); flush_icache_range((unsigned long) p->addr, (unsigned long) p->addr + sizeof(kprobe_opcode_t)); - - if (page_readonly) { - change_page_attr(virt_to_page(addr), 1, PAGE_KERNEL_RX); - global_flush_tlb(); - } } void __kprobes arch_disarm_kprobe(struct kprobe *p) { - unsigned long addr = (unsigned long) p->addr; - int page_readonly = 0; - - if (kernel_readonly_text(addr)) { - page_readonly = 1; - change_page_attr(virt_to_page(addr), 1, PAGE_KERNEL_RWX); - global_flush_tlb(); - } + kernel_text_lock((unsigned long)p->addr, sizeof(kprobe_opcode_t)); *p->addr = p->opcode; + kernel_text_unlock((unsigned long)p->addr, sizeof(kprobe_opcode_t)); flush_icache_range((unsigned long) p->addr, (unsigned long) p->addr + sizeof(kprobe_opcode_t)); - if (page_readonly) { - change_page_attr(virt_to_page(addr), 1, PAGE_KERNEL_RX); - global_flush_tlb(); - } } void __kprobes arch_remove_kprobe(struct kprobe *p) _ Patches currently in -mm which might be from mathieu.desnoyers@xxxxxxxxxx are powerpc-promc-remove-undef-printk.patch i386-text-edit-lock.patch i386-text-edit-lock-alternative-instructions.patch i386-text-edit-lock-kprobes.patch - To unsubscribe from this list: send the line "unsubscribe mm-commits" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html