diff options
Diffstat (limited to 'arch/um/kernel/process.c')
| -rw-r--r-- | arch/um/kernel/process.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/arch/um/kernel/process.c b/arch/um/kernel/process.c index 1b5ef3e96c71..c45a60e9c92d 100644 --- a/arch/um/kernel/process.c +++ b/arch/um/kernel/process.c | |||
| @@ -32,6 +32,7 @@ | |||
| 32 | #include "uml-config.h" | 32 | #include "uml-config.h" |
| 33 | #include "choose-mode.h" | 33 | #include "choose-mode.h" |
| 34 | #include "mode.h" | 34 | #include "mode.h" |
| 35 | #include "tempfile.h" | ||
| 35 | #ifdef UML_CONFIG_MODE_SKAS | 36 | #ifdef UML_CONFIG_MODE_SKAS |
| 36 | #include "skas.h" | 37 | #include "skas.h" |
| 37 | #include "skas_ptrace.h" | 38 | #include "skas_ptrace.h" |
| @@ -358,11 +359,16 @@ void forward_pending_sigio(int target) | |||
| 358 | kill(target, SIGIO); | 359 | kill(target, SIGIO); |
| 359 | } | 360 | } |
| 360 | 361 | ||
| 362 | int ptrace_faultinfo = 0; | ||
| 363 | int proc_mm = 1; | ||
| 364 | |||
| 365 | extern void *__syscall_stub_start, __syscall_stub_end; | ||
| 366 | |||
| 361 | #ifdef UML_CONFIG_MODE_SKAS | 367 | #ifdef UML_CONFIG_MODE_SKAS |
| 362 | static inline int check_skas3_ptrace_support(void) | 368 | static inline void check_skas3_ptrace_support(void) |
| 363 | { | 369 | { |
| 364 | struct ptrace_faultinfo fi; | 370 | struct ptrace_faultinfo fi; |
| 365 | int pid, n, ret = 1; | 371 | int pid, n; |
| 366 | 372 | ||
| 367 | printf("Checking for the skas3 patch in the host..."); | 373 | printf("Checking for the skas3 patch in the host..."); |
| 368 | pid = start_ptraced_child(); | 374 | pid = start_ptraced_child(); |
| @@ -374,33 +380,31 @@ static inline int check_skas3_ptrace_support(void) | |||
| 374 | else { | 380 | else { |
| 375 | perror("not found"); | 381 | perror("not found"); |
| 376 | } | 382 | } |
| 377 | ret = 0; | 383 | } |
| 378 | } else { | 384 | else { |
| 385 | ptrace_faultinfo = 1; | ||
| 379 | printf("found\n"); | 386 | printf("found\n"); |
| 380 | } | 387 | } |
| 381 | 388 | ||
| 382 | init_registers(pid); | 389 | init_registers(pid); |
| 383 | stop_ptraced_child(pid, 1, 1); | 390 | stop_ptraced_child(pid, 1, 1); |
| 384 | |||
| 385 | return(ret); | ||
| 386 | } | 391 | } |
| 387 | 392 | ||
| 388 | int can_do_skas(void) | 393 | int can_do_skas(void) |
| 389 | { | 394 | { |
| 390 | int ret = 1; | ||
| 391 | |||
| 392 | printf("Checking for /proc/mm..."); | 395 | printf("Checking for /proc/mm..."); |
| 393 | if (os_access("/proc/mm", OS_ACC_W_OK) < 0) { | 396 | if (os_access("/proc/mm", OS_ACC_W_OK) < 0) { |
| 397 | proc_mm = 0; | ||
| 394 | printf("not found\n"); | 398 | printf("not found\n"); |
| 395 | ret = 0; | ||
| 396 | goto out; | 399 | goto out; |
| 397 | } else { | 400 | } |
| 401 | else { | ||
| 398 | printf("found\n"); | 402 | printf("found\n"); |
| 399 | } | 403 | } |
| 400 | 404 | ||
| 401 | ret = check_skas3_ptrace_support(); | ||
| 402 | out: | 405 | out: |
| 403 | return ret; | 406 | check_skas3_ptrace_support(); |
| 407 | return 1; | ||
| 404 | } | 408 | } |
| 405 | #else | 409 | #else |
| 406 | int can_do_skas(void) | 410 | int can_do_skas(void) |
