Re: [PATCH v3 2/4] virt: tdx-guest: Calculate the Quote buffer size safely
Kuppuswamy Sathyanarayanan <[email protected]> Wed, 29 Jul 2026 11:29:34 -0700
| Newsgroups | dev.linux.lists.linux-coco,org.kernel.vger.kvm,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
Hi, On 7/29/2026 5:29 AM, Peter Fang wrote: > struct tdx_quote_buf has a trailing flexible array member. > struct_size_t() calculates the size of this kind of struct safely. It > handles overflow, which is an important property since the Quote size > comes from the host. > > Use it in place of the fixed length limit. > > Signed-off-by: Peter Fang <[email protected]> > --- > v3: > - Split out the use of struct_size_t() for buffer length from the v2 > "Allocate Quote buffer dynamically" patch to refactor first. [Dave] > - Drop the Reviewed-by tags from v2 (Kiryl, Binbin) as the patch was > reworked. > --- Reviewed-by: Kuppuswamy Sathyanarayanan <[email protected]> > drivers/virt/coco/tdx-guest/tdx-guest.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/virt/coco/tdx-guest/tdx-guest.c b/drivers/virt/coco/tdx-guest/tdx-guest.c > index d0303e31e816..f47c5429d002 100644 > --- a/drivers/virt/coco/tdx-guest/tdx-guest.c > +++ b/drivers/virt/coco/tdx-guest/tdx-guest.c > @@ -170,7 +170,7 @@ static void tdx_mr_deinit(const struct attribute_group *mr_grp) > #define GET_QUOTE_SUCCESS 0 > #define GET_QUOTE_IN_FLIGHT 0xffffffffffffffff > > -#define TDX_QUOTE_MAX_LEN (GET_QUOTE_BUF_SIZE - sizeof(struct tdx_quote_buf)) > +#define TDX_QUOTE_BUF_LEN(n) struct_size_t(struct tdx_quote_buf, data, n) > > /* struct tdx_quote_buf: Format of Quote request buffer. > * @version: Quote format version, filled by TD. > @@ -315,7 +315,7 @@ static int tdx_report_new_locked(struct tsm_report *report, void *data) > > out_len = READ_ONCE(quote_buf->out_len); > > - if (out_len > TDX_QUOTE_MAX_LEN) > + if (TDX_QUOTE_BUF_LEN(out_len) > GET_QUOTE_BUF_SIZE) > return -EFBIG; > > buf = kvmemdup(quote_buf->data, out_len, GFP_KERNEL); -- Sathyanarayanan Kuppuswamy Linux Kernel Developer