Re: [PATCH] move do_suspend_lowlevel to correct segment

From: Shaohua Li
Date: Thu Jun 15 2006 - 20:53:25 EST


Hi Pavel,
On Thu, 2006-06-15 at 11:19 +0200, Pavel Machek wrote:
> > Move do_suspend_lowlevel to correct segment. If it is in the same hugepage
> > with ro data, mark_rodata_ro will make it unexecutable.
>
> I guess I do not know enough about segments... Original code puts
> saved_magic into .data (and probably puts save_registers there by
> mistake, too -- so you are fixing things), but you put saved_magic
> code into .data, too, so how does its read-only status change?
No, mark_rodata_ro will call change_page_attr, which will split huge
page into small pages, and changes the attr of the pages to PAGE_KERNEL.
mark_rodata_ro just changes rodata to read-only page attr.

> Does x86-64 need similar fix?
It appears not needed

Thanks,
Shaohua
>
>
> > Signed-off-by: Shaohua Li <shaohua.li@xxxxxxxxx>
> > ---
> >
> > linux-2.6.17-rc5-root/arch/i386/kernel/acpi/wakeup.S | 9 ++++-----
> > 1 files changed, 4 insertions(+), 5 deletions(-)
> >
> > diff -puN arch/i386/kernel/acpi/wakeup.S~wakeup arch/i386/kernel/acpi/wakeup.S
> > --- linux-2.6.17-rc5/arch/i386/kernel/acpi/wakeup.S~wakeup 2006-06-14 09:21:26.000000000 +0800
> > +++ linux-2.6.17-rc5-root/arch/i386/kernel/acpi/wakeup.S 2006-06-14 09:21:57.000000000 +0800
> > @@ -265,11 +265,6 @@ ENTRY(acpi_copy_wakeup_routine)
> > movl $0x12345678, saved_magic
> > ret
> >
> > -.data
> > -ALIGN
> > -ENTRY(saved_magic) .long 0
> > -ENTRY(saved_eip) .long 0
> > -
> > save_registers:
> > leal 4(%esp), %eax
> > movl %eax, saved_context_esp
> > @@ -304,7 +299,11 @@ ret_point:
> > call restore_processor_state
> > ret
> >
> > +.data
> > ALIGN
> > +ENTRY(saved_magic) .long 0
> > +ENTRY(saved_eip) .long 0
> > +
> > # saved registers
> > saved_gdt: .long 0,0
> > saved_idt: .long 0,0
> > _
>
--
Shaohua Li <shaohua.li@xxxxxxxxx>
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/