From: Stephen Wilson <wilsons@start.ca>
To: Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Michel Lespinasse <walken@google.com>,
Andi Kleen <ak@linux.intel.com>, Rik van Riel <riel@redhat.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Matt Mackall <mpm@selenic.com>,
David Rientjes <rientjes@google.com>,
Nick Piggin <npiggin@kernel.dk>,
Andrea Arcangeli <aarcange@redhat.com>,
Mel Gorman <mel@csn.ul.ie>, Hugh Dickins <hughd@google.com>,
x86@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Stephen Wilson <wilsons@start.ca>
Subject: [PATCH v2 resend 02/12] x86: mark associated mm when running a task in 32 bit compatibility mode
Date: Wed, 23 Mar 2011 10:43:51 -0400 [thread overview]
Message-ID: <1300891441-16280-3-git-send-email-wilsons@start.ca> (raw)
In-Reply-To: <1300891441-16280-1-git-send-email-wilsons@start.ca>
This patch simply follows the same practice as for setting the TIF_IA32 flag.
In particular, an mm is marked as holding 32-bit tasks when a 32-bit binary is
exec'ed. Both ELF and a.out formats are updated.
Signed-off-by: Stephen Wilson <wilsons@start.ca>
Reviewed-by: Michel Lespinasse <walken@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
---
arch/x86/ia32/ia32_aout.c | 1 +
arch/x86/kernel/process_64.c | 8 ++++++++
2 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
index 2d93bdb..fd84387 100644
--- a/arch/x86/ia32/ia32_aout.c
+++ b/arch/x86/ia32/ia32_aout.c
@@ -298,6 +298,7 @@ static int load_aout_binary(struct linux_binprm *bprm, struct pt_regs *regs)
/* OK, This is the point of no return */
set_personality(PER_LINUX);
set_thread_flag(TIF_IA32);
+ current->mm->context.ia32_compat = 1;
setup_new_exec(bprm);
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index bd387e8..6c9dd92 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -501,6 +501,10 @@ void set_personality_64bit(void)
/* Make sure to be in 64bit mode */
clear_thread_flag(TIF_IA32);
+ /* Ensure the corresponding mm is not marked. */
+ if (current->mm)
+ current->mm->context.ia32_compat = 0;
+
/* TBD: overwrites user setup. Should have two bits.
But 64bit processes have always behaved this way,
so it's not too bad. The main problem is just that
@@ -516,6 +520,10 @@ void set_personality_ia32(void)
set_thread_flag(TIF_IA32);
current->personality |= force_personality32;
+ /* Mark the associated mm as containing 32-bit tasks. */
+ if (current->mm)
+ current->mm->context.ia32_compat = 1;
+
/* Prepare the first "return" to user space */
current_thread_info()->status |= TS_COMPAT;
}
--
1.7.3.5
WARNING: multiple messages have this Message-ID (diff)
From: Stephen Wilson <wilsons@start.ca>
To: Thomas Gleixner <tglx@linutronix.de>,
Ingo Molnar <mingo@redhat.com>, "H. Peter Anvin" <hpa@zytor.com>
Cc: Andrew Morton <akpm@linux-foundation.org>,
Alexander Viro <viro@zeniv.linux.org.uk>,
Michel Lespinasse <walken@google.com>,
Andi Kleen <ak@linux.intel.com>, Rik van Riel <riel@redhat.com>,
KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>,
Matt Mackall <mpm@selenic.com>,
David Rientjes <rientjes@google.com>,
Nick Piggin <npiggin@kernel.dk>,
Andrea Arcangeli <aarcange@redhat.com>,
Mel Gorman <mel@csn.ul.ie>, Hugh Dickins <hughd@google.com>,
x86@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Stephen Wilson <wilsons@start.ca>
Subject: [PATCH v2 resend 02/12] x86: mark associated mm when running a task in 32 bit compatibility mode
Date: Wed, 23 Mar 2011 10:43:51 -0400 [thread overview]
Message-ID: <1300891441-16280-3-git-send-email-wilsons@start.ca> (raw)
In-Reply-To: <1300891441-16280-1-git-send-email-wilsons@start.ca>
This patch simply follows the same practice as for setting the TIF_IA32 flag.
In particular, an mm is marked as holding 32-bit tasks when a 32-bit binary is
exec'ed. Both ELF and a.out formats are updated.
Signed-off-by: Stephen Wilson <wilsons@start.ca>
Reviewed-by: Michel Lespinasse <walken@google.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
---
arch/x86/ia32/ia32_aout.c | 1 +
arch/x86/kernel/process_64.c | 8 ++++++++
2 files changed, 9 insertions(+), 0 deletions(-)
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c
index 2d93bdb..fd84387 100644
--- a/arch/x86/ia32/ia32_aout.c
+++ b/arch/x86/ia32/ia32_aout.c
@@ -298,6 +298,7 @@ static int load_aout_binary(struct linux_binprm *bprm, struct pt_regs *regs)
/* OK, This is the point of no return */
set_personality(PER_LINUX);
set_thread_flag(TIF_IA32);
+ current->mm->context.ia32_compat = 1;
setup_new_exec(bprm);
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c
index bd387e8..6c9dd92 100644
--- a/arch/x86/kernel/process_64.c
+++ b/arch/x86/kernel/process_64.c
@@ -501,6 +501,10 @@ void set_personality_64bit(void)
/* Make sure to be in 64bit mode */
clear_thread_flag(TIF_IA32);
+ /* Ensure the corresponding mm is not marked. */
+ if (current->mm)
+ current->mm->context.ia32_compat = 0;
+
/* TBD: overwrites user setup. Should have two bits.
But 64bit processes have always behaved this way,
so it's not too bad. The main problem is just that
@@ -516,6 +520,10 @@ void set_personality_ia32(void)
set_thread_flag(TIF_IA32);
current->personality |= force_personality32;
+ /* Mark the associated mm as containing 32-bit tasks. */
+ if (current->mm)
+ current->mm->context.ia32_compat = 1;
+
/* Prepare the first "return" to user space */
current_thread_info()->status |= TS_COMPAT;
}
--
1.7.3.5
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2011-03-23 14:45 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-03-23 14:43 [PATCH v2 resend 0/12] enable writing to /proc/pid/mem Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson
2011-03-23 14:43 ` [PATCH v2 resend 01/12] x86: add context tag to mark mm when running a task in 32-bit compatibility mode Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson [this message]
2011-03-23 14:43 ` [PATCH v2 resend 02/12] x86: mark associated mm when running a task in 32 bit " Stephen Wilson
2011-03-23 14:43 ` [PATCH v2 resend 03/12] mm: arch: make get_gate_vma take an mm_struct instead of a task_struct Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson
2011-03-23 14:43 ` [PATCH v2 resend 04/12] mm: arch: make in_gate_area " Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson
2011-03-23 14:43 ` [PATCH v2 resend 05/12] mm: arch: rename in_gate_area_no_task to in_gate_area_no_mm Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson
2011-03-23 14:43 ` [PATCH v2 resend 06/12] mm: use mm_struct to resolve gate vma's in __get_user_pages Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson
2011-03-23 14:43 ` [PATCH v2 resend 07/12] mm: factor out main logic of access_process_vm Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson
2011-03-23 14:43 ` [PATCH v2 resend 08/12] mm: implement access_remote_vm Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson
2011-03-23 14:43 ` [PATCH v2 resend 09/12] proc: disable mem_write after exec Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson
2011-03-23 14:43 ` [PATCH v2 resend 10/12] proc: hold cred_guard_mutex in check_mem_permission() Stephen Wilson
2011-03-23 14:43 ` Stephen Wilson
2011-03-23 14:44 ` [PATCH v2 resend 11/12] proc: make check_mem_permission() return an mm_struct on success Stephen Wilson
2011-03-23 14:44 ` Stephen Wilson
2011-03-23 14:44 ` [PATCH v2 resend 12/12] proc: enable writing to /proc/pid/mem Stephen Wilson
2011-03-23 14:44 ` Stephen Wilson
2011-03-23 14:57 ` [PATCH v2 resend 0/12] " Al Viro
2011-03-23 14:57 ` Al Viro
2011-03-23 15:04 ` Stephen Wilson
2011-03-23 15:04 ` Stephen Wilson
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=1300891441-16280-3-git-send-email-wilsons@start.ca \
--to=wilsons@start.ca \
--cc=aarcange@redhat.com \
--cc=ak@linux.intel.com \
--cc=akpm@linux-foundation.org \
--cc=hpa@zytor.com \
--cc=hughd@google.com \
--cc=kosaki.motohiro@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=mel@csn.ul.ie \
--cc=mingo@redhat.com \
--cc=mpm@selenic.com \
--cc=npiggin@kernel.dk \
--cc=riel@redhat.com \
--cc=rientjes@google.com \
--cc=tglx@linutronix.de \
--cc=viro@zeniv.linux.org.uk \
--cc=walken@google.com \
--cc=x86@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.