All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: akpm@linux-foundation.org, linux-kernel@vger.kernel.org
Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>,
	prasanna@in.ibm.com, ananth@in.ibm.com,
	anil.s.keshavamurthy@intel.com, davem@davemloft.net
Subject: [patch 8/8] Text Edit Lock - kprobes x86_64
Date: Fri, 13 Jul 2007 21:21:41 -0400	[thread overview]
Message-ID: <20070714012415.427453981@polymtl.ca> (raw)
In-Reply-To: 20070714012133.612727310@polymtl.ca

[-- Attachment #1: text-edit-lock-kprobes-x86_64.patch --]
[-- Type: text/plain, Size: 2227 bytes --]

Kprobes can use the text edit lock to insure mutual exclusion when editing the
code.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
CC: prasanna@in.ibm.com
CC: ananth@in.ibm.com
CC: anil.s.keshavamurthy@intel.com
CC: davem@davemloft.net
---
 arch/x86_64/kernel/kprobes.c |   30 ++++--------------------------
 1 file changed, 4 insertions(+), 26 deletions(-)

Index: linux-2.6-lttng/arch/x86_64/kernel/kprobes.c
===================================================================
--- linux-2.6-lttng.orig/arch/x86_64/kernel/kprobes.c	2007-07-13 16:08:14.000000000 -0400
+++ linux-2.6-lttng/arch/x86_64/kernel/kprobes.c	2007-07-13 16:41:49.000000000 -0400
@@ -209,42 +209,20 @@
 
 void __kprobes arch_arm_kprobe(struct kprobe *p)
 {
-	unsigned long addr = (unsigned long)p->addr;
-	int page_readonly = 0;
-
-	if (kernel_readonly_text(addr)) {
-		change_page_attr_addr(addr, 1, PAGE_KERNEL_EXEC);
-		global_flush_tlb();
-		page_readonly = 1;
-	}
+	kernel_text_mark_rw((unsigned long) p->addr, sizeof(kprobe_opcode_t));
 	*p->addr = BREAKPOINT_INSTRUCTION;
+	kernel_text_unmark((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_addr(addr, 1, PAGE_KERNEL_RO);
-		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)) {
-		change_page_attr_addr(addr, 1, PAGE_KERNEL_EXEC);
-		global_flush_tlb();
-		page_readonly = 1;
-	}
-
+	kernel_text_mark_rw((unsigned long) p->addr, sizeof(kprobe_opcode_t));
 	*p->addr = p->opcode;
+	kernel_text_unmark((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_addr(addr, 1, PAGE_KERNEL_RO);
-		global_flush_tlb();
-	}
 }
 
 void __kprobes arch_remove_kprobe(struct kprobe *p)

-- 
Mathieu Desnoyers
Computer Engineering Ph.D. Student, Ecole Polytechnique de Montreal
OpenPGP key fingerprint: 8CD5 52C3 8E3C 4140 715F  BA06 3F25 A8FE 3BAE 9A68

  parent reply	other threads:[~2007-07-14  1:27 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-07-14  1:21 [patch 0/8] Text Edit Lock Mathieu Desnoyers
2007-07-14  1:21 ` [patch 1/8] Kprobes - do not use kprobes mutex in arch code Mathieu Desnoyers
2007-07-14 10:49   ` Christoph Hellwig
2007-07-14 19:20     ` Mathieu Desnoyers
2007-07-16 10:27       ` Ananth N Mavinakayanahalli
2007-07-16 15:12         ` Mathieu Desnoyers
2007-07-14 19:30     ` Mathieu Desnoyers
2007-07-14 19:51     ` [PATCH] Kprobes - use a mutex to protect the instruction pages list Mathieu Desnoyers
2007-07-17  5:38       ` Ananth N Mavinakayanahalli
2007-07-14 19:52     ` [PATCH] Kprobes - Declare kprobe_mutex static Mathieu Desnoyers
2007-07-17  5:39       ` Ananth N Mavinakayanahalli
2007-07-17  5:38   ` [patch 1/8] Kprobes - do not use kprobes mutex in arch code Ananth N Mavinakayanahalli
2007-07-14  1:21 ` [patch 2/8] Text Edit Lock - Architecture Independent Code Mathieu Desnoyers
2007-07-14 22:55   ` [PATCH] Immediate Values - Architecture Independent Code - Fixes following HCH comments Mathieu Desnoyers
2007-07-14 22:57     ` (drop : wrong email thread) " Mathieu Desnoyers
2007-07-15  1:28   ` [PATCH] Text Edit Lock - Architecture Independent Code - kerneldoc Mathieu Desnoyers
2007-07-15  9:04     ` Christoph Hellwig
2007-07-15 23:30     ` Mathieu Desnoyers
2007-07-15 23:35   ` [PATCH] Text Edit Lock - Architecture Independent Code for Implementation Mathieu Desnoyers
2007-07-14  1:21 ` [patch 3/8] Text Edit Lock - i386 Mathieu Desnoyers
2007-07-14 16:18   ` Christoph Hellwig
2007-07-14 20:08     ` [PATCH] Text Edit Lock - i386 Use kernel_text_is_ro Mathieu Desnoyers
2007-07-14 23:31   ` [PATCH] Text Edit Lock - i386 Fix endif CONFIG_DEBUG_RODATA Mathieu Desnoyers
2007-07-15  1:29     ` [PATCH] Text Edit Lock - i386 kerneldoc Mathieu Desnoyers
2007-07-15 23:30       ` Mathieu Desnoyers
2007-07-15 23:36   ` [PATCH] Text Edit Lock - i386 kerneldoc implementation Mathieu Desnoyers
2007-07-14  1:21 ` [patch 4/8] Text Edit Lock - x86_64 Mathieu Desnoyers
2007-07-14 20:16   ` [PATCH] Text Edit Lock - x86_64 Use kernel_tex_is_ro Mathieu Desnoyers
2007-07-14 23:32   ` [PATCH] Text Edit Lock - x86_64 Fix !CONFIG_DEBUG_RODATA Mathieu Desnoyers
2007-07-15  1:30     ` [PATCH] Text Edit Lock - x86_64 kerneldoc Mathieu Desnoyers
2007-07-15 23:30       ` Mathieu Desnoyers
2007-07-15 23:38   ` [PATCH] Text Edit Lock - x86_64 kerneldoc implementation Mathieu Desnoyers
2007-07-14  1:21 ` [patch 5/8] Text Edit Lock - Alternative code for i386 and x86_64 Mathieu Desnoyers
2007-07-14  1:21 ` [patch 6/8] Text Edit Lock - Kprobes architecture independent support Mathieu Desnoyers
2007-07-14 19:56   ` [PATCH] Kprobes - no kprobes_mutex needed around arch_remove_kprobe calls Mathieu Desnoyers
2007-07-14  1:21 ` [patch 7/8] Text Edit Lock - kprobes i386 Mathieu Desnoyers
2007-07-14  1:21 ` Mathieu Desnoyers [this message]
2007-07-14 10:50 ` [patch 0/8] Text Edit Lock Christoph Hellwig
2007-07-14 15:21   ` Mathieu Desnoyers

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20070714012415.427453981@polymtl.ca \
    --to=mathieu.desnoyers@polymtl.ca \
    --cc=akpm@linux-foundation.org \
    --cc=ananth@in.ibm.com \
    --cc=anil.s.keshavamurthy@intel.com \
    --cc=davem@davemloft.net \
    --cc=linux-kernel@vger.kernel.org \
    --cc=prasanna@in.ibm.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.