Messages in this thread | | | Date | Tue, 15 Mar 2011 21:55:08 +0530 | From | Srikar Dronamraju <> | Subject | Re: [PATCH v2 2.6.38-rc8-tip 7/20] 7: uprobes: store/restore original instruction. |
| |
* Thomas Gleixner <tglx@linutronix.de> [2011-03-15 15:41:20]:
> On Mon, 14 Mar 2011, Srikar Dronamraju wrote: > > static int install_uprobe(struct mm_struct *mm, struct uprobe *uprobe) > > { > > - int ret = 0; > > + struct task_struct *tsk; > > + int ret = -EINVAL; > > > > - /*TODO: install breakpoint */ > > - if (!ret) > > + get_task_struct(mm->owner); > > Increment task ref before checking for NULL ?
In response to earlier comments/suggestions from Stephen Wilson, we resolved to handle it this way
static uprobes_get_mm_owner() { struct task_struct *tsk;
rcu_read_lock() tsk = rcu_dereference(mm->owner); if (tsk) get_task_struct(tsk); rcu_read_unlock(); return tsk; }
Both install_uprobe and remove_uprobe will end up calling uprobes_get_mm_owner().
-- Thanks and Regards Srikar
| |