Re: 2.6.23-mm1

KAMEZAWA Hiroyuki
2007-10-17T09:34:53Z

On Wed, 17 Oct 2007 11:10:23 +0200 (CEST)
Jiri Kosina <jikos@jikos.cz> wrote:
> Hi,
>
> hm, I guess this is probably due to pie-randomization patch, right? (could
> you please try reverting it, to see whether things get back to normal).
>
> Oh well, this causes more trouble that I have ever imagined ... I will
> look into it, thanks a lot for the report. Andrew, please drop this one
> again, I will fix it up.
>
Maybe this can be fix.

Thanks,
-Kame

==
ia32 on x86_64 seems to be handled as it is.

arch/x86_64/mm/mmap.c | 13 +++++++++++--
1 file changed, 11 insertions(+), 2 deletions(-)

Index: devel-2.6.23-mm1/arch/x86_64/mm/mmap.c
===================================================================
--- devel-2.6.23-mm1.orig/arch/x86_64/mm/mmap.c
+++ devel-2.6.23-mm1/arch/x86_64/mm/mmap.c
@@ -54,13 +54,17 @@ static inline unsigned long mmap_base(vo
return TASK_SIZE - (gap & PAGE_MASK);
}

-static inline int mmap_is_legacy(void)
+static inline int mmap_is_32(void)
{
#ifdef CONFIG_IA32_EMULATION
if (test_thread_flag(TIF_IA32))
return 1;
#endif
+ return 0;
+}

+static inline int mmap_is_legacy(void)
+{
if (current->personality & ADDR_COMPAT_LAYOUT)
return 1;

@@ -89,7 +93,12 @@ void arch_pick_mmap_layout(struct mm_str
* Fall back to the standard layout if the personality
* bit is set, or if the expected stack growth is unlimited:
*/
- if (mmap_is_legacy()) {
+ if (mmap_is_32()) {
+#ifdef CONFIG_IA32_EMULATION
+ /* ia32_pick_mmap_layout has its own. */
+ return ia32_pick_mmap_layout(mm);
+#endif
+ } else if(mmap_is_legacy()) {
mm->mmap_base = TASK_UNMAPPED_BASE;
mm->get_unmapped_area = arch_get_unmapped_area;
mm->unmap_area = arch_unmap_area;