projects
/
platform
/
adaptation
/
renesas_rcar
/
renesas_kernel.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge tag 'backport/v3.14.24-ltsi-rc1/phy-rcar-gen2-usb-to-v3.15' into backport/v3...
[platform/adaptation/renesas_rcar/renesas_kernel.git]
/
drivers
/
platform
/
x86
/
dell-wmi.c
diff --git
a/drivers/platform/x86/dell-wmi.c
b/drivers/platform/x86/dell-wmi.c
index
390e8e3
..
25721bf
100644
(file)
--- a/
drivers/platform/x86/dell-wmi.c
+++ b/
drivers/platform/x86/dell-wmi.c
@@
-163,18
+163,24
@@
static void dell_wmi_notify(u32 value, void *context)
const struct key_entry *key;
int reported_key;
u16 *buffer_entry = (u16 *)obj->buffer.pointer;
const struct key_entry *key;
int reported_key;
u16 *buffer_entry = (u16 *)obj->buffer.pointer;
+ int buffer_size = obj->buffer.length/2;
- if (
dell_new_hk_type && (buffer_entry[1] != 0x10)
) {
+ if (
buffer_size >= 2 && dell_new_hk_type && buffer_entry[1] != 0x10
) {
pr_info("Received unknown WMI event (0x%x)\n",
buffer_entry[1]);
kfree(obj);
return;
}
pr_info("Received unknown WMI event (0x%x)\n",
buffer_entry[1]);
kfree(obj);
return;
}
- if (
dell_new_hk_type || buffer_entry[1] == 0x0
)
+ if (
buffer_size >= 3 && (dell_new_hk_type || buffer_entry[1] == 0x0)
)
reported_key = (int)buffer_entry[2];
reported_key = (int)buffer_entry[2];
- else
+ else
if (buffer_size >= 2)
reported_key = (int)buffer_entry[1] & 0xffff;
reported_key = (int)buffer_entry[1] & 0xffff;
+ else {
+ pr_info("Received unknown WMI event\n");
+ kfree(obj);
+ return;
+ }
key = sparse_keymap_entry_from_scancode(dell_wmi_input_dev,
reported_key);
key = sparse_keymap_entry_from_scancode(dell_wmi_input_dev,
reported_key);