summaryrefslogtreecommitdiff
path: root/drivers/video/tegra/host/nvhost_job.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/video/tegra/host/nvhost_job.c')
-rw-r--r--drivers/video/tegra/host/nvhost_job.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/drivers/video/tegra/host/nvhost_job.c b/drivers/video/tegra/host/nvhost_job.c
index 2100749d60dc..cd83b965a112 100644
--- a/drivers/video/tegra/host/nvhost_job.c
+++ b/drivers/video/tegra/host/nvhost_job.c
@@ -3,7 +3,7 @@
*
* Tegra Graphics Host Job
*
- * Copyright (c) 2010-2014, NVIDIA CORPORATION. All rights reserved.
+ * Copyright (c) 2010-2016, NVIDIA CORPORATION. All rights reserved.
*
* This program is free software; you can redistribute it and/or modify it
* under the terms and conditions of the GNU General Public License,
@@ -38,21 +38,22 @@
static size_t job_size(u32 num_cmdbufs, u32 num_relocs, u32 num_waitchks,
u32 num_syncpts)
{
- s64 num_unpins = num_cmdbufs + num_relocs;
- s64 total;
+ u64 num_unpins = (u64)num_cmdbufs + (u64)num_relocs;
+ u64 total;
total = sizeof(struct nvhost_job)
- + num_relocs * sizeof(struct nvhost_reloc)
- + num_relocs * sizeof(struct nvhost_reloc_shift)
+ + (u64)num_relocs * sizeof(struct nvhost_reloc)
+ + (u64)num_relocs * sizeof(struct nvhost_reloc_shift)
+ num_unpins * sizeof(struct nvhost_job_unpin)
- + num_waitchks * sizeof(struct nvhost_waitchk)
- + num_cmdbufs * sizeof(struct nvhost_job_gather)
+ + (u64)num_waitchks * sizeof(struct nvhost_waitchk)
+ + (u64)num_cmdbufs * sizeof(struct nvhost_job_gather)
+ num_unpins * sizeof(dma_addr_t)
+ num_unpins * sizeof(struct nvhost_pinid)
- + num_syncpts * sizeof(struct nvhost_job_syncpt);
+ + (u64)num_syncpts * sizeof(struct nvhost_job_syncpt);
- if(total > ULONG_MAX)
+ if (total > UINT_MAX)
return 0;
+
return (size_t)total;
}