Zheng Wang
2022-Oct-29  08:03 UTC
[Nouveau] [PATCH] drm/nouveau/mmu: fix use-after-free bug in nvkm_vmm_pfn_map
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 at gmail.com>
Reported-by: Zhuorao Yang <alex000young at gmail.com>
Fix it by returning to upper caller as soon as error occurs.
Signed-off-by: Zheng Wang <zyytlz.wz at 163.com>
---
 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))
-- 
2.25.1
Zheng Hacker
2022-Nov-02  10:35 UTC
[Nouveau] [PATCH] drm/nouveau/mmu: fix use-after-free bug in nvkm_vmm_pfn_map
Friendly Ping :)
Lyude Paul
2023-Mar-07  00:04 UTC
[Nouveau] [PATCH] drm/nouveau/mmu: fix use-after-free bug in nvkm_vmm_pfn_map
Reviewed-by: Lyude Paul <lyude at redhat.com> 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 at gmail.com> > Reported-by: Zhuorao Yang <alex000young at gmail.com> > > Fix it by returning to upper caller as soon as error occurs. > > Signed-off-by: Zheng Wang <zyytlz.wz at 163.com> > --- > 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
Lyude Paul
2023-Mar-07  00:11 UTC
[Nouveau] [PATCH] drm/nouveau/mmu: fix use-after-free bug in nvkm_vmm_pfn_map
Actually - could you resend this with dri-devel at lists.freedesktop.org added to the cc list just to make patchwork happy? 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 at gmail.com> > Reported-by: Zhuorao Yang <alex000young at gmail.com> > > Fix it by returning to upper caller as soon as error occurs. > > Signed-off-by: Zheng Wang <zyytlz.wz at 163.com> > --- > 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
Seemingly Similar Threads
- [PATCH] drm/nouveau/mmu: fix use-after-free bug in nvkm_vmm_pfn_map
- [PATCH] drm/nouveau/mmu: fix use-after-free bug in nvkm_vmm_pfn_map
- [PATCH hmm 5/5] mm/hmm: remove the customizable pfn format from hmm_range_fault
- [PATCH v3 0/5] mm/hmm/nouveau: add PMD system memory mapping
- [PATCH hmm 0/5] Adjust hmm_range_fault() API