Commit 4aa2fb4e authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'platform-drivers-x86-v5.11-3' of...

Merge tag 'platform-drivers-x86-v5.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86

Pull x86 platform driver fixes from Hans de Goede:
 "Two last minute small but important fixes.

  The hp-wmi change fixes an issue which is actively being hit by users:

    https://bugzilla.redhat.com/show_bug.cgi?id=1918255
    https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3564

  And the dell-wmi-sysman patch fixes a bug in the new dell-wmi-sysman
  driver which causes some systems to hang at boot when the driver
  loads"

* tag 'platform-drivers-x86-v5.11-3' of git://git.kernel.org/pub/scm/linux/kernel/git/pdx86/platform-drivers-x86:
  platform/x86: dell-wmi-sysman: fix a NULL pointer dereference
  platform/x86: hp-wmi: Disable tablet-mode reporting by default
parents 3aaf0a27 215164bf
...@@ -419,13 +419,17 @@ static int init_bios_attributes(int attr_type, const char *guid) ...@@ -419,13 +419,17 @@ static int init_bios_attributes(int attr_type, const char *guid)
return retval; return retval;
/* need to use specific instance_id and guid combination to get right data */ /* need to use specific instance_id and guid combination to get right data */
obj = get_wmiobj_pointer(instance_id, guid); obj = get_wmiobj_pointer(instance_id, guid);
if (!obj) if (!obj || obj->type != ACPI_TYPE_PACKAGE)
return -ENODEV; return -ENODEV;
elements = obj->package.elements; elements = obj->package.elements;
mutex_lock(&wmi_priv.mutex); mutex_lock(&wmi_priv.mutex);
while (elements) { while (elements) {
/* sanity checking */ /* sanity checking */
if (elements[ATTR_NAME].type != ACPI_TYPE_STRING) {
pr_debug("incorrect element type\n");
goto nextobj;
}
if (strlen(elements[ATTR_NAME].string.pointer) == 0) { if (strlen(elements[ATTR_NAME].string.pointer) == 0) {
pr_debug("empty attribute found\n"); pr_debug("empty attribute found\n");
goto nextobj; goto nextobj;
......
...@@ -32,6 +32,10 @@ MODULE_LICENSE("GPL"); ...@@ -32,6 +32,10 @@ MODULE_LICENSE("GPL");
MODULE_ALIAS("wmi:95F24279-4D7B-4334-9387-ACCDC67EF61C"); MODULE_ALIAS("wmi:95F24279-4D7B-4334-9387-ACCDC67EF61C");
MODULE_ALIAS("wmi:5FB7F034-2C63-45e9-BE91-3D44E2C707E4"); MODULE_ALIAS("wmi:5FB7F034-2C63-45e9-BE91-3D44E2C707E4");
static int enable_tablet_mode_sw = -1;
module_param(enable_tablet_mode_sw, int, 0444);
MODULE_PARM_DESC(enable_tablet_mode_sw, "Enable SW_TABLET_MODE reporting (-1=auto, 0=no, 1=yes)");
#define HPWMI_EVENT_GUID "95F24279-4D7B-4334-9387-ACCDC67EF61C" #define HPWMI_EVENT_GUID "95F24279-4D7B-4334-9387-ACCDC67EF61C"
#define HPWMI_BIOS_GUID "5FB7F034-2C63-45e9-BE91-3D44E2C707E4" #define HPWMI_BIOS_GUID "5FB7F034-2C63-45e9-BE91-3D44E2C707E4"
...@@ -654,10 +658,12 @@ static int __init hp_wmi_input_setup(void) ...@@ -654,10 +658,12 @@ static int __init hp_wmi_input_setup(void)
} }
/* Tablet mode */ /* Tablet mode */
val = hp_wmi_hw_state(HPWMI_TABLET_MASK); if (enable_tablet_mode_sw > 0) {
if (!(val < 0)) { val = hp_wmi_hw_state(HPWMI_TABLET_MASK);
__set_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit); if (val >= 0) {
input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE, val); __set_bit(SW_TABLET_MODE, hp_wmi_input_dev->swbit);
input_report_switch(hp_wmi_input_dev, SW_TABLET_MODE, val);
}
} }
err = sparse_keymap_setup(hp_wmi_input_dev, hp_wmi_keymap, NULL); err = sparse_keymap_setup(hp_wmi_input_dev, hp_wmi_keymap, NULL);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment