Thread (27 messages) flat view 27 messages, 5 authors, 2012-04-11

Re: [PATCH v15 04/13] arch/x86: add syscall_get_arch to syscall.h

From: "H. Peter Anvin" <hpa@zytor.com>
Date: 2012-04-11 03:21:38
Also in: linux-arch, lkml

On 04/10/2012 08:13 PM, Will Drewry wrote:
On Sun, Mar 25, 2012 at 2:34 PM, H. Peter Anvin [off-list ref] wrote:
quoted
On 03/14/2012 08:11 PM, Will Drewry wrote:
quoted
+static inline int syscall_get_arch(struct task_struct *task,
+                                struct pt_regs *regs)
+{
+#ifdef CONFIG_IA32_EMULATION
+     /*
+      * TS_COMPAT is set for 32-bit syscall entries and then
+      * remains set until we return to user mode.
+      *
+      * TIF_IA32 tasks should always have TS_COMPAT set at
+      * system call time.
+      */
+     if (task_thread_info(task)->status & TS_COMPAT)
+             return AUDIT_ARCH_I386;
+#endif
+     return AUDIT_ARCH_X86_64;
+}
 #endif       /* CONFIG_X86_32 */

 #endif       /* _ASM_X86_SYSCALL_H */
Just one FYI on this: after the x32 changes are upstream this can be
implemented in terms of is_ia32_task().
Now that I've seen is_ia32_task(), it appears to be exactly the same as above:
(1)  If we're x86_32, it's ia32
(2)  If we're x86_64, ia32 == !!(status & TS_COMPAT)
(3)  Otherwise, it's x86_64, including x32

Am I missing something? Should is_ia32_task(void) take a task_struct?
Right now, I don't see any reason to change the code, as posted, but
maybe I am mis-reading?
Sorry, answered the wrong question.  Yes, it is the same as above...
just wandered if we could centralize this test.  It might indeed make
sense to provide general predicates which take a task pointer.

	-hpa
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help