]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
virt: arm-cca-guest: fix error check for RSI_INCOMPLETE
authorSami Mujawar <sami.mujawar@arm.com>
Fri, 10 Apr 2026 16:36:36 +0000 (17:36 +0100)
committerCatalin Marinas <catalin.marinas@arm.com>
Tue, 14 Apr 2026 15:26:08 +0000 (16:26 +0100)
The RSI interface can return RSI_INCOMPLETE when a report spans
multiple granules. This is an expected condition and should not be
treated as a fatal error.

Currently, arm_cca_report_new() checks for `info.result != RSI_SUCCESS`
and bails out, which incorrectly flags RSI_INCOMPLETE as a failure.
Fix the check to only break out on results other than RSI_SUCCESS or
RSI_INCOMPLETE.

This ensures partial reports are handled correctly and avoids spurious
-ENXIO errors when generating attestation reports.

Fixes: 7999edc484ca ("virt: arm-cca-guest: TSM_REPORT support for realms")
Signed-off-by: Sami Mujawar <sami.mujawar@arm.com>
Reported-by: Jagdish Gediya <Jagdish.Gediya@arm.com>
Reviewed-by: Steven Price <steven.price@arm.com>
Reviewed-by: Gavin Shan <gshan@redhat.com>
Reviewed-by: Suzuki K Poulose <suzuki.poulose@arm.com>
Reviewed-by: Yeoreum Yun <yeoreum.yun@arm.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
drivers/virt/coco/arm-cca-guest/arm-cca-guest.c

index 0c9ea24a200c98b2de9688c4917ec4fcaae0aa8d..66d00b6ceb789b1513330d83557c2ac1f5bc9ba6 100644 (file)
@@ -157,7 +157,8 @@ static int arm_cca_report_new(struct tsm_report *report, void *data)
                } while (info.result == RSI_INCOMPLETE &&
                         info.offset < RSI_GRANULE_SIZE);
 
-               if (info.result != RSI_SUCCESS) {
+               /* Break out in case of failure */
+               if (info.result != RSI_SUCCESS && info.result != RSI_INCOMPLETE) {
                        ret = -ENXIO;
                        token_size = 0;
                        goto exit_free_granule_page;