@@ -36,20 +36,15 @@ decltype(__hwasan_shadow)* __hwasan_premap_shadow();
36
36
37
37
namespace __hwasan {
38
38
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
-
45
39
// Conservative upper limit.
46
40
static uptr PremapShadowSize () {
47
- return RoundUpTo (GetMaxVirtualAddress () >> kShadowScale , kMaxGranularity );
41
+ return RoundUpTo (GetMaxVirtualAddress () >> kShadowScale ,
42
+ GetMmapGranularity ());
48
43
}
49
44
50
45
static uptr PremapShadow () {
51
46
return MapDynamicShadow (PremapShadowSize (), kShadowScale ,
52
- kShadowBaseAlignment , kHighMemEnd , kMaxGranularity );
47
+ kShadowBaseAlignment , kHighMemEnd );
53
48
}
54
49
55
50
static bool IsPremapShadowAvailable () {
@@ -61,7 +56,7 @@ static bool IsPremapShadowAvailable() {
61
56
}
62
57
63
58
static uptr FindPremappedShadowStart (uptr shadow_size_bytes) {
64
- const uptr granularity = kMaxGranularity ;
59
+ const uptr granularity = GetMmapGranularity () ;
65
60
const uptr shadow_start = reinterpret_cast <uptr>(&__hwasan_shadow);
66
61
const uptr premap_shadow_size = PremapShadowSize ();
67
62
const uptr shadow_size = RoundUpTo (shadow_size_bytes, granularity);
@@ -114,7 +109,7 @@ uptr FindDynamicShadowStart(uptr shadow_size_bytes) {
114
109
if (IsPremapShadowAvailable ())
115
110
return FindPremappedShadowStart (shadow_size_bytes);
116
111
return MapDynamicShadow (shadow_size_bytes, kShadowScale , kShadowBaseAlignment ,
117
- kHighMemEnd , kMaxGranularity );
112
+ kHighMemEnd );
118
113
}
119
114
120
115
} // namespace __hwasan
@@ -140,7 +135,7 @@ uptr FindDynamicShadowStart(uptr shadow_size_bytes) {
140
135
RingBufferSize ());
141
136
# endif
142
137
return MapDynamicShadow (shadow_size_bytes, kShadowScale , kShadowBaseAlignment ,
143
- kHighMemEnd , GetMmapGranularity () );
138
+ kHighMemEnd );
144
139
}
145
140
146
141
} // namespace __hwasan
0 commit comments