All of lore.kernel.org
 help / color / mirror / Atom feed
From: Sasha Levin <sashal@kernel.org>
To: linux-kernel@vger.kernel.org, stable@vger.kernel.org
Cc: Jon Doron <arilou@gmail.com>,
	Vitaly Kuznetsov <vkuznets@redhat.com>,
	Roman Kagan <rvkagan@yandex-team.ru>,
	Paolo Bonzini <pbonzini@redhat.com>,
	Sasha Levin <sashal@kernel.org>,
	linux-doc@vger.kernel.org, kvm@vger.kernel.org
Subject: [PATCH AUTOSEL 4.9 13/50] x86/kvm/hyper-v: Explicitly align hcall param for kvm_hyperv_exit
Date: Mon,  8 Jun 2020 19:26:03 -0400	[thread overview]
Message-ID: <20200608232640.3370262-13-sashal@kernel.org> (raw)
In-Reply-To: <20200608232640.3370262-1-sashal@kernel.org>

From: Jon Doron <arilou@gmail.com>

[ Upstream commit f7d31e65368aeef973fab788aa22c4f1d5a6af66 ]

The problem the patch is trying to address is the fact that 'struct
kvm_hyperv_exit' has different layout on when compiling in 32 and 64 bit
modes.

In 64-bit mode the default alignment boundary is 64 bits thus
forcing extra gaps after 'type' and 'msr' but in 32-bit mode the
boundary is at 32 bits thus no extra gaps.

This is an issue as even when the kernel is 64 bit, the userspace using
the interface can be both 32 and 64 bit but the same 32 bit userspace has
to work with 32 bit kernel.

The issue is fixed by forcing the 64 bit layout, this leads to ABI
change for 32 bit builds and while we are obviously breaking '32 bit
userspace with 32 bit kernel' case, we're fixing the '32 bit userspace
with 64 bit kernel' one.

As the interface has no (known) users and 32 bit KVM is rather baroque
nowadays, this seems like a reasonable decision.

Reviewed-by: Vitaly Kuznetsov <vkuznets@redhat.com>
Signed-off-by: Jon Doron <arilou@gmail.com>
Message-Id: <20200424113746.3473563-2-arilou@gmail.com>
Reviewed-by: Roman Kagan <rvkagan@yandex-team.ru>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
---
 Documentation/virtual/kvm/api.txt | 2 ++
 include/uapi/linux/kvm.h          | 2 ++
 2 files changed, 4 insertions(+)

diff --git a/Documentation/virtual/kvm/api.txt b/Documentation/virtual/kvm/api.txt
index d1908e50b506..b8f5bf2a890a 100644
--- a/Documentation/virtual/kvm/api.txt
+++ b/Documentation/virtual/kvm/api.txt
@@ -3534,9 +3534,11 @@ EOI was received.
 #define KVM_EXIT_HYPERV_SYNIC          1
 #define KVM_EXIT_HYPERV_HCALL          2
 			__u32 type;
