2020-09-14 12:13:30

by Joerg Roedel

[permalink] [raw]
Subject: [PATCH -tip] KVM: SVM: nested: Initialize on-stack pointers in svm_set_nested_state()

From: Joerg Roedel <[email protected]>

The save and ctl pointers need to be initialized to NULL because there
is a way through the function in which there is no memory allocated
for the pointers but where they are freed in the end.

This involves the 'goto out_set_gif' before the memory for the
pointers is allocated.

Reported-by: Dan Carpenter <[email protected]>
Fixes: 6ccbd29ade0d ("KVM: SVM: nested: Don't allocate VMCB structures on stack")
Signed-off-by: Joerg Roedel <[email protected]>
---
arch/x86/kvm/svm/nested.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c
index 598a769f1961..72a3d6f87107 100644
--- a/arch/x86/kvm/svm/nested.c
+++ b/arch/x86/kvm/svm/nested.c
@@ -1062,8 +1062,8 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu,
struct vmcb *hsave = svm->nested.hsave;
struct vmcb __user *user_vmcb = (struct vmcb __user *)
&user_kvm_nested_state->data.svm[0];
- struct vmcb_control_area *ctl;
- struct vmcb_save_area *save;
+ struct vmcb_control_area *ctl = NULL;
+ struct vmcb_save_area *save = NULL;
int ret;
u32 cr0;

--
2.28.0


2020-09-14 13:06:18

by Vitaly Kuznetsov

[permalink] [raw]
Subject: Re: [PATCH -tip] KVM: SVM: nested: Initialize on-stack pointers in svm_set_nested_state()

Joerg Roedel <[email protected]> writes:

> Hi Vitaly,
>
> On Mon, Sep 14, 2020 at 02:04:27PM +0200, Vitaly Kuznetsov wrote:
>> this was previously reported by Colin:
>> https://lore.kernel.org/kvm/[email protected]/
>>
>> the fix itself looks good, however, I had an alternative suggestion on how
>> to fix this:
>> https://lore.kernel.org/kvm/[email protected]/
>
> This looks good to me, mind sending your diff as a patch with correct
> Fixes tag?
>

Sure, I was under the impression your "KVM: SVM: nested: Don't allocate
VMCB structures on stack" is not commited yet and it can be fixed but I
now see that it made it to 'tip' tree. Will send the patch out shortly.

--
Vitaly

2020-09-14 13:07:05

by Jörg Rödel

[permalink] [raw]
Subject: Re: [PATCH -tip] KVM: SVM: nested: Initialize on-stack pointers in svm_set_nested_state()

Hi Vitaly,

On Mon, Sep 14, 2020 at 02:04:27PM +0200, Vitaly Kuznetsov wrote:
> this was previously reported by Colin:
> https://lore.kernel.org/kvm/[email protected]/
>
> the fix itself looks good, however, I had an alternative suggestion on how
> to fix this:
> https://lore.kernel.org/kvm/[email protected]/

This looks good to me, mind sending your diff as a patch with correct
Fixes tag?

Thanks,

Joerg

2020-09-14 17:49:36

by Vitaly Kuznetsov

[permalink] [raw]
Subject: Re: [PATCH -tip] KVM: SVM: nested: Initialize on-stack pointers in svm_set_nested_state()

Joerg Roedel <[email protected]> writes:

> From: Joerg Roedel <[email protected]>
>
> The save and ctl pointers need to be initialized to NULL because there
> is a way through the function in which there is no memory allocated
> for the pointers but where they are freed in the end.
>
> This involves the 'goto out_set_gif' before the memory for the
> pointers is allocated.
>
> Reported-by: Dan Carpenter <[email protected]>
> Fixes: 6ccbd29ade0d ("KVM: SVM: nested: Don't allocate VMCB structures on stack")
> Signed-off-by: Joerg Roedel <[email protected]>
> ---
> arch/x86/kvm/svm/nested.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c
> index 598a769f1961..72a3d6f87107 100644
> --- a/arch/x86/kvm/svm/nested.c
> +++ b/arch/x86/kvm/svm/nested.c
> @@ -1062,8 +1062,8 @@ static int svm_set_nested_state(struct kvm_vcpu *vcpu,
> struct vmcb *hsave = svm->nested.hsave;
> struct vmcb __user *user_vmcb = (struct vmcb __user *)
> &user_kvm_nested_state->data.svm[0];
> - struct vmcb_control_area *ctl;
> - struct vmcb_save_area *save;
> + struct vmcb_control_area *ctl = NULL;
> + struct vmcb_save_area *save = NULL;
> int ret;
> u32 cr0;

Hi Joerg,

this was previously reported by Colin:
https://lore.kernel.org/kvm/[email protected]/

the fix itself looks good, however, I had an alternative suggestion on how
to fix this:
https://lore.kernel.org/kvm/[email protected]/

--
Vitaly