Re: [PATCH 5/7] uretprobes: return probe exit, invoke handlers

2013-03-26 Thread Anton Arapov
On Mon, Mar 25, 2013 at 05:38:00PM +0100, Oleg Nesterov wrote: > On 03/25, Anton Arapov wrote: > > > > On Sun, Mar 24, 2013 at 05:28:17PM +0100, Oleg Nesterov wrote: > > > > > > Ignoring the fact you need put_uprobe/kfree, it seems that we should > > > do something like this, > > > > > > do { > >

Re: [PATCH 5/7] uretprobes: return probe exit, invoke handlers

2013-03-25 Thread Oleg Nesterov
On 03/25, Anton Arapov wrote: > > On Sun, Mar 24, 2013 at 05:28:17PM +0100, Oleg Nesterov wrote: > > > > Ignoring the fact you need put_uprobe/kfree, it seems that we should > > do something like this, > > > > do { > > handler_uretprobe_chain(...); > > > > if (!ri->dirty

Re: [PATCH 5/7] uretprobes: return probe exit, invoke handlers

2013-03-25 Thread Anton Arapov
On Sun, Mar 24, 2013 at 05:28:17PM +0100, Oleg Nesterov wrote: > On 03/22, Anton Arapov wrote: > > > > +static void handle_uretprobe(struct xol_area *area, struct pt_regs *regs) > > +{ > > + struct uprobe_task *utask; > > + struct return_instance *ri, *tmp; > > + unsigned long prev_ret_vaddr;

Re: [PATCH 5/7] uretprobes: return probe exit, invoke handlers

2013-03-25 Thread Oleg Nesterov
The last comment, I promise ;) On 03/24, Oleg Nesterov wrote: > > On 03/22, Anton Arapov wrote: > > > > +static void handle_uretprobe(struct xol_area *area, struct pt_regs *regs) > > +{ > > + struct uprobe_task *utask; > > + struct return_instance *ri, *tmp; > > + unsigned long prev_ret_vadd

Re: [PATCH 5/7] uretprobes: return probe exit, invoke handlers

2013-03-24 Thread Oleg Nesterov
On 03/22, Anton Arapov wrote: > > +static void handle_uretprobe(struct xol_area *area, struct pt_regs *regs) > +{ > + struct uprobe_task *utask; > + struct return_instance *ri, *tmp; > + unsigned long prev_ret_vaddr; > + > + utask = get_utask(); > + if (!utask) > + r

[PATCH 5/7] uretprobes: return probe exit, invoke handlers

2013-03-22 Thread Anton Arapov
Uretprobe handlers are invoked when the trampoline is hit, on completion the trampoline is replaced with the saved return address and the uretprobe instance deleted. RFCv6 changes: - rework handle_uretprobe() RFCv5 changes: - switch to simply linked list ->return_uprobes - rework handle_u