If I understand correctly, we are not going to have CONFIG_UTRACE_PTRACE, CONFIG_UTRACE should use utrace-ptrace unconditionally.
Remove CONFIG_UTRACE_PTRACE. I do not know where is the right place for CONFIG_UTRACE option and what the help text should say, I assume you can fix this patch or make the necessary changes on top. --- init/Kconfig | 20 +------------------- kernel/utrace.c | 2 -- 2 files changed, 1 insertion(+), 21 deletions(-) --- UTRACE-PTRACE/init/Kconfig~139_KILL_CONFIG_UTRACE_PTRACE 2009-11-13 18:00:06.000000000 +0100 +++ UTRACE-PTRACE/init/Kconfig 2009-11-22 17:05:10.000000000 +0100 @@ -1205,7 +1205,7 @@ config STOP_MACHINE help Need stop_machine() primitive. -menuconfig UTRACE +config UTRACE bool "Infrastructure for tracing and debugging user processes" depends on EXPERIMENTAL depends on HAVE_ARCH_TRACEHOOK @@ -1214,24 +1214,6 @@ menuconfig UTRACE kernel interface exported to kernel modules, to track events in user threads, extract and change user thread state. -config UTRACE_PTRACE - bool "utrace-based ptrace (EXPERIMENTAL)" - default y if UTRACE - depends on UTRACE - help - This changes the implementation of ptrace() to cooperate with the - utrace facility. Without this option, using any utrace facility - on a task that anything also uses ptrace() on (i.e. usual - debuggers, strace, etc) fails with -EBUSY; likewise, if utrace is - in use on a task, the ptrace() system call on that task will fail - with EBUSY. With this option, the ptrace() implementation is - changed to work via utrace facilities and the two cooperate well. - - It's recommended to enable this if you are experimenting with - new modules that use utrace. But, disabling it makes sure that - using traditional ptrace() on tasks not touched by utrace will - not use any experimental new code that might be unreliable. - source "block/Kconfig" config PREEMPT_NOTIFIERS --- UTRACE-PTRACE/kernel/utrace.c~139_KILL_CONFIG_UTRACE_PTRACE 2009-11-21 15:12:27.000000000 +0100 +++ UTRACE-PTRACE/kernel/utrace.c 2009-11-21 22:41:01.000000000 +0100 @@ -897,7 +897,6 @@ relock: spin_unlock_irq(&task->sighand->siglock); spin_unlock(&utrace->lock); -#ifdef CONFIG_UTRACE_PTRACE /* * If ptrace is among the reasons for this stop, do its * notification now. This could not just be done in @@ -906,7 +905,6 @@ relock: * synchronization with ptrace_do_wait() work right. */ ptrace_notify_stop(task); -#endif schedule();