From: Sasha Levin Date: Thu, 11 Apr 2024 08:03:24 +0000 (-0400) Subject: Fixes for 5.15 X-Git-Tag: v4.19.312~30 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=40231da1a56adecdf1d5318c3d65ec04b0792c10;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 5.15 Signed-off-by: Sasha Levin --- diff --git a/queue-5.15/platform-x86-intel-vbtn-update-tablet-mode-switch-at.patch b/queue-5.15/platform-x86-intel-vbtn-update-tablet-mode-switch-at.patch new file mode 100644 index 00000000000..d5df01e375a --- /dev/null +++ b/queue-5.15/platform-x86-intel-vbtn-update-tablet-mode-switch-at.patch @@ -0,0 +1,80 @@ +From fa9f9fe0de1fbf94914fcfb3c4a669b66bfaadc4 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Fri, 29 Mar 2024 07:32:06 -0700 +Subject: platform/x86: intel-vbtn: Update tablet mode switch at end of probe +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +From: Gwendal Grignou + +[ Upstream commit 434e5781d8cd2d0ed512d920c6cdeba4b33a2e81 ] + +ACER Vivobook Flip (TP401NAS) virtual intel switch is implemented as +follow: + + Device (VGBI) + { + Name (_HID, EisaId ("INT33D6") ... + Name (VBDS, Zero) + Method (_STA, 0, Serialized) // _STA: Status ... + Method (VBDL, 0, Serialized) + { + PB1E |= 0x20 + VBDS |= 0x40 + } + Method (VGBS, 0, Serialized) + { + Return (VBDS) /* \_SB_.PCI0.SBRG.EC0_.VGBI.VBDS */ + } + ... + } + +By default VBDS is set to 0. At boot it is set to clamshell (bit 6 set) +only after method VBDL is executed. + +Since VBDL is now evaluated in the probe routine later, after the device +is registered, the retrieved value of VBDS was still 0 ("tablet mode") +when setting up the virtual switch. + +Make sure to evaluate VGBS after VBDL, to ensure the +convertible boots in clamshell mode, the expected default. + +Fixes: 26173179fae1 ("platform/x86: intel-vbtn: Eval VBDL after registering our notifier") +Signed-off-by: Gwendal Grignou +Reviewed-by: Kuppuswamy Sathyanarayanan +Reviewed-by: Hans de Goede +Link: https://lore.kernel.org/r/20240329143206.2977734-3-gwendal@chromium.org +Reviewed-by: Ilpo Järvinen +Signed-off-by: Ilpo Järvinen +Signed-off-by: Sasha Levin +--- + drivers/platform/x86/intel/vbtn.c | 5 +++-- + 1 file changed, 3 insertions(+), 2 deletions(-) + +diff --git a/drivers/platform/x86/intel/vbtn.c b/drivers/platform/x86/intel/vbtn.c +index 6fb3e597c57aa..4e9d3f25c35d0 100644 +--- a/drivers/platform/x86/intel/vbtn.c ++++ b/drivers/platform/x86/intel/vbtn.c +@@ -136,8 +136,6 @@ static int intel_vbtn_input_setup(struct platform_device *device) + priv->switches_dev->id.bustype = BUS_HOST; + + if (priv->has_switches) { +- detect_tablet_mode(&device->dev); +- + ret = input_register_device(priv->switches_dev); + if (ret) + return ret; +@@ -316,6 +314,9 @@ static int intel_vbtn_probe(struct platform_device *device) + if (ACPI_FAILURE(status)) + dev_err(&device->dev, "Error VBDL failed with ACPI status %d\n", status); + } ++ // Check switches after buttons since VBDL may have side effects. ++ if (has_switches) ++ detect_tablet_mode(&device->dev); + + device_init_wakeup(&device->dev, true); + /* +-- +2.43.0 + diff --git a/queue-5.15/randomize_kstack-improve-entropy-diffusion.patch b/queue-5.15/randomize_kstack-improve-entropy-diffusion.patch new file mode 100644 index 00000000000..8a0df7b7da8 --- /dev/null +++ b/queue-5.15/randomize_kstack-improve-entropy-diffusion.patch @@ -0,0 +1,37 @@ +From 05af706e7f55a69d24697a7359c600cab4909418 Mon Sep 17 00:00:00 2001 +From: Sasha Levin +Date: Sat, 9 Mar 2024 12:24:48 -0800 +Subject: randomize_kstack: Improve entropy diffusion + +From: Kees Cook + +[ Upstream commit 9c573cd313433f6c1f7236fe64b9b743500c1628 ] + +The kstack_offset variable was really only ever using the low bits for +kernel stack offset entropy. Add a ror32() to increase bit diffusion. + +Suggested-by: Arnd Bergmann +Fixes: 39218ff4c625 ("stack: Optionally randomize kernel stack offset each syscall") +Link: https://lore.kernel.org/r/20240309202445.work.165-kees@kernel.org +Signed-off-by: Kees Cook +Signed-off-by: Sasha Levin +--- + include/linux/randomize_kstack.h | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/include/linux/randomize_kstack.h b/include/linux/randomize_kstack.h +index d373f1bcbf7ca..5d52d15faee0c 100644 +--- a/include/linux/randomize_kstack.h ++++ b/include/linux/randomize_kstack.h +@@ -58,7 +58,7 @@ DECLARE_PER_CPU(u32, kstack_offset); + if (static_branch_maybe(CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT, \ + &randomize_kstack_offset)) { \ + u32 offset = raw_cpu_read(kstack_offset); \ +- offset ^= (rand); \ ++ offset = ror32(offset, 5) ^ (rand); \ + raw_cpu_write(kstack_offset, offset); \ + } \ + } while (0) +-- +2.43.0 + diff --git a/queue-5.15/series b/queue-5.15/series index 148a6c325e2..e911f9b4972 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -51,3 +51,5 @@ gcc-plugins-stackleak-ignore-.noinstr.text-and-.entry.text.patch gcc-plugins-stackleak-avoid-.head.text-section.patch virtio-reenable-config-if-freezing-device-failed.patch x86-mm-pat-fix-vm_pat-handling-in-cow-mappings.patch +randomize_kstack-improve-entropy-diffusion.patch +platform-x86-intel-vbtn-update-tablet-mode-switch-at.patch