Thanks Dan. I'll fix this in a V3.
On Mon, Jul 19, 2021 at 1:53 AM Dan Carpenter <dan.carpenter(a)oracle.com> wrote:
>
> Hi Peter,
>
> url:
https://github.com/0day-ci/linux/commits/Peter-Gonda/Add-AMD-SEV-and-SEV-...
> base: 7caa04b36f204a01dac65582b71d26d190a1e022
> config: x86_64-randconfig-m001-20210714 (attached as .config)
> compiler: gcc-10 (Debian 10.2.1-6) 10.2.1 20210110
>
> If you fix the issue, kindly add following tag as appropriate
> Reported-by: kernel test robot <lkp(a)intel.com>
> Reported-by: Dan Carpenter <dan.carpenter(a)oracle.com>
>
> New smatch warnings:
> arch/x86/kvm/svm/sev.c:1253 create_vmsa_list() warn: possible memory leak of
'node'
>
> Old smatch warnings:
> arch/x86/kvm/svm/sev.c:1607 sev_send_update_data() warn: maybe return -EFAULT instead
of the bytes remaining?
>
> vim +/node +1253 arch/x86/kvm/svm/sev.c
>
> bec8b6143b5a9c Peter Gonda 2021-07-14 1211 static int create_vmsa_list(struct kvm
*kvm,
> bec8b6143b5a9c Peter Gonda 2021-07-14 1212 struct
sev_info_migration_node *entry)
> bec8b6143b5a9c Peter Gonda 2021-07-14 1213 {
> bec8b6143b5a9c Peter Gonda 2021-07-14 1214 int i;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1215 const int num_vcpus =
atomic_read(&kvm->online_vcpus);
> bec8b6143b5a9c Peter Gonda 2021-07-14 1216 struct vmsa_node *node;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1217 struct kvm_vcpu *vcpu;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1218 struct vcpu_svm *svm;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1219
> bec8b6143b5a9c Peter Gonda 2021-07-14 1220
INIT_LIST_HEAD(&entry->vmsa_list);
> bec8b6143b5a9c Peter Gonda 2021-07-14 1221 for (i = 0; i < num_vcpus; ++i) {
> bec8b6143b5a9c Peter Gonda 2021-07-14 1222 node = kzalloc(sizeof(*node),
GFP_KERNEL);
> bec8b6143b5a9c Peter Gonda 2021-07-14 1223 if (!node)
> bec8b6143b5a9c Peter Gonda 2021-07-14 1224 goto e_freelist;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1225
> bec8b6143b5a9c Peter Gonda 2021-07-14 1226 vcpu = kvm->vcpus[i];
> bec8b6143b5a9c Peter Gonda 2021-07-14 1227 if
(!vcpu->arch.guest_state_protected)
> bec8b6143b5a9c Peter Gonda 2021-07-14 1228 goto e_freelist;
>
> kfree(node) before the goto.
>
> bec8b6143b5a9c Peter Gonda 2021-07-14 1229
> bec8b6143b5a9c Peter Gonda 2021-07-14 1230 node->vcpu_id =
vcpu->vcpu_id;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1231 svm = to_svm(vcpu);
> bec8b6143b5a9c Peter Gonda 2021-07-14 1232 node->vmsa =
svm->vmsa;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1233 svm->vmsa = NULL;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1234 node->ghcb =
svm->ghcb;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1235 svm->ghcb = NULL;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1236 node->ghcb_gpa =
svm->vmcb->control.ghcb_gpa;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1237 node->ghcb_sa =
svm->ghcb_sa;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1238 svm->ghcb_sa = NULL;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1239 node->ghcb_sa_len =
svm->ghcb_sa_len;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1240 svm->ghcb_sa_len = 0;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1241 node->ghcb_sa_sync =
svm->ghcb_sa_sync;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1242 svm->ghcb_sa_sync =
false;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1243 node->ghcb_sa_free =
svm->ghcb_sa_free;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1244 svm->ghcb_sa_free =
false;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1245
> bec8b6143b5a9c Peter Gonda 2021-07-14 1246
list_add_tail(&node->list, &entry->vmsa_list);
> bec8b6143b5a9c Peter Gonda 2021-07-14 1247 }
> bec8b6143b5a9c Peter Gonda 2021-07-14 1248
> bec8b6143b5a9c Peter Gonda 2021-07-14 1249 return 0;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1250
> bec8b6143b5a9c Peter Gonda 2021-07-14 1251 e_freelist:
> bec8b6143b5a9c Peter Gonda 2021-07-14 1252 process_vmsa_list(kvm,
&entry->vmsa_list);
> bec8b6143b5a9c Peter Gonda 2021-07-14 @1253 return -1;
> bec8b6143b5a9c Peter Gonda 2021-07-14 1254 }
>
> ---
> 0-DAY CI Kernel Test Service, Intel Corporation
>
https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org
>