* Peter Zijlstra <peterz@xxxxxxxxxxxxx> [2011-01-26 11:20:39]: > On Wed, 2011-01-26 at 14:33 +0530, Srikar Dronamraju wrote: > > > > > > I actually dont like to release the write_lock and then reacquire it. > > write_opcode, which is called thro install_uprobe, i.e to insert the > > actual breakpoint instruction takes a read lock on the mmap_sem. > > Hence uprobe_mmap gets called in context with write lock on mmap_sem > > held, I had to release it before calling install_uprobe. > > Ah, right, so that's going to give you a head-ache ;-) > > The moment you release this mmap_sem, the map you're going to install > the probe point in can go away. > > The only way to make this work seems to start by holding the mmap_sem > for writing and make a breakpoint install function that assumes its > taken and doesn't try to acquire it again. > Yes, this can be done. I would have to do something like this in register_uprobe(). list_for_each_entry_safe(mm, tmpmm, &tmp_list, uprobes_list) { down_read(&mm->map_sem); if (!install_uprobe(mm, uprobe)) ret = 0; up_read(&mm->map_sem); list_del(&mm->uprobes_list); mmput(mm); } Agree that this is much better than what we have now. -- 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=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>