fix(migtd): complete SPDM cleanup and temporary GetTDReport compatibility - #243
Merged
Haitao Huang (haitaohuang) merged 2 commits intoSep 9, 2026
Conversation
Selectively backport the missing failure paths from intel#1028. Retire all exchange-owned sessions through AppContextGuard, including post-FINISH cancellation, before attempting transport shutdown. Preserve the primary error and propagate every responder processing error. Retain integration-specific helpers and application-buffer zeroization, reset the responder exchange latch at entry, and adapt the upstream cleanup regressions for both roles and cancellation. Existing state staging and source EXPORT selection are already present. Adapted from 7b40ecc and the responder latch reset in f0c2a39. Signed-off-by: Haitao Huang <haitaohuang@microsoft.com> Assisted-by: GitHub Copilot CLI:gpt-6-astra
Temporarily accept the request-ID-only GetTDReport payload and the legacy request ID plus 64-byte REPORT_DATA for testing mixed OS versions during the transition. Bound-check the complete declared payload, keep ReportInfo request-ID-only, and discard the optional tail without logging it or using it to construct TDREPORT data. Continue rejecting malformed lengths and truncation. Cover ignored legacy bytes and preserve the separate GetMigtdData REPORT_DATA contract. Remove this compatibility allowance after older test OS versions are retired; do not upstream this temporary change to Intel. Signed-off-by: Haitao Huang <haitaohuang@microsoft.com> Assisted-by: GitHub Copilot CLI:gpt-6-astra
Haitao Huang (haitaohuang)
merged commit Sep 9, 2026
af930ba
into
microsoft:integration
60 checks passed
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.
Summary
Bring both requested changes to
integrationin two independently revertible commits:169fcff9- backport only the missing behavior from fix(migtd/spdm): make session failures atomic intel/MigTD#1028: retire all exchange-owned SPDM session slots, including after FINISH clears the handshake ID; preserve the primary error while attempting transport shutdown; propagate all responder processing errors; reset the responder exchange latch. Reuse integration's shared helpers and preserve its existing cancellation-safe application-key wipe, source EXPORT-version selection, and deferred migration-state installation.dcfd8270- REVERT_ME, temporary GetTDReport compatibility for testing while old and new OS versions coexist. Remove this commit after the OS transition; do not upstream it to Intel.Keeping the temporary allowance separate lets it be reverted without removing the SPDM fixes.
Temporary GetTDReport contract
ReportInforemains request-ID-only. Legacy REPORT_DATA is not stored, logged, or used to generate TDREPORT; MigTD's fixed report-data namespace remains unchanged. The separate GetMigtdData REPORT_DATA field is still honored. The emulator continues emitting the canonical 8-byte form.Verification
cargo fmt --checkand supported in-scope library Clippy.make -C sh_script/Azure build-igvm generate-hash-v2with the recorded dependencies and Rust 1.88.0.The extra workspace-wide
-D warningscheck also fails on the unmodified baseline (including existing spdmlib build-script and attestation/vmcall lints). Those unrelated warnings are not changed or suppressed here; the repository's configured CI gauntlet passes.