diff options
| author | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-07-30 11:50:26 +0000 |
|---|---|---|
| committer | Evgeniy Stepanov <eugeni.stepanov@gmail.com> | 2013-07-30 11:50:26 +0000 |
| commit | d8a1798b47e2e956338a3d6ff9c3e3ec0fcf1021 (patch) | |
| tree | 685da21f7570906cb73f60ecb136ce7d52c24242 | |
| parent | 643b398786dd7da9c7a2926bdf50fa8c24356b0b (diff) | |
| download | bcm5719-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.cc | 5 |
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) { |

