Remove address space overrides using set_fs() for User Mode Linux. Note that just like the existing kernel access case of the uaccess routines the new nofault kernel handlers do not actually have any exception handling. This is probably broken, but not change to the status quo. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Richard Weinberger <richard@nod.at>
73 lines
2.0 KiB
C
73 lines
2.0 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2002 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
|
|
*/
|
|
|
|
#ifndef __UM_THREAD_INFO_H
|
|
#define __UM_THREAD_INFO_H
|
|
|
|
#define THREAD_SIZE_ORDER CONFIG_KERNEL_STACK_ORDER
|
|
#define THREAD_SIZE ((1 << CONFIG_KERNEL_STACK_ORDER) * PAGE_SIZE)
|
|
|
|
#ifndef __ASSEMBLY__
|
|
|
|
#include <asm/types.h>
|
|
#include <asm/page.h>
|
|
#include <asm/segment.h>
|
|
#include <sysdep/ptrace_user.h>
|
|
|
|
struct thread_info {
|
|
struct task_struct *task; /* main task structure */
|
|
unsigned long flags; /* low level flags */
|
|
__u32 cpu; /* current CPU */
|
|
int preempt_count; /* 0 => preemptable,
|
|
<0 => BUG */
|
|
struct thread_info *real_thread; /* Points to non-IRQ stack */
|
|
unsigned long aux_fp_regs[FP_SIZE]; /* auxiliary fp_regs to save/restore
|
|
them out-of-band */
|
|
};
|
|
|
|
#define INIT_THREAD_INFO(tsk) \
|
|
{ \
|
|
.task = &tsk, \
|
|
.flags = 0, \
|
|
.cpu = 0, \
|
|
.preempt_count = INIT_PREEMPT_COUNT, \
|
|
.real_thread = NULL, \
|
|
}
|
|
|
|
/* how to get the thread information struct from C */
|
|
static inline struct thread_info *current_thread_info(void)
|
|
{
|
|
struct thread_info *ti;
|
|
unsigned long mask = THREAD_SIZE - 1;
|
|
void *p;
|
|
|
|
asm volatile ("" : "=r" (p) : "0" (&ti));
|
|
ti = (struct thread_info *) (((unsigned long)p) & ~mask);
|
|
return ti;
|
|
}
|
|
|
|
#endif
|
|
|
|
#define TIF_SYSCALL_TRACE 0 /* syscall trace active */
|
|
#define TIF_SIGPENDING 1 /* signal pending */
|
|
#define TIF_NEED_RESCHED 2 /* rescheduling necessary */
|
|
#define TIF_NOTIFY_SIGNAL 3 /* signal notifications exist */
|
|
#define TIF_RESTART_BLOCK 4
|
|
#define TIF_MEMDIE 5 /* is terminating due to OOM killer */
|
|
#define TIF_SYSCALL_AUDIT 6
|
|
#define TIF_RESTORE_SIGMASK 7
|
|
#define TIF_NOTIFY_RESUME 8
|
|
#define TIF_SECCOMP 9 /* secure computing */
|
|
|
|
#define _TIF_SYSCALL_TRACE (1 << TIF_SYSCALL_TRACE)
|
|
#define _TIF_SIGPENDING (1 << TIF_SIGPENDING)
|
|
#define _TIF_NEED_RESCHED (1 << TIF_NEED_RESCHED)
|
|
#define _TIF_NOTIFY_SIGNAL (1 << TIF_NOTIFY_SIGNAL)
|
|
#define _TIF_MEMDIE (1 << TIF_MEMDIE)
|
|
#define _TIF_SYSCALL_AUDIT (1 << TIF_SYSCALL_AUDIT)
|
|
#define _TIF_SECCOMP (1 << TIF_SECCOMP)
|
|
|
|
#endif
|