+			__u32 pad1;
 			union {
 				struct {
 					__u32 msr;
+					__u32 pad2;
 					__u64 control;
 					__u64 evt_page;
 					__u64 msg_page;
diff --git a/include/uapi/linux/kvm.h b/include/uapi/linux/kvm.h
index a0a365cbf3c9..0c02441d2cc9 100644
--- a/include/uapi/linux/kvm.h
+++ b/include/uapi/linux/kvm.h
@@ -159,9 +159,11 @@ struct kvm_hyperv_exit {
 #define KVM_EXIT_HYPERV_SYNIC          1
 #define KVM_EXIT_HYPERV_HCALL          2
 	__u32 type;
+	__u32 pad1;
 	union {
 		struct {
 			__u32 msr;
+			__u32 pad2;
 			__u64 control;
 			__u64 evt_page;
 			__u64 msg_page;
-- 
2.25.1


  parent reply	other threads:[~2020-06-08 23:44 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-06-08 23:25 [PATCH AUTOSEL 4.9 01/50] ath9x: Fix stack-out-of-bounds Write in ath9k_hif_usb_rx_cb Sasha Levin
2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 02/50] ath9k: Fix use-after-free Write in ath9k_htc_rx_msg Sasha Levin
2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 03/50] media: si2157: Better check for running tuner in init Sasha Levin
2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 04/50] objtool: Ignore empty alternatives Sasha Levin
2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 05/50] net: ena: fix error returning in ena_com_get_hash_function() Sasha Levin
2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 06/50] spi: dw: Zero DMA Tx and Rx configurations on stack Sasha Levin
2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 07/50] Bluetooth: Add SCO fallback for invalid LMP parameters error Sasha Levin
2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 08/50] kgdb: Prevent infinite recursive entries to the debugger Sasha Levin
2020-06-08 23:25 ` [PATCH AUTOSEL 4.9 09/50] spi: dw: Enable interrupts in accordance with DMA xfer mode Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 10/50] clocksource: dw_apb_timer_of: Fix missing clockevent timers Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 11/50] btrfs: do not ignore error from btrfs_next_leaf() when inserting checksums Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 12/50] ARM: 8978/1: mm: make act_mm() respect THREAD_SIZE Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26 ` Sasha Levin [this message]
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 14/50] net: vmxnet3: fix possible buffer overflow caused by bad DMA value in vmxnet3_get_rss() Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 15/50] staging: android: ion: use vmap instead of vm_map_ram Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 16/50] ath9k: Fix use-after-free Read in ath9k_wmi_ctrl_rx Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 17/50] ath9k: Fix general protection fault in ath9k_hif_usb_rx_cb Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 18/50] e1000: Distribute switch variables for initialization Sasha Levin
2020-06-08 23:26   ` [Intel-wired-lan] " Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 19/50] dt-bindings: display: mediatek: control dpi pins mode to avoid leakage Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 20/50] media: dvb: return -EREMOTEIO on i2c transfer failure Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 21/50] media: platform: fcp: Set appropriate DMA parameters Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 22/50] MIPS: Make sparse_init() using top-down allocation Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 23/50] netfilter: nft_nat: return EOPNOTSUPP if type or flags are not supported Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 24/50] lib/mpi: Fix 64-bit MIPS build with Clang Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 25/50] perf: Add cond_resched() to task_function_call() Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 26/50] exit: Move preemption fixup up, move blocking operations down Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 27/50] net: lpc-enet: fix error return code in lpc_mii_init() Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 28/50] net: allwinner: Fix use correct return type for ndo_start_xmit() Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 29/50] powerpc/spufs: fix copy_to_user while atomic Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 30/50] ath9k_htc: Silence undersized packet warnings Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 31/50] MIPS: Truncate link address into 32bit for 32bit kernel Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 32/50] mips: cm: Fix an invalid error code of INTVN_*_ERR Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 33/50] kgdb: Fix spurious true from in_dbg_master() Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 34/50] md: don't flush workqueue unconditionally in md_open Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 35/50] rtlwifi: Fix a double free in _rtl_usb_tx_urb_setup() Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 36/50] mwifiex: Fix memory corruption in dump_station Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 37/50] x86/boot: Correct relocation destination on old linkers Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 38/50] mips: Add udelay lpj numbers adjustment Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 39/50] x86/mm: Stop printing BRK addresses Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 40/50] m68k: mac: Don't call via_flush_cache() on Mac IIfx Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 41/50] macvlan: Skip loopback packets in RX handler Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 42/50] PCI: Don't disable decoding when mmio_always_on is set Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 43/50] MIPS: Fix IRQ tracing when call handle_fpe() and handle_msa_fpe() Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 44/50] xfs: gut error handling in xfs_trans_unreserve_and_mod_sb() Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 45/50] staging: greybus: sdio: Respect the cmd->busy_timeout from the mmc core Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 46/50] ixgbe: fix signed-integer-overflow warning Sasha Levin
2020-06-08 23:26   ` [Intel-wired-lan] " Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 47/50] mmc: sdhci-esdhc-imx: fix the mask for tuning start point Sasha Levin
2020-06-08 23:26   ` Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 48/50] spi: dw: Return any value retrieved from the dma_transfer callback Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 49/50] cpuidle: Fix three reference count leaks Sasha Levin
2020-06-08 23:26 ` [PATCH AUTOSEL 4.9 50/50] vxlan: Avoid infinite loop when suppressing NS messages with invalid options Sasha Levin

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=20200608232640.3370262-13-sashal@kernel.org \
    --to=sashal@kernel.org \
    --cc=arilou@gmail.com \
    --cc=kvm@vger.kernel.org \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=pbonzini@redhat.com \
    --cc=rvkagan@yandex-team.ru \
    --cc=stable@vger.kernel.org \
    --cc=vkuznets@redhat.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.