diff options
author | Vyacheslav Cherkashin <v.cherkashin@samsung.com> | 2015-07-15 15:29:09 +0300 |
---|---|---|
committer | Vyacheslav Cherkashin <v.cherkashin@samsung.com> | 2015-07-15 15:29:09 +0300 |
commit | efce983cbcc5cc3ed9ccf00d931c66873a2d7e6b (patch) | |
tree | c826530199d2c20a1195d36146cc5c1b449b0108 /uprobe | |
parent | e877131ce52b59f1991b618611b602cfd0e12325 (diff) | |
download | swap-modules-efce983cbcc5cc3ed9ccf00d931c66873a2d7e6b.tar.gz swap-modules-efce983cbcc5cc3ed9ccf00d931c66873a2d7e6b.tar.bz2 swap-modules-efce983cbcc5cc3ed9ccf00d931c66873a2d7e6b.zip |
[FIX] remove uprobe from hash table on error
Change-Id: I8f860004eb9b8c23c11a5e47899cfdb916529a64
Signed-off-by: Vyacheslav Cherkashin <v.cherkashin@samsung.com>
Diffstat (limited to 'uprobe')
-rw-r--r-- | uprobe/swap_uprobes.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/uprobe/swap_uprobes.c b/uprobe/swap_uprobes.c index f9ad605c..da8274c5 100644 --- a/uprobe/swap_uprobes.c +++ b/uprobe/swap_uprobes.c @@ -528,8 +528,11 @@ int swap_register_uprobe(struct uprobe *up) &uprobe_table[hash_ptr(p->addr, UPROBE_HASH_BITS)]); ret = arm_uprobe(up); - if (ret) + if (ret) { + hlist_del_rcu(&p->hlist); + synchronize_rcu(); remove_uprobe(up); + } out: DBPRINTF("out ret = 0x%x\n", ret); |