forked from luck/tmp_suning_uos_patched
USB: allow malformed LANGID descriptors
When an USB hardware does not provide a valid LANGID, fall back to value zero which is still a reasonable default for most devices. Signed-off-by: Daniel Mack <daniel@caiaq.de> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
This commit is contained in:
parent
4c24b6d045
commit
b7af0bb268
@ -804,18 +804,16 @@ int usb_string(struct usb_device *dev, int index, char *buf, size_t size)
|
|||||||
dev_err(&dev->dev,
|
dev_err(&dev->dev,
|
||||||
"string descriptor 0 read error: %d\n",
|
"string descriptor 0 read error: %d\n",
|
||||||
err);
|
err);
|
||||||
goto errout;
|
|
||||||
} else if (err < 4) {
|
} else if (err < 4) {
|
||||||
dev_err(&dev->dev, "string descriptor 0 too short\n");
|
dev_err(&dev->dev, "string descriptor 0 too short\n");
|
||||||
err = -EINVAL;
|
|
||||||
goto errout;
|
|
||||||
} else {
|
} else {
|
||||||
dev->have_langid = 1;
|
|
||||||
dev->string_langid = tbuf[2] | (tbuf[3] << 8);
|
dev->string_langid = tbuf[2] | (tbuf[3] << 8);
|
||||||
/* always use the first langid listed */
|
/* always use the first langid listed */
|
||||||
dev_dbg(&dev->dev, "default language 0x%04x\n",
|
dev_dbg(&dev->dev, "default language 0x%04x\n",
|
||||||
dev->string_langid);
|
dev->string_langid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dev->have_langid = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
err = usb_string_sub(dev, dev->string_langid, index, tbuf);
|
err = usb_string_sub(dev, dev->string_langid, index, tbuf);
|
||||||
|
Loading…
Reference in New Issue
Block a user