From: Sean Christopherson <seanjc@google.com>
To: Rick P Edgecombe <rick.p.edgecombe@intel.com>
Cc: "x86@kernel.org" <x86@kernel.org>,
"dave.hansen@linux.intel.com" <dave.hansen@linux.intel.com>,
"thorsten.blum@linux.dev" <thorsten.blum@linux.dev>,
"bp@alien8.de" <bp@alien8.de>,
"mingo@redhat.com" <mingo@redhat.com>,
"tglx@linutronix.de" <tglx@linutronix.de>,
"hpa@zytor.com" <hpa@zytor.com>,
"pbonzini@redhat.com" <pbonzini@redhat.com>,
"kas@kernel.org" <kas@kernel.org>,
"kvm@vger.kernel.org" <kvm@vger.kernel.org>,
"linux-coco@lists.linux.dev" <linux-coco@lists.linux.dev>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH RESEND] KVM: TDX: Use struct_size and simplify tdx_get_capabilities
Date: Wed, 12 Nov 2025 12:24:57 -0800 [thread overview]
Message-ID: <aRTtGQlywvaPmb8v@google.com> (raw)
In-Reply-To: <4a2a74e01bfd31bc4bd7a672452c2d3d513c33db.camel@intel.com>
On Wed, Nov 12, 2025, Rick P Edgecombe wrote:
> On Wed, 2025-11-12 at 18:16 +0100, Thorsten Blum wrote:
>
> kvm x86 logs are suggested to start with a short summary of the patch. Maybe:
>
> Simplify the logic for copying the KVM_TDX_CAPABILITIES struct to userspace.
Yeah, I have this locally as two separate patches:
KVM: TDX: Use struct_size to simplify tdx_get_capabilities()
KVM: TDX: Check size of user's kvm_tdx_capabilities array before allocating
Your CI caught me just in time; I applied this locally last week, but haven't
fully pushed it to kvm-x86 yet. :-)
> It looks like you are conducting a treewide pattern matching cleanup?
>
> > > Retrieve the number of user entries with get_user() first and return
> > > -E2BIG early if 'user_caps' is too small to fit 'caps'.
> > >
> > > Allocate memory for 'caps' only after checking the user buffer's number
> > > of entries, thus removing two gotos and the need for premature freeing.
> > >
> > > Use struct_size() instead of manually calculating the number of bytes to
> > > allocate for 'caps', including the nested flexible array.
> > >
> > > Finally, copy 'caps' to user space with a single copy_to_user() call.
>
> In the handling of get_user(nr_user_entries, &user_caps->cpuid.nent), the old
> code forced -EFAULT, this patch doesn't. But it leaves the copy_to_user()'s to
> still force EFAULT. Why?
I'll tweak it to explicitly return -EFAULT. Doesn't matter terribly, but KVM's
standard pattern is to explicitly return -EFAULT.
> Tested-by: Rick Edgecombe <rick.p.edgecombe@intel.com> (really the TDX CI)
next prev parent reply other threads:[~2025-11-12 20:24 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-11-12 17:16 [PATCH RESEND] KVM: TDX: Use struct_size and simplify tdx_get_capabilities Thorsten Blum
2025-11-12 19:59 ` Edgecombe, Rick P
2025-11-12 20:24 ` Sean Christopherson [this message]
2025-11-13 0:41 ` Edgecombe, Rick P
2025-11-13 16:29 ` Sean Christopherson
2025-11-13 18:49 ` Edgecombe, Rick P
2025-11-13 18:55 ` Sean Christopherson
2025-11-12 21:22 ` Thorsten Blum
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aRTtGQlywvaPmb8v@google.com \
--to=seanjc@google.com \
--cc=bp@alien8.de \
--cc=dave.hansen@linux.intel.com \
--cc=hpa@zytor.com \
--cc=kas@kernel.org \
--cc=kvm@vger.kernel.org \
--cc=linux-coco@lists.linux.dev \
--cc=linux-kernel@vger.kernel.org \
--cc=mingo@redhat.com \
--cc=pbonzini@redhat.com \
--cc=rick.p.edgecombe@intel.com \
--cc=tglx@linutronix.de \
--cc=thorsten.blum@linux.dev \
--cc=x86@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.