Re: [PATCH v5 3.1.0-rc4-tip 1/26] uprobes: Auxillary routines to insert, find, delete uprobes
From: Srikar Dronamraju <hidden>
Date: 2011-09-26 12:18:07
Also in:
lkml
* Peter Zijlstra [off-list ref] [2011-09-26 13:18:40]:
On Tue, 2011-09-20 at 17:29 +0530, Srikar Dronamraju wrote:quoted
+static struct uprobe *__insert_uprobe(struct uprobe *uprobe) +{ + struct rb_node **p = &uprobes_tree.rb_node; + struct rb_node *parent = NULL; + struct uprobe *u; + int match; + + while (*p) { + parent = *p; + u = rb_entry(parent, struct uprobe, rb_node); + match = match_uprobe(uprobe, u); + if (!match) { + atomic_inc(&u->ref); + return u; + } + + if (match < 0) + p = &parent->rb_left; + else + p = &parent->rb_right; + + } + u = NULL; + rb_link_node(&uprobe->rb_node, parent, p); + rb_insert_color(&uprobe->rb_node, &uprobes_tree); + /* get access + drop ref */ + atomic_set(&uprobe->ref, 2); + return u; +}If you ever want to make a 'lockless' lookup work you need to set the refcount of the new object before its fully visible, instead of after.
Agree,
Now much of a problem now since its fully serialized by that uprobes_treelock thing.
Will stick with this for now; If and when we do a lockless lookup we could fix this. -- Thanks and Regards Srikar -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>