ANBZ: #22214
The struct csv3_data_attestation_report is the communication structure
between the CSV3 guest and Hygon PSP. The reserved1 field in the struct
csv3_data_attestation_report has been changed to a flags field, which is
used to store the attestation extension flags. When the flags field is 0,
the firmware returns a legacy attestation report; otherwise, it returns
an extended attestation report.
The struct csv_guest_user_data_attestation is the user-space buffer for
legacy attestation, and this buffer can provide challenge data (see the
user_data and mnonce fields) to the firmware.
The struct csv_guest_user_data_attestation_ext is the user-space buffer
for extended attestation, and it can also provide challenge data (see the
user_data and mnonce fields) to the firmware. Since user space always
provides a buffer larger than the struct csv_guest_user_data_attestation,
the csv-guest module cannot determine whether the user-space request is
for extended attestation. To address this, we added a magic field to the
struct csv_guest_user_data_attestation_ext. If the magic field is
populated with the string "ATTESTATION_EXT", the csv-guest module
considers this is an extended attestation request, and the flags field in
the struct csv_guest_user_data_attestation_ext will be copied to the
struct csv3_data_attestation_report so that the firmware will serve the
attestation request as intended.
The definition of the struct csv_guest_user_data_attestation has been
moved to the csv-guest local header file.
Signed-off-by: hanliyang <hanliyang@hygon.cn>
Reviewed-by: Guixin Liu <kanie@Linux.aliabab.com>
Reviewed-by: Guixin Liu <kanie@linux.alibaba.com>
Link: https://gitee.com/anolis/cloud-kernel/pulls/5464