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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.