mirror of
https://github.com/torvalds/linux.git
synced 2024-11-18 18:11:56 +00:00
HID: wiimote: discard invalid EXT data reports
If an extension device isn't initialized properly, or during hardware initialization, a device might send extension data which is all 0xff. This is ambigious because this is also a valid normal data report. But it is impossible, under normal conditions, to trigger valid reports with all 0xff. Hence, we can safely ignore them. Signed-off-by: David Herrmann <dh.herrmann@gmail.com> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
This commit is contained in:
parent
ee286c2e80
commit
876727eabf
@ -1276,11 +1276,19 @@ static bool valid_ext_handler(const struct wiimod_ops *ops, size_t len)
|
||||
static void handler_ext(struct wiimote_data *wdata, const __u8 *payload,
|
||||
size_t len)
|
||||
{
|
||||
static const __u8 invalid[21] = { 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff,
|
||||
0xff };
|
||||
const __u8 *iter, *mods;
|
||||
const struct wiimod_ops *ops;
|
||||
bool is_mp;
|
||||
|
||||
if (len < 6)
|
||||
if (len > 21)
|
||||
len = 21;
|
||||
if (len < 6 || !memcmp(payload, invalid, len))
|
||||
return;
|
||||
|
||||
/* if MP is active, track MP slot hotplugging */
|
||||
|
Loading…
Reference in New Issue
Block a user