vcb
static void pr_dbf_vcb(const struct vcb *b)
static void fill_vcb_input(struct vcssb *vcssb, struct vcb *vcb, u16 index)
memset(vcb, 0, sizeof(*vcb));
vcb->vcb_hdr.vcb_input_length = get_4k_mult_vcb_size(vcssb);
vcb->vcb_hdr.cs_token = vcssb->cs_token;
vcb->vcb_hdr.first_vc_index = index;
vcb->vcb_hdr.last_vc_index = index;
static void extract_vce_from_sevcb(struct vcb *vcb, struct vce *vce)
extracted_vce = (struct vce *)vcb->vcb_buf;
memcpy(vce, vcb->vcb_buf, extracted_vce->vce_hdr.vce_length);
static int get_sevcb(struct vcssb *vcssb, u16 index, struct vcb *vcb)
fill_vcb_input(vcssb, vcb, index);
diag320_rc = diag320(DIAG320_CERT_BLOCK, vcb);
pr_dbf_vcb(vcb);
if (vcb->vcb_hdr.vcb_output_length == VCB_LEN_NO_CERTS) {
} else if (vcb->vcb_hdr.remaining_vc_count != 0) {
struct vcb *vcb;
vcb = vmalloc(get_4k_mult_vcb_size(vcssb));
vce = vmalloc(vcssb->max_single_vcb_length - sizeof(vcb->vcb_hdr));
if (!vcb || !vce)
rc = get_sevcb(vcssb, index, vcb);
extract_vce_from_sevcb(vcb, vce);
vfree(vcb);