mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-23 20:53:53 +08:00
Input: psmouse - when comparing PNP IDs ignore case
PNP IDs are supposed to be case-insensitive and so we should compare them as such. Acked-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
parent
d7535ffa42
commit
99e14c1e23
@ -463,19 +463,45 @@ static int psmouse_poll(struct psmouse *psmouse)
|
||||
PSMOUSE_CMD_POLL | (psmouse->pktsize << 8));
|
||||
}
|
||||
|
||||
static bool psmouse_check_pnp_id(const char *id, const char * const ids[])
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; ids[i]; i++)
|
||||
if (!strcasecmp(id, ids[i]))
|
||||
return true;
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
* psmouse_matches_pnp_id - check if psmouse matches one of the passed in ids.
|
||||
*/
|
||||
bool psmouse_matches_pnp_id(struct psmouse *psmouse, const char * const ids[])
|
||||
{
|
||||
int i;
|
||||
struct serio *serio = psmouse->ps2dev.serio;
|
||||
char *p, *fw_id_copy, *save_ptr;
|
||||
bool found = false;
|
||||
|
||||
if (!strncmp(psmouse->ps2dev.serio->firmware_id, "PNP:", 4))
|
||||
for (i = 0; ids[i]; i++)
|
||||
if (strstr(psmouse->ps2dev.serio->firmware_id, ids[i]))
|
||||
return true;
|
||||
if (strncmp(serio->firmware_id, "PNP: ", 5))
|
||||
return false;
|
||||
|
||||
return false;
|
||||
fw_id_copy = kstrndup(&serio->firmware_id[5],
|
||||
sizeof(serio->firmware_id) - 5,
|
||||
GFP_KERNEL);
|
||||
if (!fw_id_copy)
|
||||
return false;
|
||||
|
||||
save_ptr = fw_id_copy;
|
||||
while ((p = strsep(&fw_id_copy, " ")) != NULL) {
|
||||
if (psmouse_check_pnp_id(p, ids)) {
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
kfree(save_ptr);
|
||||
return found;
|
||||
}
|
||||
|
||||
/*
|
||||
|
Loading…
Reference in New Issue
Block a user