Skip to content

rts: Ensure that pinned allocations respect block size

Ben Gamari requested to merge wip/T23400 into master

Previously, it was possible for pinned, aligned allocation requests to allocate beyond the end of the pinned accumulator block. Specifically, we failed to account for the padding needed to achieve the requested alignment in the "large object" check. With large alignment requests, this can result in the allocator using the capability's pinned object accumulator block to service a request which is larger than PINNED_EMPTY_SIZE.

To fix this we reorganize allocatePinned to consistently account for the alignment padding in all large object checks. This is a bit subtle as we must handle the case of a small allocation request filling the accumulator block, as well as large requests.

Fixes #23400 (closed).

Merge request reports