Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 96446
b: refs/heads/master
c: 53c2587
h: refs/heads/master
v: v3
  • Loading branch information
Jeff Dike authored and Linus Torvalds committed May 13, 2008
1 parent 766966f commit 6598492
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 41 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: c714a534d85576af21b06be605ca55cb2fb887ee
refs/heads/master: 53c258787427ea43ebfa76fefa6534cae507e521
81 changes: 41 additions & 40 deletions trunk/arch/um/os-Linux/start_up.c
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#include "mem_user.h"
#include "ptrace_user.h"
#include "registers.h"
#include "skas.h"
#include "skas_ptrace.h"

static void ptrace_child(void)
Expand Down Expand Up @@ -140,14 +141,27 @@ static int stop_ptraced_child(int pid, int exitcode, int mustexit)
}

/* Changed only during early boot */
int ptrace_faultinfo = 1;
int ptrace_ldt = 1;
int proc_mm = 1;
int skas_needs_stub = 0;
int ptrace_faultinfo;
static int disable_ptrace_faultinfo;

int ptrace_ldt;
static int disable_ptrace_ldt;

int proc_mm;
static int disable_proc_mm;

int have_switch_mm;
static int disable_switch_mm;

int skas_needs_stub;

static int __init skas0_cmd_param(char *str, int* add)
{
ptrace_faultinfo = proc_mm = 0;
disable_ptrace_faultinfo = 1;
disable_ptrace_ldt = 1;
disable_proc_mm = 1;
disable_switch_mm = 1;

return 0;
}

Expand All @@ -157,15 +171,12 @@ static int __init mode_skas0_cmd_param(char *str, int* add)
__attribute__((alias("skas0_cmd_param")));

__uml_setup("skas0", skas0_cmd_param,
"skas0\n"
" Disables SKAS3 usage, so that SKAS0 is used, unless \n"
" you specify mode=tt.\n\n");
"skas0\n"
" Disables SKAS3 and SKAS4 usage, so that SKAS0 is used\n\n");

__uml_setup("mode=skas0", mode_skas0_cmd_param,
"mode=skas0\n"
" Disables SKAS3 usage, so that SKAS0 is used, unless you \n"
" specify mode=tt. Note that this was recently added - on \n"
" older kernels you must use simply \"skas0\".\n\n");
"mode=skas0\n"
" Disables SKAS3 and SKAS4 usage, so that SKAS0 is used.\n\n");

/* Changed only during early boot */
static int force_sysemu_disabled = 0;
Expand Down Expand Up @@ -360,7 +371,7 @@ void __init os_early_checks(void)

static int __init noprocmm_cmd_param(char *str, int* add)
{
proc_mm = 0;
disable_proc_mm = 1;
return 0;
}

Expand All @@ -372,7 +383,7 @@ __uml_setup("noprocmm", noprocmm_cmd_param,

static int __init noptracefaultinfo_cmd_param(char *str, int* add)
{
ptrace_faultinfo = 0;
disable_ptrace_faultinfo = 1;
return 0;
}

Expand All @@ -384,7 +395,7 @@ __uml_setup("noptracefaultinfo", noptracefaultinfo_cmd_param,

static int __init noptraceldt_cmd_param(char *str, int* add)
{
ptrace_ldt = 0;
disable_ptrace_ldt = 1;
return 0;
}

Expand All @@ -404,17 +415,15 @@ static inline void check_skas3_ptrace_faultinfo(void)

n = ptrace(PTRACE_FAULTINFO, pid, 0, &fi);
if (n < 0) {
ptrace_faultinfo = 0;
if (errno == EIO)
non_fatal("not found\n");
else
perror("not found");
}
} else if (disable_ptrace_faultinfo)
non_fatal("found but disabled on command line\n");
else {
if (!ptrace_faultinfo)
non_fatal("found but disabled on command line\n");
else
non_fatal("found\n");
ptrace_faultinfo = 1;
non_fatal("found\n");
}

stop_ptraced_child(pid, 1, 1);
Expand All @@ -437,38 +446,30 @@ static inline void check_skas3_ptrace_ldt(void)
if (n < 0) {
if (errno == EIO)
non_fatal("not found\n");
else {
else
perror("not found");
}
ptrace_ldt = 0;
}
} else if (disable_ptrace_ldt)
non_fatal("found, but use is disabled\n");
else {
if (ptrace_ldt)
non_fatal("found\n");
else
non_fatal("found, but use is disabled\n");
ptrace_ldt = 1;
non_fatal("found\n");
}

stop_ptraced_child(pid, 1, 1);
#else
/* PTRACE_LDT might be disabled via cmdline option.
* We want to override this, else we might use the stub
* without real need
*/
ptrace_ldt = 1;
#endif
}

static inline void check_skas3_proc_mm(void)
{
non_fatal(" - /proc/mm...");
if (access("/proc/mm", W_OK) < 0) {
proc_mm = 0;
if (access("/proc/mm", W_OK) < 0)
perror("not found");
}
else if (!proc_mm)
else if (disable_proc_mm)
non_fatal("found but disabled on command line\n");
else non_fatal("found\n");
else {
proc_mm = 1;
non_fatal("found\n");
}
}

void can_do_skas(void)
Expand Down

0 comments on commit 6598492

Please sign in to comment.