prov/util: Remove peer rx entry if it's in the unspec_unexp queue #11402
+8
−0
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 EFA provider AV keeps track of peers that any endpoint bound to the AV has received messages from but were not explicitly inserted into the AV by the application. The provider limits the number of such peers to prevent runaway memory usage.
When the EFA provider has to remove such an implicitly inserted peer, it also needs to remove any unmatched entries in the SRX queues associated with the peer. The EFA provider calls free_entry to remove the rx entry. But free_entry does not remove the rx entry from the unspec_unexp_[msg,tag]_queue dlist which corrupts the dlist.
This commit adds logic to remove any entry that is about to be freed from the unspec_unexp_[msg,tag]_queue.