mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 06:01:57 +00:00
Remove rest of exec domains.
It is gone from all archs, now we can remove the final bits. Signed-off-by: Richard Weinberger <richard@nod.at>
This commit is contained in:
parent
fa41b1c7df
commit
9058f3b326
@ -3,52 +3,14 @@
|
||||
|
||||
#include <uapi/linux/personality.h>
|
||||
|
||||
|
||||
/*
|
||||
* Handling of different ABIs (personalities).
|
||||
*/
|
||||
|
||||
struct exec_domain;
|
||||
struct pt_regs;
|
||||
|
||||
extern int register_exec_domain(struct exec_domain *);
|
||||
extern int unregister_exec_domain(struct exec_domain *);
|
||||
extern int __set_personality(unsigned int);
|
||||
|
||||
|
||||
/*
|
||||
* Description of an execution domain.
|
||||
*
|
||||
* The first two members are refernced from assembly source
|
||||
* and should stay where they are unless explicitly needed.
|
||||
*/
|
||||
typedef void (*handler_t)(int, struct pt_regs *);
|
||||
|
||||
struct exec_domain {
|
||||
const char *name; /* name of the execdomain */
|
||||
handler_t handler; /* handler for syscalls */
|
||||
unsigned char pers_low; /* lowest personality */
|
||||
unsigned char pers_high; /* highest personality */
|
||||
unsigned long *signal_map; /* signal mapping */
|
||||
unsigned long *signal_invmap; /* reverse signal mapping */
|
||||
struct map_segment *err_map; /* error mapping */
|
||||
struct map_segment *socktype_map; /* socket type mapping */
|
||||
struct map_segment *sockopt_map; /* socket option mapping */
|
||||
struct map_segment *af_map; /* address family mapping */
|
||||
struct module *module; /* module context of the ed. */
|
||||
struct exec_domain *next; /* linked list (internal) */
|
||||
};
|
||||
|
||||
/*
|
||||
* Return the base personality without flags.
|
||||
*/
|
||||
#define personality(pers) (pers & PER_MASK)
|
||||
|
||||
|
||||
/*
|
||||
* Change personality of the currently running process.
|
||||
*/
|
||||
#define set_personality(pers) \
|
||||
((current->personality == (pers)) ? 0 : __set_personality(pers))
|
||||
#define set_personality(pers) (current->personality = (pers))
|
||||
|
||||
#endif /* _LINUX_PERSONALITY_H */
|
||||
|
@ -125,7 +125,6 @@ struct sched_attr {
|
||||
u64 sched_period;
|
||||
};
|
||||
|
||||
struct exec_domain;
|
||||
struct futex_pi_state;
|
||||
struct robust_list_head;
|
||||
struct bio_list;
|
||||
@ -2288,11 +2287,6 @@ extern void set_curr_task(int cpu, struct task_struct *p);
|
||||
|
||||
void yield(void);
|
||||
|
||||
/*
|
||||
* The default (Linux) execution domain.
|
||||
*/
|
||||
extern struct exec_domain default_exec_domain;
|
||||
|
||||
union thread_union {
|
||||
struct thread_info thread_info;
|
||||
unsigned long stack[THREAD_SIZE/sizeof(long)];
|
||||
|
@ -20,43 +20,6 @@
|
||||
#include <linux/types.h>
|
||||
#include <linux/fs_struct.h>
|
||||
|
||||
static void default_handler(int, struct pt_regs *);
|
||||
static unsigned long ident_map[32] = {
|
||||
0, 1, 2, 3, 4, 5, 6, 7,
|
||||
8, 9, 10, 11, 12, 13, 14, 15,
|
||||
16, 17, 18, 19, 20, 21, 22, 23,
|
||||
24, 25, 26, 27, 28, 29, 30, 31
|
||||
};
|
||||
|
||||
struct exec_domain default_exec_domain = {
|
||||
.name = "Linux", /* name */
|
||||
.handler = default_handler, /* lcall7 causes a seg fault. */
|
||||
.pers_low = 0, /* PER_LINUX personality. */
|
||||
.pers_high = 0, /* PER_LINUX personality. */
|
||||
.signal_map = ident_map, /* Identity map signals. */
|
||||
.signal_invmap = ident_map, /* - both ways. */
|
||||
};
|
||||
|
||||
|
||||
static void
|
||||
default_handler(int segment, struct pt_regs *regp)
|
||||
{
|
||||
set_personality(0);
|
||||
|
||||
if (current_thread_info()->exec_domain->handler != default_handler)
|
||||
current_thread_info()->exec_domain->handler(segment, regp);
|
||||
else
|
||||
send_sig(SIGSEGV, current, 1);
|
||||
}
|
||||
|
||||
int __set_personality(unsigned int personality)
|
||||
{
|
||||
current->personality = personality;
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(__set_personality);
|
||||
|
||||
#ifdef CONFIG_PROC_FS
|
||||
static int execdomains_proc_show(struct seq_file *m, void *v)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user