|
@@ -60,7 +60,7 @@ static inline long syscall_get_error(struct task_struct *task,
|
|
|
* TS_COMPAT is set for 32-bit syscall entries and then
|
|
|
* remains set until we return to user mode.
|
|
|
*/
|
|
|
- if (task_thread_info(task)->status & (TS_COMPAT|TS_I386_REGS_POKED))
|
|
|
+ if (task->thread.status & (TS_COMPAT|TS_I386_REGS_POKED))
|
|
|
/*
|
|
|
* Sign-extend the value so (int)-EFOO becomes (long)-EFOO
|
|
|
* and will match correctly in comparisons.
|
|
@@ -116,7 +116,7 @@ static inline void syscall_get_arguments(struct task_struct *task,
|
|
|
unsigned long *args)
|
|
|
{
|
|
|
# ifdef CONFIG_IA32_EMULATION
|
|
|
- if (task_thread_info(task)->status & TS_COMPAT)
|
|
|
+ if (task->thread.status & TS_COMPAT)
|
|
|
switch (i) {
|
|
|
case 0:
|
|
|
if (!n--) break;
|
|
@@ -177,7 +177,7 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
|
|
const unsigned long *args)
|
|
|
{
|
|
|
# ifdef CONFIG_IA32_EMULATION
|
|
|
- if (task_thread_info(task)->status & TS_COMPAT)
|
|
|
+ if (task->thread.status & TS_COMPAT)
|
|
|
switch (i) {
|
|
|
case 0:
|
|
|
if (!n--) break;
|
|
@@ -234,18 +234,8 @@ static inline void syscall_set_arguments(struct task_struct *task,
|
|
|
|
|
|
static inline int syscall_get_arch(void)
|
|
|
{
|
|
|
-#ifdef CONFIG_IA32_EMULATION
|
|
|
- /*
|
|
|
- * TS_COMPAT is set for 32-bit syscall entry and then
|
|
|
- * remains set until we return to user mode.
|
|
|
- *
|
|
|
- * x32 tasks should be considered AUDIT_ARCH_X86_64.
|
|
|
- */
|
|
|
- if (task_thread_info(current)->status & TS_COMPAT)
|
|
|
- return AUDIT_ARCH_I386;
|
|
|
-#endif
|
|
|
- /* Both x32 and x86_64 are considered "64-bit". */
|
|
|
- return AUDIT_ARCH_X86_64;
|
|
|
+ /* x32 tasks should be considered AUDIT_ARCH_X86_64. */
|
|
|
+ return in_ia32_syscall() ? AUDIT_ARCH_I386 : AUDIT_ARCH_X86_64;
|
|
|
}
|
|
|
#endif /* CONFIG_X86_32 */
|
|
|
|