On Wed, 2011-01-26 at 13:17 +0530, Srikar Dronamraju wrote: > * Peter Zijlstra <peterz@xxxxxxxxxxxxx> [2011-01-25 13:15:45]: > > > > + > > > + if (atomic_read(&uprobe->ref) == 1) { > > > + synchronize_sched(); > > > + rb_erase(&uprobe->rb_node, &uprobes_tree); > > > > How is that safe without holding the treelock? > > Right, > Something like this should be good enuf right? > > if (atomic_read(&uprobe->ref) == 1) { > synchronize_sched(); > spin_lock_irqsave(&treelock, flags); > rb_erase(&uprobe->rb_node, &uprobes_tree); > spin_lock_irqrestore(&treelock, flags); > iput(uprobe->inode); > } > How is the atomic_read() not racy with a future increment, and what is that synchronize_sched() thing for? -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxxx For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom policy in Canada: sign http://dissolvethecrtc.ca/ Don't email: <a href