public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* arch/x86/kvm/svm/sev.c:454 __sev_guest_init() warn: missing error code 'ret'
@ 2024-10-21  7:28 Dan Carpenter
  2024-10-22 17:28 ` Sean Christopherson
  0 siblings, 1 reply; 2+ messages in thread
From: Dan Carpenter @ 2024-10-21  7:28 UTC (permalink / raw)
  To: oe-kbuild, Brijesh Singh
  Cc: lkp, oe-kbuild-all, linux-kernel, Paolo Bonzini,
	Alexey Kardashevskiy, Ashish Kalra, Tom Lendacky, Liam Merwick,
	Michael Roth

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   3d5ad2d4eca337e80f38df77de89614aa5aaceb9
commit: 88caf544c9305313e1c48ac1a437faa5df8fff06 KVM: SEV: Provide support for SNP_GUEST_REQUEST NAE event
config: x86_64-randconfig-161-20241016 (https://download.01.org/0day-ci/archive/20241019/202410192220.MeTyHPxI-lkp@intel.com/config)
compiler: gcc-12 (Debian 12.2.0-14) 12.2.0

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
| Closes: https://lore.kernel.org/r/202410192220.MeTyHPxI-lkp@intel.com/

New smatch warnings:
arch/x86/kvm/svm/sev.c:454 __sev_guest_init() warn: missing error code 'ret'

vim +/ret +454 arch/x86/kvm/svm/sev.c

4f5defae708992 Paolo Bonzini         2024-04-04  402  static int __sev_guest_init(struct kvm *kvm, struct kvm_sev_cmd *argp,
4f5defae708992 Paolo Bonzini         2024-04-04  403  			    struct kvm_sev_init *data,
4f5defae708992 Paolo Bonzini         2024-04-04  404  			    unsigned long vm_type)
eaf78265a4ab33 Joerg Roedel          2020-03-24  405  {
eaf78265a4ab33 Joerg Roedel          2020-03-24  406  	struct kvm_sev_info *sev = &to_kvm_svm(kvm)->sev_info;
1ca5614b84eed5 Brijesh Singh         2024-01-25  407  	struct sev_platform_init_args init_args = {0};
4f5defae708992 Paolo Bonzini         2024-04-04  408  	bool es_active = vm_type != KVM_X86_SEV_VM;
4f5defae708992 Paolo Bonzini         2024-04-04  409  	u64 valid_vmsa_features = es_active ? sev_supported_vmsa_features : 0;
cc4ce37bed8598 Sean Christopherson   2024-01-31  410  	int ret;
eaf78265a4ab33 Joerg Roedel          2020-03-24  411  
8727906fde6ea6 Sean Christopherson   2021-03-30  412  	if (kvm->created_vcpus)
8727906fde6ea6 Sean Christopherson   2021-03-30  413  		return -EINVAL;
8727906fde6ea6 Sean Christopherson   2021-03-30  414  
4f5defae708992 Paolo Bonzini         2024-04-04  415  	if (data->flags)
4f5defae708992 Paolo Bonzini         2024-04-04  416  		return -EINVAL;
4f5defae708992 Paolo Bonzini         2024-04-04  417  
4f5defae708992 Paolo Bonzini         2024-04-04  418  	if (data->vmsa_features & ~valid_vmsa_features)
26c44aa9e076ed Paolo Bonzini         2024-04-04  419  		return -EINVAL;
26c44aa9e076ed Paolo Bonzini         2024-04-04  420  
4af663c2f64a8d Michael Roth          2024-05-01  421  	if (data->ghcb_version > GHCB_VERSION_MAX || (!es_active && data->ghcb_version))
4af663c2f64a8d Michael Roth          2024-05-01  422  		return -EINVAL;
4af663c2f64a8d Michael Roth          2024-05-01  423  
eaf78265a4ab33 Joerg Roedel          2020-03-24  424  	if (unlikely(sev->active))
fdd58834d13204 Sean Christopherson   2024-01-31  425  		return -EINVAL;
eaf78265a4ab33 Joerg Roedel          2020-03-24  426  
a41fb26e616973 Sean Christopherson   2021-11-09  427  	sev->active = true;
4f5defae708992 Paolo Bonzini         2024-04-04  428  	sev->es_active = es_active;
4f5defae708992 Paolo Bonzini         2024-04-04  429  	sev->vmsa_features = data->vmsa_features;
4af663c2f64a8d Michael Roth          2024-05-01  430  	sev->ghcb_version = data->ghcb_version;
4af663c2f64a8d Michael Roth          2024-05-01  431  
4af663c2f64a8d Michael Roth          2024-05-01  432  	/*
4af663c2f64a8d Michael Roth          2024-05-01  433  	 * Currently KVM supports the full range of mandatory features defined
4af663c2f64a8d Michael Roth          2024-05-01  434  	 * by version 2 of the GHCB protocol, so default to that for SEV-ES
4af663c2f64a8d Michael Roth          2024-05-01  435  	 * guests created via KVM_SEV_INIT2.
4af663c2f64a8d Michael Roth          2024-05-01  436  	 */
4af663c2f64a8d Michael Roth          2024-05-01  437  	if (sev->es_active && !sev->ghcb_version)
4af663c2f64a8d Michael Roth          2024-05-01  438  		sev->ghcb_version = GHCB_VERSION_DEFAULT;
605bbdc12bc883 Paolo Bonzini         2024-04-04  439  
1dfe571c12cf99 Brijesh Singh         2024-05-01  440  	if (vm_type == KVM_X86_SNP_VM)
1dfe571c12cf99 Brijesh Singh         2024-05-01  441  		sev->vmsa_features |= SVM_SEV_FEAT_SNP_ACTIVE;
1dfe571c12cf99 Brijesh Singh         2024-05-01  442  
cc4ce37bed8598 Sean Christopherson   2024-01-31  443  	ret = sev_asid_new(sev);
cc4ce37bed8598 Sean Christopherson   2024-01-31  444  	if (ret)
fd49e8ee70b306 Paolo Bonzini         2021-04-22  445  		goto e_no_asid;
eaf78265a4ab33 Joerg Roedel          2020-03-24  446  
1ca5614b84eed5 Brijesh Singh         2024-01-25  447  	init_args.probe = false;
1ca5614b84eed5 Brijesh Singh         2024-01-25  448  	ret = sev_platform_init(&init_args);
eaf78265a4ab33 Joerg Roedel          2020-03-24  449  	if (ret)
eaf78265a4ab33 Joerg Roedel          2020-03-24  450  		goto e_free;
eaf78265a4ab33 Joerg Roedel          2020-03-24  451  
88caf544c93053 Brijesh Singh         2024-07-01  452  	/* This needs to happen after SEV/SNP firmware initialization. */
88caf544c93053 Brijesh Singh         2024-07-01  453  	if (vm_type == KVM_X86_SNP_VM && snp_guest_req_init(kvm))
88caf544c93053 Brijesh Singh         2024-07-01 @454  		goto e_free;

Hard to tell if this is an error path or not.

88caf544c93053 Brijesh Singh         2024-07-01  455  
eaf78265a4ab33 Joerg Roedel          2020-03-24  456  	INIT_LIST_HEAD(&sev->regions_list);
b2125513dfc0dd Peter Gonda           2022-02-11  457  	INIT_LIST_HEAD(&sev->mirror_vms);
26c44aa9e076ed Paolo Bonzini         2024-04-04  458  	sev->need_init = false;
eaf78265a4ab33 Joerg Roedel          2020-03-24  459  
c538dc792ff7e4 Suravee Suthikulpanit 2022-04-08  460  	kvm_set_apicv_inhibit(kvm, APICV_INHIBIT_REASON_SEV);
c538dc792ff7e4 Suravee Suthikulpanit 2022-04-08  461  
eaf78265a4ab33 Joerg Roedel          2020-03-24  462  	return 0;
eaf78265a4ab33 Joerg Roedel          2020-03-24  463  
eaf78265a4ab33 Joerg Roedel          2020-03-24  464  e_free:
1ca5614b84eed5 Brijesh Singh         2024-01-25  465  	argp->error = init_args.error;
7aef27f0b2a8a5 Vipin Sharma          2021-03-29  466  	sev_asid_free(sev);
7aef27f0b2a8a5 Vipin Sharma          2021-03-29  467  	sev->asid = 0;
fd49e8ee70b306 Paolo Bonzini         2021-04-22  468  e_no_asid:
605bbdc12bc883 Paolo Bonzini         2024-04-04  469  	sev->vmsa_features = 0;
fd49e8ee70b306 Paolo Bonzini         2021-04-22  470  	sev->es_active = false;
a41fb26e616973 Sean Christopherson   2021-11-09  471  	sev->active = false;
eaf78265a4ab33 Joerg Roedel          2020-03-24  472  	return ret;
eaf78265a4ab33 Joerg Roedel          2020-03-24  473  }

-- 
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: arch/x86/kvm/svm/sev.c:454 __sev_guest_init() warn: missing error code 'ret'
  2024-10-21  7:28 arch/x86/kvm/svm/sev.c:454 __sev_guest_init() warn: missing error code 'ret' Dan Carpenter
@ 2024-10-22 17:28 ` Sean Christopherson
  0 siblings, 0 replies; 2+ messages in thread
