summaryrefslogtreecommitdiff
path: root/drivers/misc/tegra-profiler/backtrace.c
diff options
context:
space:
mode:
authorIgor Nabirushkin <inabirushkin@nvidia.com>2013-08-05 20:34:13 +0400
committerDan Willemsen <dwillemsen@nvidia.com>2013-09-16 17:40:14 -0700
commit374ece66c69ace21267de769c9edd0556f2e325e (patch)
treeb626821bf4c6087f0a27a0dc41374a2c805c03d9 /drivers/misc/tegra-profiler/backtrace.c
parent08728775b30545682a2886ba3a3b1fdc24e95c22 (diff)
misc: tegra-profiler: fix backtracing
check_vma_address function: sometimes (rarely): address value may be overflowed Bug 1312406 Change-Id: Ibf268000dfcba4046c499f734c368a0854d0f942 Signed-off-by: Igor Nabirushkin <inabirushkin@nvidia.com> Reviewed-on: http://git-master/r/258236 (cherry picked from commit 6d41daab2b4d6ede2e16a0b0354631e8a6648d8b) Reviewed-on: http://git-master/r/268524 Reviewed-by: Automatic_Commit_Validation_User GVS: Gerrit_Virtual_Submit Tested-by: Maxim Morin <mmorin@nvidia.com> Reviewed-by: Bo Yan <byan@nvidia.com>
Diffstat (limited to 'drivers/misc/tegra-profiler/backtrace.c')
-rw-r--r--drivers/misc/tegra-profiler/backtrace.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/misc/tegra-profiler/backtrace.c b/drivers/misc/tegra-profiler/backtrace.c
index d3fa8a0cb7d1..b89aceaba1fc 100644
--- a/drivers/misc/tegra-profiler/backtrace.c
+++ b/drivers/misc/tegra-profiler/backtrace.c
@@ -39,12 +39,14 @@ quadd_callchain_store(struct quadd_callchain *callchain_data, u32 ip)
static int
check_vma_address(unsigned long addr, struct vm_area_struct *vma)
{
- unsigned long start, end;
+ unsigned long start, end, length;
if (vma) {
start = vma->vm_start;
end = vma->vm_end;
- if (addr >= start && addr + sizeof(unsigned long) <= end)
+ length = end - start;
+ if (length > sizeof(unsigned long) &&
+ addr >= start && addr <= end - sizeof(unsigned long))
return 0;
}
return -EINVAL;