Reviewed-by: Lyude Paul <lyude@xxxxxxxxxx> Will push upstream in a moment On Sat, 2022-10-29 at 15:46 +0800, Zheng Wang wrote: > If it failed in kzalloc, vma will be freed in nvkm_vmm_node_merge. > The later use of vma will casue use after free. > > Reported-by: Zheng Wang <hackerzheng666@xxxxxxxxx> > Reported-by: Zhuorao Yang <alex000young@xxxxxxxxx> > > Fix it by returning to upper caller as soon as error occurs. > > Signed-off-by: Zheng Wang <zyytlz.wz@xxxxxxx> > --- > drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c | 3 +-- > 1 file changed, 1 insertion(+), 2 deletions(-) > > diff --git a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c > index ae793f400ba1..04befd28f80b 100644 > --- a/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c > +++ b/drivers/gpu/drm/nouveau/nvkm/subdev/mmu/vmm.c > @@ -1272,8 +1272,7 @@ nvkm_vmm_pfn_map(struct nvkm_vmm *vmm, u8 shift, u64 addr, u64 size, u64 *pfn) > page - > vmm->func->page, map); > if (WARN_ON(!tmp)) { > - ret = -ENOMEM; > - goto next; > + return -ENOMEM; > } > > if ((tmp->mapped = map)) -- Cheers, Lyude Paul (she/her) Software Engineer at Red Hat