summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeniy Stepanov <eugeni.stepanov@gmail.com>2013-07-30 11:50:26 +0000
committerEvgeniy Stepanov <eugeni.stepanov@gmail.com>2013-07-30 11:50:26 +0000
commitd8a1798b47e2e956338a3d6ff9c3e3ec0fcf1021 (patch)
tree685da21f7570906cb73f60ecb136ce7d52c24242
parent643b398786dd7da9c7a2926bdf50fa8c24356b0b (diff)
downloadbcm5719-llvm-d8a1798b47e2e956338a3d6ff9c3e3ec0fcf1021.tar.gz
bcm5719-llvm-d8a1798b47e2e956338a3d6ff9c3e3ec0fcf1021.zip
[asan] Limit fake stack size to a reasonable value when running with unlimited stack.
llvm-svn: 187411
-rw-r--r--compiler-rt/lib/asan/asan_fake_stack.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/compiler-rt/lib/asan/asan_fake_stack.cc b/compiler-rt/lib/asan/asan_fake_stack.cc
index 55eddb6ebd8..15409712abd 100644
--- a/compiler-rt/lib/asan/asan_fake_stack.cc
+++ b/compiler-rt/lib/asan/asan_fake_stack.cc
@@ -92,7 +92,10 @@ void FakeStack::Cleanup() {
}
uptr FakeStack::ClassMmapSize(uptr size_class) {
- return RoundUpToPowerOfTwo(stack_size_);
+ // Limit allocation size to ClassSize * MaxDepth when running with unlimited
+ // stack.
+ return RoundUpTo(Min(ClassSize(size_class) * kMaxRecursionDepth, stack_size_),
+ GetPageSizeCached());
}
void FakeStack::AllocateOneSizeClass(uptr size_class) {
OpenPOWER on IntegriCloud