From: Sean Christopherson @ 2024-10-22 17:28 UTC (permalink / raw)
  To: Dan Carpenter
  Cc: oe-kbuild, Brijesh Singh, lkp, oe-kbuild-all, linux-kernel,
	Paolo Bonzini, Alexey Kardashevskiy, Ashish Kalra, Tom Lendacky,
	Liam Merwick, Michael Roth

On Mon, Oct 21, 2024, Dan Carpenter wrote:
> tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
> head:   3d5ad2d4eca337e80f38df77de89614aa5aaceb9
> commit: 88caf544c9305313e1c48ac1a437faa5df8fff06 KVM: SEV: Provide support for SNP_GUEST_REQUEST NAE event
> config: x86_64-randconfig-161-20241016 (https://download.01.org/0day-ci/archive/20241019/202410192220.MeTyHPxI-lkp@intel.com/config)
> compiler: gcc-12 (Debian 12.2.0-14) 12.2.0
> 
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Reported-by: Dan Carpenter <dan.carpenter@linaro.org>
> | Closes: https://lore.kernel.org/r/202410192220.MeTyHPxI-lkp@intel.com/
> 
> New smatch warnings:
> arch/x86/kvm/svm/sev.c:454 __sev_guest_init() warn: missing error code 'ret'
> 
> 88caf544c93053 Brijesh Singh         2024-07-01  452  	/* This needs to happen after SEV/SNP firmware initialization. */
> 88caf544c93053 Brijesh Singh         2024-07-01  453  	if (vm_type == KVM_X86_SNP_VM && snp_guest_req_init(kvm))
> 88caf544c93053 Brijesh Singh         2024-07-01 @454  		goto e_free;
> 
> Hard to tell if this is an error path or not.

It's an error path.  Luckily, the fallout is only that userspace will be confused,
e.g. KVM doesn't continue configuring state thinking that pervious steps succeeded.

I'll send a patch.

Thanks!

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-10-22 17:28 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-21  7:28 arch/x86/kvm/svm/sev.c:454 __sev_guest_init() warn: missing error code 'ret' Dan Carpenter
2024-10-22 17:28 ` Sean Christopherson

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox