Skip to content

Commit 697e3dd

Browse files
Yonatan Mamangregkh
authored andcommitted
nouveau/dmem: Fix vulnerability in migrate_to_ram upon copy error
commit 835745a upstream. The `nouveau_dmem_copy_one` function ensures that the copy push command is sent to the device firmware but does not track whether it was executed successfully. In the case of a copy error (e.g., firmware or hardware failure), the copy push command will be sent via the firmware channel, and `nouveau_dmem_copy_one` will likely report success, leading to the `migrate_to_ram` function returning a dirty HIGH_USER page to the user. This can result in a security vulnerability, as a HIGH_USER page that may contain sensitive or corrupted data could be returned to the user. To prevent this vulnerability, we allocate a zero page. Thus, in case of an error, a non-dirty (zero) page will be returned to the user. Fixes: 5be73b6 ("drm/nouveau/dmem: device memory helpers for SVM") Signed-off-by: Yonatan Maman <[email protected]> Co-developed-by: Gal Shalom <[email protected]> Signed-off-by: Gal Shalom <[email protected]> Reviewed-by: Ben Skeggs <[email protected]> Cc: [email protected] Signed-off-by: Danilo Krummrich <[email protected]> Link: https://patchwork.freedesktop.org/patch/msgid/[email protected] Signed-off-by: Greg Kroah-Hartman <[email protected]>
1 parent b822007 commit 697e3dd

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

drivers/gpu/drm/nouveau/nouveau_dmem.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,7 @@ static vm_fault_t nouveau_dmem_migrate_to_ram(struct vm_fault *vmf)
193193
if (!spage || !(src & MIGRATE_PFN_MIGRATE))
194194
goto done;
195195

196-
dpage = alloc_page_vma(GFP_HIGHUSER, vmf->vma, vmf->address);
196+
dpage = alloc_page_vma(GFP_HIGHUSER | __GFP_ZERO, vmf->vma, vmf->address);
197197
if (!dpage)
198198
goto done;
199199

0 commit comments

Comments
 (0)