Przeglądaj źródła

[Pal/{Linux,Linux-SGX}] Remove CLONE_PTRACE flag on thread creation

Previously, Graphene's PALs specified CLONE_PTRACE flag on any thread
creation. This led to debuggers (GDB, strace, other ptrace-based
debuggers) always tracing child threads, even if they did not subscribe
to such events (debuggers usually use PTRACE_O_TRACECLONE and similar
flags to start tracing child threads/processes). This commit removes
CLONE_PTRACE flag such that debuggers have a chance to ignore child
threads; this improves stability and performance of ptracing.
Dmitrii Kuvaiskii 4 lat temu
rodzic
commit
2e4d929c5b

+ 3 - 5
Pal/src/host/Linux-SGX/sgx_thread.c

@@ -215,11 +215,9 @@ int clone_thread(void) {
 
     int dummy_parent_tid_field = 0;
     ret = clone(pal_thread_init, child_stack_top,
-                CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SYSVSEM|
-                CLONE_THREAD|CLONE_SIGHAND|CLONE_PTRACE|
-                CLONE_PARENT_SETTID,
-                (void*) tcb,
-                &dummy_parent_tid_field, NULL);
+                CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SYSVSEM | CLONE_THREAD |
+                CLONE_SIGHAND | CLONE_PARENT_SETTID,
+                (void*)tcb, &dummy_parent_tid_field, NULL);
 
     if (IS_ERR(ret)) {
         INLINE_SYSCALL(munmap, 2, stack, THREAD_STACK_SIZE + ALT_STACK_SIZE);

+ 3 - 4
Pal/src/host/Linux/db_threading.c

@@ -181,10 +181,9 @@ int _DkThreadCreate (PAL_HANDLE * handle, int (*callback) (void *),
     child_stack = ALIGN_DOWN_PTR(child_stack, 16);
 
     ret = clone(pal_thread_init, child_stack,
-                    CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SYSVSEM|
-                    CLONE_THREAD|CLONE_SIGHAND|CLONE_PTRACE|
-                    CLONE_PARENT_SETTID,
-                    (void *) tcb, &hdl->thread.tid, NULL);
+                CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SYSVSEM | CLONE_THREAD |
+                CLONE_SIGHAND | CLONE_PARENT_SETTID,
+                (void*)tcb, &hdl->thread.tid, NULL);
 
     if (IS_ERR(ret)) {
         ret = -PAL_ERROR_DENIED;