Commit ff431a4
preserve errno in deallocate_small success path and h_free_sized
deallocate_small captured saved_errno but only restored it on the OOM
fallback path. The fast path through label_slab() returned without
restoring errno, violating the function's "preserves errno" contract that
h_free and h_free_sized rely on. prctl(PR_SET_VMA_ANON_NAME) is only
called when CONFIG_LABEL_MEMORY is non-zero (Android debuggable builds),
so restore errno conditionally via if (CONFIG_LABEL_MEMORY).
h_free_sized's large path called deallocate_large() directly with no
save/restore, while h_free already wraps it correctly. This leaked errno
via the region quarantine's mmap/munmap/madvise/prctl calls and surfaced
through C++17 sized-deallocation (operator delete(void*, size_t)).
Replace the valueless -DLABEL_MEMORY flag with CONFIG_LABEL_MEMORY=true/false
following the project's existing CONFIG_* convention. Add it to the Makefile
and config files (default false). Android.bp sets it to true for debuggable
builds via product_variables. Use if (CONFIG_LABEL_MEMORY) in the code to
avoid preprocessor use where plain C suffices.1 parent a6a798d commit ff431a4
7 files changed
Lines changed: 22 additions & 8 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
69 | 69 | | |
70 | 70 | | |
71 | 71 | | |
72 | | - | |
| 72 | + | |
73 | 73 | | |
74 | 74 | | |
75 | 75 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
89 | 89 | | |
90 | 90 | | |
91 | 91 | | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
92 | 96 | | |
93 | 97 | | |
94 | 98 | | |
| |||
108 | 112 | | |
109 | 113 | | |
110 | 114 | | |
111 | | - | |
| 115 | + | |
| 116 | + | |
112 | 117 | | |
113 | 118 | | |
114 | 119 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
21 | 21 | | |
22 | 22 | | |
23 | 23 | | |
| 24 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
928 | 928 | | |
929 | 929 | | |
930 | 930 | | |
| 931 | + | |
| 932 | + | |
| 933 | + | |
| 934 | + | |
931 | 935 | | |
932 | 936 | | |
933 | 937 | | |
| |||
1751 | 1755 | | |
1752 | 1756 | | |
1753 | 1757 | | |
| 1758 | + | |
1754 | 1759 | | |
| 1760 | + | |
1755 | 1761 | | |
1756 | 1762 | | |
1757 | 1763 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2 | 2 | | |
3 | 3 | | |
4 | 4 | | |
5 | | - | |
6 | 5 | | |
7 | | - | |
8 | 6 | | |
9 | 7 | | |
10 | 8 | | |
| |||
120 | 118 | | |
121 | 119 | | |
122 | 120 | | |
123 | | - | |
124 | | - | |
125 | | - | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
126 | 124 | | |
127 | | - | |
128 | 125 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
11 | 15 | | |
12 | 16 | | |
13 | 17 | | |
| |||
0 commit comments