From 4a3f84d257686cf598e8cfc27bb1735af65271a3 Mon Sep 17 00:00:00 2001 From: Alex Waterman Date: Tue, 26 May 2015 15:15:56 -0700 Subject: gpu: nvgpu: Fix overflow of alloc length Fix an issue where large ( > 4GB) allocations were not being computed correctly. The two fields, pages and page_size, were both 32 bits so when multiplied they easily overflowed. Simple fix is to cast them to 64 bits before multiplying them. Change-Id: I63fa54679e485de5c3a99684cbeb72c6cdc65504 Signed-off-by: Alex Waterman Reviewed-on: http://git-master/r/747429 Reviewed-by: Sami Kiminki Reviewed-by: Terje Bergstrom Reviewed-on: http://git-master/r/771148 Reviewed-by: Yu-Huan Hsu --- drivers/gpu/nvgpu/gk20a/mm_gk20a.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'drivers') diff --git a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c index 1e0fd6af..0deadfd0 100644 --- a/drivers/gpu/nvgpu/gk20a/mm_gk20a.c +++ b/drivers/gpu/nvgpu/gk20a/mm_gk20a.c @@ -2816,7 +2816,9 @@ int gk20a_vm_alloc_space(struct gk20a_as_share *as_share, (u64)args->pages * (u64)args->page_size); else - vaddr_start = gk20a_balloc(vma, args->pages * args->page_size); + vaddr_start = gk20a_balloc(vma, + (u64)args->pages * + (u64)args->page_size); if (!vaddr_start) { kfree(va_node); -- cgit v1.2.2