gdbstub doesnt connect if an engine already exists. Such an existing engine may not be related to gdbstub.
Currently if we trace a process using gdb, insert breakpoints, disconnect and reattach to that same process, gdb fails. What gdbstub probably needs is an exclusive gdbstub engine. i.e If a gdbstub connection exists for a process, we shouldnt be creating a new gdbstub connection. Signed-off-by: Srikar Dronamraju <sri...@linux.vnet.ibm.com> --- kernel/utrace-gdb.c | 9 +++++---- 1 files changed, 5 insertions(+), 4 deletions(-) diff --git a/kernel/utrace-gdb.c b/kernel/utrace-gdb.c index 21bf995..29e9c05 100644 --- a/kernel/utrace-gdb.c +++ b/kernel/utrace-gdb.c @@ -1180,10 +1180,11 @@ static int proc_gdb_open(struct inode *inode, struct file *filp) p->at_quiesce_do = UTRACE_RESUME; p->engine = utrace_attach_task(task, - UTRACE_ATTACH_CREATE | - UTRACE_ATTACH_EXCLUSIVE, - &gdb_utrace_ops, - p); + UTRACE_ATTACH_CREATE | + UTRACE_ATTACH_EXCLUSIVE | + UTRACE_ATTACH_MATCH_OPS, + &gdb_utrace_ops, + p); if (IS_ERR(p->engine) || p->engine==NULL) { ret = -EBUSY; goto out_free;