]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
misc: tegra-profiler: fix backtracing
authorIgor Nabirushkin <inabirushkin@nvidia.com>
Mon, 5 Aug 2013 16:34:13 +0000 (20:34 +0400)
committerDan Willemsen <dwillemsen@nvidia.com>
Tue, 17 Sep 2013 00:40:14 +0000 (17:40 -0700)
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>
drivers/misc/tegra-profiler/backtrace.c
drivers/misc/tegra-profiler/version.h

index d3fa8a0cb7d1db70077e1de4afa609724a49a5c9..b89aceaba1fc9d68174a76a210cc3b298883b057 100644 (file)
@@ -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;
index 6bfd1a30d3c0dd25508ce2d9f584f1520345193e..acc278b747c507d8dc354c8599676d60b1fb1a88 100644 (file)
@@ -18,7 +18,7 @@
 #ifndef __QUADD_VERSION_H
 #define __QUADD_VERSION_H
 
-#define QUADD_MODULE_VERSION           "1.25"
+#define QUADD_MODULE_VERSION           "1.26"
 #define QUADD_MODULE_BRANCH            "Blackrock2"
 
 #endif /* __QUADD_VERSION_H */