x86: enhance DEBUG_RODATA support for hotplug and kprobes
Standardize DEBUG_RODATA, removing special cases for hotplug and kprobes. Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca> Cc: Andi Kleen <andi@firstfloor.org> Cc: pageexec@freemail.hu Cc: akpm@linux-foundation.org CC: Andi Kleen <andi@firstfloor.org> CC: pageexec@freemail.hu CC: H. Peter Anvin <hpa@zytor.com> Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
Родитель
e587cadd8f
Коммит
4e4eee0e01
|
@ -723,25 +723,17 @@ void mark_rodata_ro(void)
|
|||
unsigned long start = PFN_ALIGN(_text);
|
||||
unsigned long size = PFN_ALIGN(_etext) - start;
|
||||
|
||||
#ifndef CONFIG_KPROBES
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
/* It must still be possible to apply SMP alternatives. */
|
||||
if (num_possible_cpus() <= 1)
|
||||
#endif
|
||||
{
|
||||
set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
|
||||
printk(KERN_INFO "Write protecting the kernel text: %luk\n",
|
||||
size >> 10);
|
||||
set_pages_ro(virt_to_page(start), size >> PAGE_SHIFT);
|
||||
printk(KERN_INFO "Write protecting the kernel text: %luk\n",
|
||||
size >> 10);
|
||||
|
||||
#ifdef CONFIG_CPA_DEBUG
|
||||
printk(KERN_INFO "Testing CPA: Reverting %lx-%lx\n",
|
||||
start, start+size);
|
||||
set_pages_rw(virt_to_page(start), size>>PAGE_SHIFT);
|
||||
printk(KERN_INFO "Testing CPA: Reverting %lx-%lx\n",
|
||||
start, start+size);
|
||||
set_pages_rw(virt_to_page(start), size>>PAGE_SHIFT);
|
||||
|
||||
printk(KERN_INFO "Testing CPA: write protecting again\n");
|
||||
set_pages_ro(virt_to_page(start), size>>PAGE_SHIFT);
|
||||
#endif
|
||||
}
|
||||
printk(KERN_INFO "Testing CPA: write protecting again\n");
|
||||
set_pages_ro(virt_to_page(start), size>>PAGE_SHIFT);
|
||||
#endif
|
||||
start += size;
|
||||
size = (unsigned long)__end_rodata - start;
|
||||
|
|
|
@ -635,24 +635,7 @@ EXPORT_SYMBOL_GPL(rodata_test_data);
|
|||
|
||||
void mark_rodata_ro(void)
|
||||
{
|
||||
unsigned long start = (unsigned long)_stext, end;
|
||||
|
||||
#ifdef CONFIG_HOTPLUG_CPU
|
||||
/* It must still be possible to apply SMP alternatives. */
|
||||
if (num_possible_cpus() > 1)
|
||||
start = (unsigned long)_etext;
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_KPROBES
|
||||
start = (unsigned long)__start_rodata;
|
||||
#endif
|
||||
|
||||
end = (unsigned long)__end_rodata;
|
||||
start = (start + PAGE_SIZE - 1) & PAGE_MASK;
|
||||
end &= PAGE_MASK;
|
||||
if (end <= start)
|
||||
return;
|
||||
|
||||
unsigned long start = PFN_ALIGN(_stext), end = PFN_ALIGN(__end_rodata);
|
||||
|
||||
printk(KERN_INFO "Write protecting the kernel read-only data: %luk\n",
|
||||
(end - start) >> 10);
|
||||
|
@ -675,6 +658,7 @@ void mark_rodata_ro(void)
|
|||
set_memory_ro(start, (end-start) >> PAGE_SHIFT);
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_BLK_DEV_INITRD
|
||||
|
|
Загрузка…
Ссылка в новой задаче