fix(forward): fix sizeof bug in module config free#544
Merged
Conversation
ba572ce to
1c813ad
Compare
GeorgyKirichenko
previously approved these changes
Mar 17, 2026
1c813ad to
35d9c0b
Compare
The "forward_module_config_free" used "sizeof(struct forward_target *)", which is 8 bytes instead of "sizeof(struct forward_target)" - 24 bytes when freeing the targets array. This returned memory to the wrong block allocator pool, causing a silent memory leak on every config update. Add "cp_module_fini" as a symmetric destructor for "cp_module_init" to properly release "counter_registry" and devices. Add a forward module memory leak test that verifies block allocator free size is unchanged after a module create/free cycle.
35d9c0b to
9845b3e
Compare
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.
The
forward_module_config_freeusedsizeof(struct forward_target *), which is 8 bytes instead ofsizeof(struct forward_target)- 24 bytes when freeing the targets array.This returned memory to the wrong block allocator pool, causing a silent memory leak on every config update.
Add
cp_module_finias a symmetric destructor forcp_module_initto properly releasecounter_registryand devices.Add a forward module memory leak test that verifies block allocator free size is unchanged after a module create/free cycle.