From d99469ccaf0bf3cfad502ee643ae2cfb02bfb895 Mon Sep 17 00:00:00 2001 From: "Justin M. Forbes" Date: Fri, 5 Jan 2018 09:30:57 -0600 Subject: [PATCH] Linux v4.14.12 --- ...l-laptop-Filter-out-spurious-keyboar.patch | 99 +++++++++++++++++++ kernel.spec | 10 +- sources | 2 +- ...-Do-not-enable-PTI-on-AMD-processors.patch | 46 --------- 4 files changed, 108 insertions(+), 49 deletions(-) create mode 100644 0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch delete mode 100644 x86-cpu-x86-pti-Do-not-enable-PTI-on-AMD-processors.patch diff --git a/0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch b/0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch new file mode 100644 index 000000000..926487b3d --- /dev/null +++ b/0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch @@ -0,0 +1,99 @@ +From 714fe15daa07e7691c9731c88de71aa57f84b6c2 Mon Sep 17 00:00:00 2001 +From: Hans de Goede +Date: Wed, 3 Jan 2018 11:13:54 +0100 +Subject: [PATCH] platform/x86: dell-laptop: Filter out spurious keyboard + backlight change events + +On some Dell XPS models WMI events of type 0x0000 reporting a keycode of +0xe00c get reported when the brightness of the LCD panel changes. + +This leads to us reporting false-positive kbd_led change events to +userspace which in turn leads to the kbd backlight OSD showing when it +should not. + +We already read the current keyboard backlight brightness value when +reporting events because the led_classdev_notify_brightness_hw_changed +API requires this. Compare this value to the last known value and filter +out duplicate events, fixing this. + +Note the fixed issue is esp. a problem on XPS models with an ambient light +sensor and automatic brightness adjustments turned on, this causes the kbd +backlight OSD to show all the time there. + +BugLink: https://bugzilla.redhat.com/show_bug.cgi?id=1514969 +Signed-off-by: Hans de Goede +--- + drivers/platform/x86/dell-laptop.c | 24 ++++++++++++++++++++++-- + 1 file changed, 22 insertions(+), 2 deletions(-) + +diff --git a/drivers/platform/x86/dell-laptop.c b/drivers/platform/x86/dell-laptop.c +index cd4725e7e0b5..2ef3297a9efc 100644 +--- a/drivers/platform/x86/dell-laptop.c ++++ b/drivers/platform/x86/dell-laptop.c +@@ -1133,6 +1133,7 @@ static u8 kbd_previous_mode_bit; + + static bool kbd_led_present; + static DEFINE_MUTEX(kbd_led_mutex); ++static enum led_brightness kbd_led_level; + + /* + * NOTE: there are three ways to set the keyboard backlight level. +@@ -1947,6 +1948,7 @@ static enum led_brightness kbd_led_level_get(struct led_classdev *led_cdev) + static int kbd_led_level_set(struct led_classdev *led_cdev, + enum led_brightness value) + { ++ enum led_brightness new_value = value; + struct kbd_state state; + struct kbd_state new_state; + u16 num; +@@ -1976,6 +1978,9 @@ static int kbd_led_level_set(struct led_classdev *led_cdev, + } + + out: ++ if (ret == 0) ++ kbd_led_level = new_value; ++ + mutex_unlock(&kbd_led_mutex); + return ret; + } +@@ -2003,6 +2008,9 @@ static int __init kbd_led_init(struct device *dev) + if (kbd_led.max_brightness) + kbd_led.max_brightness--; + } ++ ++ kbd_led_level = kbd_led_level_get(NULL); ++ + ret = led_classdev_register(dev, &kbd_led); + if (ret) + kbd_led_present = false; +@@ -2027,13 +2035,25 @@ static void kbd_led_exit(void) + static int dell_laptop_notifier_call(struct notifier_block *nb, + unsigned long action, void *data) + { ++ bool changed = false; ++ enum led_brightness new_kbd_led_level; ++ + switch (action) { + case DELL_LAPTOP_KBD_BACKLIGHT_BRIGHTNESS_CHANGED: + if (!kbd_led_present) + break; + +- led_classdev_notify_brightness_hw_changed(&kbd_led, +- kbd_led_level_get(&kbd_led)); ++ mutex_lock(&kbd_led_mutex); ++ new_kbd_led_level = kbd_led_level_get(&kbd_led); ++ if (kbd_led_level != new_kbd_led_level) { ++ kbd_led_level = new_kbd_led_level; ++ changed = true; ++ } ++ mutex_unlock(&kbd_led_mutex); ++ ++ if (changed) ++ led_classdev_notify_brightness_hw_changed(&kbd_led, ++ kbd_led_level); + break; + } + +-- +2.14.3 + diff --git a/kernel.spec b/kernel.spec index 92cdbb833..66fffad91 100644 --- a/kernel.spec +++ b/kernel.spec @@ -54,7 +54,7 @@ Summary: The Linux kernel %if 0%{?released_kernel} # Do we have a -stable update to apply? -%define stable_update 11 +%define stable_update 12 # Set rpm version accordingly %if 0%{?stable_update} %define stablerev %{stable_update} @@ -656,7 +656,9 @@ Patch628: HID-rmi-Check-that-a-device-is-a-RMI-device-before-c.patch Patch630: v4-KVM-Fix-stack-out-of-bounds-read-in-write_mmio.patch Patch631: cgroup-for-4.15-fixes-cgroup-fix-css_task_iter-crash-on-CSS_TASK_ITER_PROC.patch -Patch632: x86-cpu-x86-pti-Do-not-enable-PTI-on-AMD-processors.patch + +# rhbz 1514969 +Patch633: 0001-platform-x86-dell-laptop-Filter-out-spurious-keyboar.patch # END OF PATCH DEFINITIONS @@ -2233,6 +2235,10 @@ fi # # %changelog +* Fri Jan 05 2018 Justin M. Forbes - 4.14.12-200 +- Linux v4.14.12 +- Add a patch to filter false positive kbd backlight change events (rhbz 1514969) + * Wed Jan 03 2018 Justin M. Forbes - 4.14.11-200 - Linux v4.14.11 diff --git a/sources b/sources index 05d19ed73..37c0dd367 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ SHA512 (linux-4.14.tar.xz) = 77e43a02d766c3d73b7e25c4aafb2e931d6b16e870510c22cef0cdb05c3acb7952b8908ebad12b10ef982c6efbe286364b1544586e715cf38390e483927904d8 SHA512 (perf-man-4.14.tar.gz) = 76a9d8adc284cdffd4b3fbb060e7f9a14109267707ce1d03f4c3239cd70d8d164f697da3a0f90a363fbcac42a61d3c378afbcc2a86f112c501b9cb5ce74ef9f8 -SHA512 (patch-4.14.11.xz) = 3fbaf02eb236d7490eb65e64b841fc43bd3abbbf97deef79b7457faf8005ef7f2cbaf5c4a8c3b2d22998f5197a5a98b6fef717ed60a34ff666fa7eaf8376118d +SHA512 (patch-4.14.12.xz) = b11b91503c9eb879b79cb16683204f5dbb467aac62dcfc1b025f889dc38016d990c0fd1879210226430e9f9ac6e168439b13603781188d67d213b12a334b4e5b diff --git a/x86-cpu-x86-pti-Do-not-enable-PTI-on-AMD-processors.patch b/x86-cpu-x86-pti-Do-not-enable-PTI-on-AMD-processors.patch deleted file mode 100644 index a7e0accb6..000000000 --- a/x86-cpu-x86-pti-Do-not-enable-PTI-on-AMD-processors.patch +++ /dev/null @@ -1,46 +0,0 @@ -From patchwork Wed Dec 27 05:43:54 2017 -Content-Type: text/plain; charset="utf-8" -MIME-Version: 1.0 -Content-Transfer-Encoding: 7bit -Subject: x86/cpu, x86/pti: Do not enable PTI on AMD processors -From: Tom Lendacky -X-Patchwork-Id: 10133447 -Message-Id: <20171227054354.20369.94587.stgit@tlendack-t1.amdoffice.net> -To: x86@kernel.org -Cc: Dave Hansen , - linux-kernel@vger.kernel.org, Ingo Molnar , - Andy Lutomirski , "H. Peter Anvin" , - Thomas Gleixner , Borislav Petkov -Date: Tue, 26 Dec 2017 23:43:54 -0600 - -AMD processors are not subject to the types of attacks that the kernel -page table isolation feature protects against. The AMD microarchitecture -does not allow memory references, including speculative references, that -access higher privileged data when running in a lesser privileged mode -when that access would result in a page fault. - -Disable page table isolation by default on AMD processors by not setting -the X86_BUG_CPU_INSECURE feature, which controls whether X86_FEATURE_PTI -is set. - -Signed-off-by: Tom Lendacky -Reviewed-by: Borislav Petkov ---- - arch/x86/kernel/cpu/common.c | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - -diff --git a/arch/x86/kernel/cpu/common.c b/arch/x86/kernel/cpu/common.c -index c47de4e..7d9e3b0 100644 ---- a/arch/x86/kernel/cpu/common.c -+++ b/arch/x86/kernel/cpu/common.c -@@ -923,8 +923,8 @@ static void __init early_identify_cpu(struct cpuinfo_x86 *c) - - setup_force_cpu_cap(X86_FEATURE_ALWAYS); - -- /* Assume for now that ALL x86 CPUs are insecure */ -- setup_force_cpu_bug(X86_BUG_CPU_INSECURE); -+ if (c->x86_vendor != X86_VENDOR_AMD) -+ setup_force_cpu_bug(X86_BUG_CPU_INSECURE); - - fpu__init_system(c); -