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