ksym_tracer: Fix breakpoint removal after modification
The error path of a breakpoint modification is broken in the ksym tracer. A modified breakpoint hlist node is immediately released after its removal. Also we leak a breakpoint in this case. Fix the path. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Prasad <prasad@linux.vnet.ibm.com> LKML-Reference: <1259210142-5714-1-git-send-regression-fweisbec@gmail.com> Signed-off-by: Ingo Molnar <mingo@elte.hu>
This commit is contained in:
Родитель
470dda7417
Коммит
d99be40aff
|
@ -339,14 +339,20 @@ static ssize_t ksym_trace_filter_write(struct file *file,
|
|||
ksym_hbp_handler, true);
|
||||
if (IS_ERR(entry->ksym_hbp))
|
||||
entry->ksym_hbp = NULL;
|
||||
if (!entry->ksym_hbp)
|
||||
|
||||
/* modified without problem */
|
||||
if (entry->ksym_hbp) {
|
||||
ret = 0;
|
||||
goto out;
|
||||
}
|
||||
} else {
|
||||
ret = 0;
|
||||
}
|
||||
/* Error or "symbol:---" case: drop it */
|
||||
ksym_filter_entry_count--;
|
||||
hlist_del_rcu(&(entry->ksym_hlist));
|
||||
synchronize_rcu();
|
||||
kfree(entry);
|
||||
ret = 0;
|
||||
goto out;
|
||||
} else {
|
||||
/* Check for malformed request: (4) */
|
||||
|
|
Загрузка…
Ссылка в новой задаче