OSDN Git Service

nouveau/svm: Use struct_size() helper in nouveau_pfns_map()
authorGustavo A. R. Silva <gustavoars@kernel.org>
Mon, 7 Feb 2022 23:39:23 +0000 (17:39 -0600)
committerLyude Paul <lyude@redhat.com>
Tue, 8 Feb 2022 20:11:22 +0000 (15:11 -0500)
Make use of the struct_size() helper instead of an open-coded version,
in order to avoid any potential type mistakes or integer overflows that,
in the worse scenario, could lead to heap overflows.

Link: https://github.com/KSPP/linux/issues/160
Signed-off-by: Gustavo A. R. Silva <gustavoars@kernel.org>
Reviewed-by: Lyude Paul <lyude@redhat.com>
Signed-off-by: Lyude Paul <lyude@redhat.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20220207233923.GA524723@embeddedor
drivers/gpu/drm/nouveau/nouveau_svm.c

index 266809e..46a5a10 100644 (file)
@@ -925,8 +925,8 @@ nouveau_pfns_map(struct nouveau_svmm *svmm, struct mm_struct *mm,
 
        mutex_lock(&svmm->mutex);
 
-       ret = nvif_object_ioctl(&svmm->vmm->vmm.object, args, sizeof(*args) +
-                               npages * sizeof(args->p.phys[0]), NULL);
+       ret = nvif_object_ioctl(&svmm->vmm->vmm.object, args,
+                               struct_size(args, p.phys, npages), NULL);
 
        mutex_unlock(&svmm->mutex);
 }