@@ -36,20 +36,15 @@ decltype(__hwasan_shadow)* __hwasan_premap_shadow();
3636
3737namespace __hwasan {
3838
39- // We cannot call anything in libc here (see comment above), so we need to
40- // assume the biggest allowed page size.
41- // Android max page size is defined as 16k here:
42- // https://android.googlesource.com/platform/bionic/+/main/libc/platform/bionic/page.h#41
43- static constexpr uptr kMaxGranularity = 16384 ;
44-
4539// Conservative upper limit.
4640static uptr PremapShadowSize () {
47- return RoundUpTo (GetMaxVirtualAddress () >> kShadowScale , kMaxGranularity );
41+ return RoundUpTo (GetMaxVirtualAddress () >> kShadowScale ,
42+ GetMmapGranularity ());
4843}
4944
5045static uptr PremapShadow () {
5146 return MapDynamicShadow (PremapShadowSize (), kShadowScale ,
52- kShadowBaseAlignment , kHighMemEnd , kMaxGranularity );
47+ kShadowBaseAlignment , kHighMemEnd );
5348}
5449
5550static bool IsPremapShadowAvailable () {
@@ -61,7 +56,7 @@ static bool IsPremapShadowAvailable() {
6156}
6257
6358static uptr FindPremappedShadowStart (uptr shadow_size_bytes) {
64- const uptr granularity = kMaxGranularity ;
59+ const uptr granularity = GetMmapGranularity () ;
6560 const uptr shadow_start = reinterpret_cast <uptr>(&__hwasan_shadow);
6661 const uptr premap_shadow_size = PremapShadowSize ();
6762 const uptr shadow_size = RoundUpTo (shadow_size_bytes, granularity);
@@ -114,7 +109,7 @@ uptr FindDynamicShadowStart(uptr shadow_size_bytes) {
114109 if (IsPremapShadowAvailable ())
115110 return FindPremappedShadowStart (shadow_size_bytes);
116111 return MapDynamicShadow (shadow_size_bytes, kShadowScale , kShadowBaseAlignment ,
117- kHighMemEnd , kMaxGranularity );
112+ kHighMemEnd );
118113}
119114
120115} // namespace __hwasan
@@ -140,7 +135,7 @@ uptr FindDynamicShadowStart(uptr shadow_size_bytes) {
140135 RingBufferSize ());
141136# endif
142137 return MapDynamicShadow (shadow_size_bytes, kShadowScale , kShadowBaseAlignment ,
143- kHighMemEnd , GetMmapGranularity () );
138+ kHighMemEnd );
144139}
145140
146141} // namespace __hwasan
0 commit comments