Issue:
When aggrigated uprobe is executed, it never correctly returns
from trampoline_uprobe_handler's retprobe_instance list iteration
if it was called inside anther profiled function.
Solution:
It happened, because break condition was never satisfied: first
time because orig_ret_addr == tramp_addr, all other times because
p, which is pointer to the first uprobe, is not equal to up, which
is other probes related uprobe.
So, this fix removes p and up comparsion as a mistake.
Change-Id: I9979b1fc113c7c0f204a8d20e69dd4bce30127cd
Signed-off-by: Alexander Aksenov <a.aksenov@samsung.com>
orig_ret_addr = (unsigned long)ri->ret_addr;
recycle_urp_inst(ri);
- if ((orig_ret_addr != tramp_addr && up == p) || up == NULL) {
+ if (orig_ret_addr != tramp_addr || up == NULL) {
/*
* This is the real return address. Any other
* instances associated with this task are for