Repository navigation
Oct 2026 fixes - #241
Open
struct wants to merge 5 commits into
Open
Oct 2026 fixes#241struct wants to merge 5 commits into
struct wants to merge 5 commits into
Conversation
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes from Claude, October 2026
fix out of range free from zone and inverted ALLOC_SANITY sampling gate
iso_free_chunk_from_zone compared the bitmap qword index with > instead
of >= against max_bitmap_idx, which is a count. A free of the chunk one
past the end of a zone's user pages passed the check and read/wrote the
qword one past the zone's bitmap. Small bitmaps are slices of a shared
page so that qword belongs to a neighboring zone, and clearing an
in-use bit there lets that zone hand out a live chunk a second time.
_iso_free_from_zone skipped iso_find_zone_range entirely when a zone
was passed in and never validated that p was inside that zone. It now
aborts if p is outside [user_pages_start, user_pages_start +
ZONE_USER_SIZE). Under ARM_MTE the comparison uses the untagged pointer
so valid tagged frees are not rejected.
The ALLOC_SANITY sampling gate in _iso_alloc tested zone != NULL, the
opposite of its comment. Normal allocations were never sampled and
private zone allocations were, and _iso_free_from_zone had no
_iso_alloc_free_sane_sample check so freeing a sampled chunk through
the zone API reached iso_free_chunk_from_zone with a garbage offset and
aborted. The gate is now zone == NULL and _iso_free_from_zone checks
for a sampled chunk before validating p against the zone, since
sampled chunks live in their own guarded pages outside any zone.
Also a clang-format whitespace fix in iso_strndup_from_zone