Skip to content

Commit

Permalink
Remove rest of exec domains.
Browse files Browse the repository at this point in the history
It is gone from all archs, now we can remove
the final bits.

Signed-off-by: Richard Weinberger <[email protected]>
  • Loading branch information
richardweinberger committed Apr 12, 2015
1 parent fa41b1c commit 9058f3b
Show file tree
Hide file tree
Showing 3 changed files with 1 addition and 82 deletions.
40 changes: 1 addition & 39 deletions include/linux/personality.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 */
6 changes: 0 additions & 6 deletions include/linux/sched.h
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,6 @@ struct sched_attr {
u64 sched_period;
};

struct exec_domain;
struct futex_pi_state;
struct robust_list_head;
struct bio_list;
Expand Down Expand Up @@ -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)];
Expand Down
37 changes: 0 additions & 37 deletions kernel/exec_domain.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
{
Expand Down

0 comments on commit 9058f3b

Please sign in to comment.