Re: [PATCH v2] Uprobes: Fix kernel oops with delayed_uprobe_remove()

2018-12-05 Thread Oleg Nesterov
On 12/05, Ravi Bangoria wrote: > > --- a/kernel/events/uprobes.c > +++ b/kernel/events/uprobes.c > @@ -572,7 +572,9 @@ static void put_uprobe(struct uprobe *uprobe) >* gets called, we don't get a chance to remove uprobe from >* delayed_uprobe_list from

Re: [PATCH v2] Uprobes: Fix kernel oops with delayed_uprobe_remove()

2018-12-05 Thread Oleg Nesterov
On 12/05, Ravi Bangoria wrote: > > --- a/kernel/events/uprobes.c > +++ b/kernel/events/uprobes.c > @@ -572,7 +572,9 @@ static void put_uprobe(struct uprobe *uprobe) >* gets called, we don't get a chance to remove uprobe from >* delayed_uprobe_list from

Re: [PATCH v2] Uprobes: Fix kernel oops with delayed_uprobe_remove()

2018-12-05 Thread Srikar Dronamraju
* Ravi Bangoria [2018-12-05 09:04:23]: > There could be a race between task exit and probe unregister: > > exit_mm() > mmput() > __mmput() uprobe_unregister() > uprobe_clear_state() put_uprobe() > delayed_uprobe_remove() delayed_uprobe_remove() > >

Re: [PATCH v2] Uprobes: Fix kernel oops with delayed_uprobe_remove()

2018-12-05 Thread Srikar Dronamraju
* Ravi Bangoria [2018-12-05 09:04:23]: > There could be a race between task exit and probe unregister: > > exit_mm() > mmput() > __mmput() uprobe_unregister() > uprobe_clear_state() put_uprobe() > delayed_uprobe_remove() delayed_uprobe_remove() > >

[PATCH v2] Uprobes: Fix kernel oops with delayed_uprobe_remove()

2018-12-04 Thread Ravi Bangoria
There could be a race between task exit and probe unregister: exit_mm() mmput() __mmput() uprobe_unregister() uprobe_clear_state() put_uprobe() delayed_uprobe_remove() delayed_uprobe_remove() put_uprobe() is calling delayed_uprobe_remove() without

[PATCH v2] Uprobes: Fix kernel oops with delayed_uprobe_remove()

2018-12-04 Thread Ravi Bangoria
There could be a race between task exit and probe unregister: exit_mm() mmput() __mmput() uprobe_unregister() uprobe_clear_state() put_uprobe() delayed_uprobe_remove() delayed_uprobe_remove() put_uprobe() is calling delayed_uprobe_remove() without