Messages in this thread |  | | Date | Tue, 8 Jan 2013 17:43:28 +0530 | From | Srikar Dronamraju <> | Subject | Re: [PATCH 5/7] uprobes: Fix utask->xol_vaddr leak in pre_ssout() |
| |
* Oleg Nesterov <oleg@redhat.com> [2012-12-31 18:52:26]:
> pre_ssout() should do xol_free_insn_slot() if arch_uprobe_pre_xol() > fails, otherwise nobody will free the allocated slot. > > Signed-off-by: Oleg Nesterov <oleg@redhat.com>
Acked-by: Srikar Dronamraju <srikar@linux.vnet.ibm.com>
(one nit below) > --- > kernel/events/uprobes.c | 9 ++++++++- > 1 files changed, 8 insertions(+), 1 deletions(-) > > diff --git a/kernel/events/uprobes.c b/kernel/events/uprobes.c > index 2ed6239..bd94d2c 100644 > --- a/kernel/events/uprobes.c > +++ b/kernel/events/uprobes.c > @@ -1306,6 +1306,7 @@ pre_ssout(struct uprobe *uprobe, struct pt_regs *regs, unsigned long bp_vaddr) > { > struct uprobe_task *utask; > unsigned long xol_vaddr; > + int err; > > utask = current->utask; > > @@ -1316,7 +1317,13 @@ pre_ssout(struct uprobe *uprobe, struct pt_regs *regs, unsigned long bp_vaddr) > utask->xol_vaddr = xol_vaddr; > utask->vaddr = bp_vaddr; > > - return arch_uprobe_pre_xol(&uprobe->arch, regs); > + err = arch_uprobe_pre_xol(&uprobe->arch, regs); > + if (unlikely(err)) { > + xol_free_insn_slot(current); > + return err; > + } > + > + return 0; > }
Nit: we could reduce a line or two with
err = arch_uprobe_pre_xol(&uprobe->arch, regs); if (unlikely(err)) xol_free_insn_slot(current);
return err; > > /* > -- > 1.5.5.1 >
|  |