Re: [PATCH v9 03/24] virt: sev-guest: Make payload a variable length array

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/23/24 11:16, Nikunj A. Dadhania wrote:
> On 6/21/2024 10:24 PM, Borislav Petkov wrote:
>> On Fri, May 31, 2024 at 10:00:17AM +0530, Nikunj A Dadhania wrote:
>>> Currently, guest message is PAGE_SIZE bytes and payload is hard-coded to
>>> 4000 bytes, assuming snp_guest_msg_hdr structure as 96 bytes.
>>>
>>> Remove the structure size assumption and hard-coding of payload size and
>>> instead use variable length array.
>>
>> I don't understand here what hard-coding is being removed?
>>
>> It is simply done differently:
>>
>> from
>>
>>> -     snp_dev->request = alloc_shared_pages(dev, sizeof(struct snp_guest_msg));
>>
>> to
>>
>>> +     snp_dev->request = alloc_shared_pages(dev, SNP_GUEST_MSG_SIZE);
>>
>> Maybe I'm missing the point here but do you mean by removing the hard-coding
>> this:
>>
>> +#define SNP_GUEST_MSG_SIZE 4096
>> +#define SNP_GUEST_MSG_PAYLOAD_SIZE (SNP_GUEST_MSG_SIZE - sizeof(struct snp_guest_msg))
>>
>> where the msg payload size will get computed at build time and you won't have
>> to do that 4000 in the struct definition:
>>
>> 	u8 payload[4000];
>>
>> ?
> 
> Yes, payload was earlier fixed at 4000 bytes, without considering the size of snp_guest_msg.

An alternative to the #defines would be something like:

struct snp_guest_msg {
	struct snp_guest_msg_hdr hdr;
	u8 payload[PAGE_SIZE - sizeof(struct snp_guest_msg_hdr)];
 } __packed;

Not sure it matters, but does reduce the changes while ensuring the
payload plus header doesn't exceed a page.

Thanks,
Tom

> 
> Regards
> Nikunj




[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux