All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
To: Christoph Hellwig <hch@infradead.org>,
	akpm@linux-foundation.org, linux-kernel@vger.kernel.org
Subject: [PATCH] Text Edit Lock - i386 Use kernel_text_is_ro
Date: Sat, 14 Jul 2007 16:08:57 -0400	[thread overview]
Message-ID: <20070714200857.GP6975@Krystal> (raw)
In-Reply-To: <20070714161831.GA13831@infradead.org>

Text Edit Lock - i386 use kernel_text_is_ro

* Christoph Hellwig (hch@infradead.org) wrote:
> On Fri, Jul 13, 2007 at 09:21:36PM -0400, Mathieu Desnoyers wrote:
> > +#ifdef CONFIG_DEBUG_RODATA
> > +static int rodata_marked;
> > +#endif
> 
> Maybe I'm missing something, but the rodata section should always stay
> r/o, only text needs locking/unlocking, no?
> 
> Given that all code in this patch only operates on .text this seems fine,
> but the variables/config options are grossly misnamed then.  And actually
> making rodata r/o doesn't seem like a pure debugging thing to me either.

I think it will change to two different config options eventually (RO
data and RO text). But for now, it makes more sense to use the
kernel_text_is_ro variable.

And since we do not plan to call kernel_text_mark_rw()/kernel_text_unmark()
in the middle of mark_rodata_ro (we are still at boot time), there is no
need to wait until after global_flush_tlb() mark the rodata. And it makes to
rename mark_rodata_ro into kernel_rodata_is_ro.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
CC: hch@infradead.org
---
 arch/i386/mm/init.c |   10 ++++------
 1 file changed, 4 insertions(+), 6 deletions(-)

Index: linux-2.6-lttng/arch/i386/mm/init.c
===================================================================
--- linux-2.6-lttng.orig/arch/i386/mm/init.c	2007-07-14 16:04:20.000000000 -0400
+++ linux-2.6-lttng/arch/i386/mm/init.c	2007-07-14 16:05:45.000000000 -0400
@@ -47,6 +47,7 @@
 #include <asm/paravirt.h>
 
 int kernel_text_is_ro;
+int kernel_rodata_is_ro;
 unsigned int __VMALLOC_RESERVE = 128 << 20;
 
 DEFINE_PER_CPU(struct mmu_gather, mmu_gathers);
@@ -54,9 +55,6 @@ unsigned long highstart_pfn, highend_pfn
 
 static int noinline do_test_wp_bit(void);
 
-#ifdef CONFIG_DEBUG_RODATA
-static int rodata_marked;
-#endif
 
 /*
  * Creates a middle page table and puts a pointer to it in the
@@ -817,6 +815,7 @@ void mark_rodata_ro(void)
 	                 size >> PAGE_SHIFT, PAGE_KERNEL_RO);
 	printk("Write protecting the kernel read-only data: %luk\n",
 	       size >> 10);
+	kernel_rodata_is_ro = 1;
 
 	/*
 	 * change_page_attr() requires a global_flush_tlb() call after it.
@@ -825,7 +824,6 @@ void mark_rodata_ro(void)
 	 * of who is the culprit.
 	 */
 	global_flush_tlb();
-	rodata_marked = 1;
 }
 
 /*
@@ -834,7 +832,7 @@ void mark_rodata_ro(void)
  */
 void __kprobes kernel_text_mark_rw(unsigned long address, size_t len)
 {
-	if (rodata_marked && address >= PFN_ALIGN(_text)
+	if (kernel_text_is_ro && address >= PFN_ALIGN(_text)
 			&& (address + len) <= PFN_ALIGN(_etext)) {
 		unsigned long nr_pages;
 		nr_pages = ((address + len) >> PAGE_SHIFT)
@@ -851,7 +849,7 @@ EXPORT_SYMBOL_GPL(kernel_text_mark_rw);
 
 void __kprobes kernel_text_unmark(unsigned long address, size_t len)
 {
-	if (rodata_marked && address >= PFN_ALIGN(_text)
+	if (kernel_text_is_ro && address >= PFN_ALIGN(_text)
 			&& (address + len) <= PFN_ALIGN(_etext)) {
 		unsigned long nr_pages;
 		nr_pages = ((address + len) >> PAGE_SHIFT)

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

  reply	other threads:[~2007-07-14 20:09 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     ` Mathieu Desnoyers [this message]
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 ` [patch 8/8] Text Edit Lock - kprobes x86_64 Mathieu Desnoyers
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=20070714200857.GP6975@Krystal \
    --to=mathieu.desnoyers@polymtl.ca \
    --cc=akpm@linux-foundation.org \
    --cc=hch@infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    /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.