From: Sasha Levin Date: Thu, 11 Apr 2024 08:03:24 +0000 (-0400) Subject: Fixes for 6.1 X-Git-Tag: v4.19.312~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=b01d35347cd2d7a3568d81df3112b8002554aaed;p=thirdparty%2Fkernel%2Fstable-queue.git Fixes for 6.1 Signed-off-by: Sasha Levin --- diff --git a/queue-6.1/platform-x86-intel-vbtn-update-tablet-mode-switch-at.patch b/queue-6.1/platform-x86-intel-vbtn-update-tablet-mode-switch-at.patch new file mode 100644 index 00000000000..e618d0fdb15 --- /dev/null +++ b/queue-6.1/platform-x86-intel-vbtn-update-tablet-mode-switch-at.patch @@ -0,0 +1,80 @@ +From cbc2abc99986de84b96008aa448af184108a7408 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 c10c99a31a90a..224139006a433 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-6.1/randomize_kstack-improve-entropy-diffusion.patch b/queue-6.1/randomize_kstack-improve-entropy-diffusion.patch new file mode 100644 index 00000000000..72d0ac3f426 --- /dev/null +++ b/queue-6.1/randomize_kstack-improve-entropy-diffusion.patch @@ -0,0 +1,37 @@ +From f7e96a69608e416522f52dde91d2c6bfd606e304 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 5d868505a94e4..6d92b68efbf6c 100644 +--- a/include/linux/randomize_kstack.h ++++ b/include/linux/randomize_kstack.h +@@ -80,7 +80,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-6.1/series b/queue-6.1/series index f6afdfc4c9d..b42a0eacddd 100644 --- a/queue-6.1/series +++ b/queue-6.1/series @@ -75,3 +75,5 @@ revert-scsi-sd-usb_storage-uas-access-media-prior-to-querying-device-properties. revert-scsi-core-add-struct-for-args-to-execution-functions.patch scsi-sd-usb_storage-uas-access-media-prior-to-querying-device-properties.patch virtio-reenable-config-if-freezing-device-failed.patch +randomize_kstack-improve-entropy-diffusion.patch +platform-x86-intel-vbtn-update-tablet-mode-switch-at.patch