drm: radeon: fix overflow on 32bit systems
authorYoung Xiao <YangX92@hotmail.com>
Tue, 27 Nov 2018 11:50:17 +0000 (11:50 +0000)
committerAlex Deucher <alexander.deucher@amd.com>
Wed, 28 Nov 2018 20:55:37 +0000 (15:55 -0500)
the type mem->start is unsigned long, so this can overflow on
32bit system, since the type addr is uint64_t.

Reviewed-by: Christian König <christian.koenig@amd.com>
Signed-off-by: Young Xiao <YangX92@hotmail.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/radeon/radeon_vm.c

index fed11ec..a3d2ca0 100644 (file)
@@ -946,7 +946,7 @@ int radeon_vm_bo_update(struct radeon_device *rdev,
                bo_va->flags &= ~RADEON_VM_PAGE_WRITEABLE;
 
        if (mem) {
-               addr = mem->start << PAGE_SHIFT;
+               addr = (u64)mem->start << PAGE_SHIFT;
                if (mem->mem_type != TTM_PL_SYSTEM) {
                        bo_va->flags |= RADEON_VM_PAGE_VALID;
                }