From: kernel test robot <lkp@intel.com>
To: Sean Christopherson <seanjc@google.com>
Cc: llvm@lists.linux.dev, oe-kbuild-all@lists.linux.dev
Subject: [sean-jc:q/future_nested 21/28] arch/x86/kvm/xen.c:1687:6: warning: variable 'input' is used uninitialized whenever 'if' condition is false
Date: Tue, 07 Apr 2026 11:52:40 +0800 [thread overview]
Message-ID: <202604040903.VcDtbfIf-lkp@intel.com> (raw)
tree: https://github.com/sean-jc/linux q/future_nested
head: f0450993519d901739b7014042b6620b1ef1fe6d
commit: 366718c9acb94b80773c6575ba3138cc712b4a75 [21/28] KVM: x86/xen: Don't truncate RAX when handling hypercall from protected guest
config: i386-randconfig-014-20260404 (https://download.01.org/0day-ci/archive/20260404/202604040903.VcDtbfIf-lkp@intel.com/config)
compiler: clang version 20.1.8 (https://github.com/llvm/llvm-project 87f0227cb60147a26a1eeb4fb06e3b505e9c7261)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260404/202604040903.VcDtbfIf-lkp@intel.com/reproduce)
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>
| Closes: https://lore.kernel.org/oe-kbuild-all/202604040903.VcDtbfIf-lkp@intel.com/
All warnings (new ones prefixed by >>):
>> arch/x86/kvm/xen.c:1687:6: warning: variable 'input' is used uninitialized whenever 'if' condition is false [-Wsometimes-uninitialized]
1687 | if (!longmode) {
| ^~~~~~~~~
arch/x86/kvm/xen.c:1708:31: note: uninitialized use occurs here
1708 | trace_kvm_xen_hypercall(cpl, input, params[0], params[1], params[2],
| ^~~~~
arch/x86/kvm/xen.c:1687:2: note: remove the 'if' if its condition is always true
1687 | if (!longmode) {
| ^~~~~~~~~~~~~~
arch/x86/kvm/xen.c:1677:11: note: initialize the variable 'input' to silence this warning
1677 | u64 input, params[6], r = -ENOSYS;
| ^
| = 0
1 warning generated.
vim +1687 arch/x86/kvm/xen.c
536395260582be Joao Martins 2022-03-03 1673
23200b7a30de31 Joao Martins 2018-06-13 1674 int kvm_xen_hypercall(struct kvm_vcpu *vcpu)
23200b7a30de31 Joao Martins 2018-06-13 1675 {
23200b7a30de31 Joao Martins 2018-06-13 1676 bool longmode;
2fd6df2f2b47d4 Joao Martins 2022-03-03 1677 u64 input, params[6], r = -ENOSYS;
2fd6df2f2b47d4 Joao Martins 2022-03-03 1678 bool handled = false;
c2b8cdfaf3a672 David Woodhouse 2022-11-12 1679 u8 cpl;
23200b7a30de31 Joao Martins 2018-06-13 1680
79033bebf6fa30 Joao Martins 2018-06-13 1681 /* Hyper-V hypercalls get bit 31 set in EAX */
366718c9acb94b Sean Christopherson 2026-04-03 1682 if ((kvm_rax_read(vcpu) & 0x80000000) &&
8f014550dfb114 Vitaly Kuznetsov 2021-01-26 1683 kvm_hv_hypercall_enabled(vcpu))
79033bebf6fa30 Joao Martins 2018-06-13 1684 return kvm_hv_hypercall(vcpu);
79033bebf6fa30 Joao Martins 2018-06-13 1685
b5aead0064f33a Tom Lendacky 2021-05-24 1686 longmode = is_64_bit_hypercall(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 @1687 if (!longmode) {
366718c9acb94b Sean Christopherson 2026-04-03 1688 input = (u32)kvm_rax_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1689 params[0] = (u32)kvm_rbx_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1690 params[1] = (u32)kvm_rcx_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1691 params[2] = (u32)kvm_rdx_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1692 params[3] = (u32)kvm_rsi_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1693 params[4] = (u32)kvm_rdi_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1694 params[5] = (u32)kvm_rbp_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1695 }
23200b7a30de31 Joao Martins 2018-06-13 1696 #ifdef CONFIG_X86_64
23200b7a30de31 Joao Martins 2018-06-13 1697 else {
366718c9acb94b Sean Christopherson 2026-04-03 1698 input = (u64)kvm_rax_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1699 params[0] = (u64)kvm_rdi_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1700 params[1] = (u64)kvm_rsi_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1701 params[2] = (u64)kvm_rdx_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1702 params[3] = (u64)kvm_r10_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1703 params[4] = (u64)kvm_r8_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1704 params[5] = (u64)kvm_r9_read(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1705 }
23200b7a30de31 Joao Martins 2018-06-13 1706 #endif
896046474f8d2e Wei Wang 2024-05-07 1707 cpl = kvm_x86_call(get_cpl)(vcpu);
c3f3719952b9ab David Woodhouse 2022-11-14 1708 trace_kvm_xen_hypercall(cpl, input, params[0], params[1], params[2],
23200b7a30de31 Joao Martins 2018-06-13 1709 params[3], params[4], params[5]);
23200b7a30de31 Joao Martins 2018-06-13 1710
c2b8cdfaf3a672 David Woodhouse 2022-11-12 1711 /*
c2b8cdfaf3a672 David Woodhouse 2022-11-12 1712 * Only allow hypercall acceleration for CPL0. The rare hypercalls that
c2b8cdfaf3a672 David Woodhouse 2022-11-12 1713 * are permitted in guest userspace can be handled by the VMM.
c2b8cdfaf3a672 David Woodhouse 2022-11-12 1714 */
c2b8cdfaf3a672 David Woodhouse 2022-11-12 1715 if (unlikely(cpl > 0))
c2b8cdfaf3a672 David Woodhouse 2022-11-12 1716 goto handle_in_userspace;
c2b8cdfaf3a672 David Woodhouse 2022-11-12 1717
2fd6df2f2b47d4 Joao Martins 2022-03-03 1718 switch (input) {
28d1629f751c4a David Woodhouse 2022-03-03 1719 case __HYPERVISOR_xen_version:
28d1629f751c4a David Woodhouse 2022-03-03 1720 if (params[0] == XENVER_version && vcpu->kvm->arch.xen.xen_version) {
28d1629f751c4a David Woodhouse 2022-03-03 1721 r = vcpu->kvm->arch.xen.xen_version;
28d1629f751c4a David Woodhouse 2022-03-03 1722 handled = true;
28d1629f751c4a David Woodhouse 2022-03-03 1723 }
28d1629f751c4a David Woodhouse 2022-03-03 1724 break;
2fd6df2f2b47d4 Joao Martins 2022-03-03 1725 case __HYPERVISOR_event_channel_op:
2fd6df2f2b47d4 Joao Martins 2022-03-03 1726 if (params[0] == EVTCHNOP_send)
2fd6df2f2b47d4 Joao Martins 2022-03-03 1727 handled = kvm_xen_hcall_evtchn_send(vcpu, params[1], &r);
2fd6df2f2b47d4 Joao Martins 2022-03-03 1728 break;
0ec6c5c5bb6585 Joao Martins 2022-03-03 1729 case __HYPERVISOR_sched_op:
1a65105a5aba9f Boris Ostrovsky 2022-03-03 1730 handled = kvm_xen_hcall_sched_op(vcpu, longmode, params[0],
1a65105a5aba9f Boris Ostrovsky 2022-03-03 1731 params[1], &r);
0ec6c5c5bb6585 Joao Martins 2022-03-03 1732 break;
536395260582be Joao Martins 2022-03-03 1733 case __HYPERVISOR_vcpu_op:
536395260582be Joao Martins 2022-03-03 1734 handled = kvm_xen_hcall_vcpu_op(vcpu, longmode, params[0], params[1],
536395260582be Joao Martins 2022-03-03 1735 params[2], &r);
536395260582be Joao Martins 2022-03-03 1736 break;
536395260582be Joao Martins 2022-03-03 1737 case __HYPERVISOR_set_timer_op: {
536395260582be Joao Martins 2022-03-03 1738 u64 timeout = params[0];
536395260582be Joao Martins 2022-03-03 1739 /* In 32-bit mode, the 64-bit timeout is in two 32-bit params. */
536395260582be Joao Martins 2022-03-03 1740 if (!longmode)
536395260582be Joao Martins 2022-03-03 1741 timeout |= params[1] << 32;
536395260582be Joao Martins 2022-03-03 1742 handled = kvm_xen_hcall_set_timer_op(vcpu, timeout, &r);
536395260582be Joao Martins 2022-03-03 1743 break;
536395260582be Joao Martins 2022-03-03 1744 }
2fd6df2f2b47d4 Joao Martins 2022-03-03 1745 default:
2fd6df2f2b47d4 Joao Martins 2022-03-03 1746 break;
2fd6df2f2b47d4 Joao Martins 2022-03-03 1747 }
2fd6df2f2b47d4 Joao Martins 2022-03-03 1748
2fd6df2f2b47d4 Joao Martins 2022-03-03 1749 if (handled)
2fd6df2f2b47d4 Joao Martins 2022-03-03 1750 return kvm_xen_hypercall_set_result(vcpu, r);
2fd6df2f2b47d4 Joao Martins 2022-03-03 1751
c2b8cdfaf3a672 David Woodhouse 2022-11-12 1752 handle_in_userspace:
23200b7a30de31 Joao Martins 2018-06-13 1753 vcpu->run->exit_reason = KVM_EXIT_XEN;
23200b7a30de31 Joao Martins 2018-06-13 1754 vcpu->run->xen.type = KVM_EXIT_XEN_HCALL;
23200b7a30de31 Joao Martins 2018-06-13 1755 vcpu->run->xen.u.hcall.longmode = longmode;
c2b8cdfaf3a672 David Woodhouse 2022-11-12 1756 vcpu->run->xen.u.hcall.cpl = cpl;
23200b7a30de31 Joao Martins 2018-06-13 1757 vcpu->run->xen.u.hcall.input = input;
23200b7a30de31 Joao Martins 2018-06-13 1758 vcpu->run->xen.u.hcall.params[0] = params[0];
23200b7a30de31 Joao Martins 2018-06-13 1759 vcpu->run->xen.u.hcall.params[1] = params[1];
23200b7a30de31 Joao Martins 2018-06-13 1760 vcpu->run->xen.u.hcall.params[2] = params[2];
23200b7a30de31 Joao Martins 2018-06-13 1761 vcpu->run->xen.u.hcall.params[3] = params[3];
23200b7a30de31 Joao Martins 2018-06-13 1762 vcpu->run->xen.u.hcall.params[4] = params[4];
23200b7a30de31 Joao Martins 2018-06-13 1763 vcpu->run->xen.u.hcall.params[5] = params[5];
23200b7a30de31 Joao Martins 2018-06-13 1764 vcpu->arch.xen.hypercall_rip = kvm_get_linear_rip(vcpu);
23200b7a30de31 Joao Martins 2018-06-13 1765 vcpu->arch.complete_userspace_io =
23200b7a30de31 Joao Martins 2018-06-13 1766 kvm_xen_hypercall_complete_userspace;
23200b7a30de31 Joao Martins 2018-06-13 1767
23200b7a30de31 Joao Martins 2018-06-13 1768 return 0;
23200b7a30de31 Joao Martins 2018-06-13 1769 }
14243b387137a4 David Woodhouse 2021-12-10 1770
:::::: The code at line 1687 was first introduced by commit
:::::: 23200b7a30de315d0e9a40663c905869d29d833c KVM: x86/xen: intercept xen hypercalls if enabled
:::::: TO: Joao Martins <joao.m.martins@oracle.com>
:::::: CC: David Woodhouse <dwmw@amazon.co.uk>
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
reply other threads:[~2026-04-07 3:53 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
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=202604040903.VcDtbfIf-lkp@intel.com \
--to=lkp@intel.com \
--cc=llvm@lists.linux.dev \
--cc=oe-kbuild-all@lists.linux.dev \
--cc=seanjc@google.com \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox