Re: [bug report] SVM: nSVM: setup nested msr permission bitmap on nested state load

Maxim Levitsky
2020-09-23T13:51:10Z

On Wed, 2020-09-23 at 16:44 +0300, Dan Carpenter wrote:
> Hello Maxim Levitsky,
>
> The patch 772b81bb2f9b: "SVM: nSVM: setup nested msr permission
> bitmap on nested state load" from Aug 27, 2020, leads to the
> following static checker warning:
>
> arch/x86/kvm/svm/nested.c:1161 svm_set_nested_state()
> warn: 'ctl' not released on lines: 1152.
>
> arch/x86/kvm/svm/nested.c
> 1135 if (!(save->cr0 & X86_CR0_PG))
> 1136 goto out_free;
> 1137
> 1138 /*
> 1139 * All checks done, we can enter guest mode. L1 control fields
> 1140 * come from the nested save state. Guest state is already
> 1141 * in the registers, the save area of the nested state instead
> 1142 * contains saved L1 state.
> 1143 */
> 1144 copy_vmcb_control_area(&hsave->control, &svm->vmcb->control);
> 1145 hsave->save = *save;
> 1146
> 1147 svm->nested.vmcb = kvm_state->hdr.svm.vmcb_pa;
> 1148 load_nested_vmcb_control(svm, ctl);
> 1149 nested_prepare_vmcb_control(svm);
> 1150
> 1151 if (!nested_svm_vmrun_msrpm(svm))
> 1152 return -EINVAL;
>
> goto out_free?
>
> 1153
> 1154 svm_set_gif(svm, !!(kvm_state->flags & KVM_STATE_NESTED_GIF_SET));
> 1155
> 1156 ret = 0;
> 1157 out_free:
> 1158 kfree(save);
> 1159 kfree(ctl);
> 1160
> 1161 return ret;
> 1162 }
>
> regards,
> dan carpenter
>
Which kernel tree is this?

This again seems to be the result of other commit
that made save, ctl to be dynamically allocated. I based my patch on the version
that allocates both on the stack so no freeing is needed.

As far as I know from a check I did about week ago, none of branches on
git://git.kernel.org/pub/scm/virt/kvm/kvm.git had that patch (that made save/ctr
be allocated dynamically).

Best regards,
Maxim Levitsky