USB: core: Change configuration warnings to notices
[ Upstream commit 7a09c12697
]
It has been pointed out that the kernel log messages warning about
problems in USB configuration and related descriptors are vexing for
users. The warning log level has a fairly high priority, but the user
can do nothing to fix the underlying errors in the device's firmware.
To reduce the amount of useless information produced by tools that
filter high-priority log messages, we can change these warnings to
notices, i.e., change dev_warn() to dev_notice(). The same holds for
a few messages that currently use dev_err(): Unless they indicate a
failure that might make a device unusable (such as inability to
transfer a config descriptor), change them to dev_notice() also.
Link: https://bugzilla.kernel.org/show_bug.cgi?id=216630
Suggested-by: Artem S. Tashkinov <aros@gmx.com>
Signed-off-by: Alan Stern <stern@rowland.harvard.edu>
Link: https://lore.kernel.org/r/Y2KzPx0h6z1jXCuN@rowland.harvard.edu
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Stable-dep-of: 974bba5c118f ("usb: config: fix iteration issue in 'usb_get_bos_descriptor()'")
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Родитель
bec3ae2938
Коммит
e704db8ea6
|
@ -61,7 +61,7 @@ static void usb_parse_ssp_isoc_endpoint_companion(struct device *ddev,
|
||||||
desc = (struct usb_ssp_isoc_ep_comp_descriptor *) buffer;
|
desc = (struct usb_ssp_isoc_ep_comp_descriptor *) buffer;
|
||||||
if (desc->bDescriptorType != USB_DT_SSP_ISOC_ENDPOINT_COMP ||
|
if (desc->bDescriptorType != USB_DT_SSP_ISOC_ENDPOINT_COMP ||
|
||||||
size < USB_DT_SSP_ISOC_EP_COMP_SIZE) {
|
size < USB_DT_SSP_ISOC_EP_COMP_SIZE) {
|
||||||
dev_warn(ddev, "Invalid SuperSpeedPlus isoc endpoint companion"
|
dev_notice(ddev, "Invalid SuperSpeedPlus isoc endpoint companion"
|
||||||
"for config %d interface %d altsetting %d ep %d.\n",
|
"for config %d interface %d altsetting %d ep %d.\n",
|
||||||
cfgno, inum, asnum, ep->desc.bEndpointAddress);
|
cfgno, inum, asnum, ep->desc.bEndpointAddress);
|
||||||
return;
|
return;
|
||||||
|
@ -83,7 +83,7 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno,
|
||||||
|
|
||||||
if (desc->bDescriptorType != USB_DT_SS_ENDPOINT_COMP ||
|
if (desc->bDescriptorType != USB_DT_SS_ENDPOINT_COMP ||
|
||||||
size < USB_DT_SS_EP_COMP_SIZE) {
|
size < USB_DT_SS_EP_COMP_SIZE) {
|
||||||
dev_warn(ddev, "No SuperSpeed endpoint companion for config %d "
|
dev_notice(ddev, "No SuperSpeed endpoint companion for config %d "
|
||||||
" interface %d altsetting %d ep %d: "
|
" interface %d altsetting %d ep %d: "
|
||||||
"using minimum values\n",
|
"using minimum values\n",
|
||||||
cfgno, inum, asnum, ep->desc.bEndpointAddress);
|
cfgno, inum, asnum, ep->desc.bEndpointAddress);
|
||||||
|
@ -109,13 +109,13 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno,
|
||||||
|
|
||||||
/* Check the various values */
|
/* Check the various values */
|
||||||
if (usb_endpoint_xfer_control(&ep->desc) && desc->bMaxBurst != 0) {
|
if (usb_endpoint_xfer_control(&ep->desc) && desc->bMaxBurst != 0) {
|
||||||
dev_warn(ddev, "Control endpoint with bMaxBurst = %d in "
|
dev_notice(ddev, "Control endpoint with bMaxBurst = %d in "
|
||||||
"config %d interface %d altsetting %d ep %d: "
|
"config %d interface %d altsetting %d ep %d: "
|
||||||
"setting to zero\n", desc->bMaxBurst,
|
"setting to zero\n", desc->bMaxBurst,
|
||||||
cfgno, inum, asnum, ep->desc.bEndpointAddress);
|
cfgno, inum, asnum, ep->desc.bEndpointAddress);
|
||||||
ep->ss_ep_comp.bMaxBurst = 0;
|
ep->ss_ep_comp.bMaxBurst = 0;
|
||||||
} else if (desc->bMaxBurst > 15) {
|
} else if (desc->bMaxBurst > 15) {
|
||||||
dev_warn(ddev, "Endpoint with bMaxBurst = %d in "
|
dev_notice(ddev, "Endpoint with bMaxBurst = %d in "
|
||||||
"config %d interface %d altsetting %d ep %d: "
|
"config %d interface %d altsetting %d ep %d: "
|
||||||
"setting to 15\n", desc->bMaxBurst,
|
"setting to 15\n", desc->bMaxBurst,
|
||||||
cfgno, inum, asnum, ep->desc.bEndpointAddress);
|
cfgno, inum, asnum, ep->desc.bEndpointAddress);
|
||||||
|
@ -125,7 +125,7 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno,
|
||||||
if ((usb_endpoint_xfer_control(&ep->desc) ||
|
if ((usb_endpoint_xfer_control(&ep->desc) ||
|
||||||
usb_endpoint_xfer_int(&ep->desc)) &&
|
usb_endpoint_xfer_int(&ep->desc)) &&
|
||||||
desc->bmAttributes != 0) {
|
desc->bmAttributes != 0) {
|
||||||
dev_warn(ddev, "%s endpoint with bmAttributes = %d in "
|
dev_notice(ddev, "%s endpoint with bmAttributes = %d in "
|
||||||
"config %d interface %d altsetting %d ep %d: "
|
"config %d interface %d altsetting %d ep %d: "
|
||||||
"setting to zero\n",
|
"setting to zero\n",
|
||||||
usb_endpoint_xfer_control(&ep->desc) ? "Control" : "Bulk",
|
usb_endpoint_xfer_control(&ep->desc) ? "Control" : "Bulk",
|
||||||
|
@ -134,7 +134,7 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno,
|
||||||
ep->ss_ep_comp.bmAttributes = 0;
|
ep->ss_ep_comp.bmAttributes = 0;
|
||||||
} else if (usb_endpoint_xfer_bulk(&ep->desc) &&
|
} else if (usb_endpoint_xfer_bulk(&ep->desc) &&
|
||||||
desc->bmAttributes > 16) {
|
desc->bmAttributes > 16) {
|
||||||
dev_warn(ddev, "Bulk endpoint with more than 65536 streams in "
|
dev_notice(ddev, "Bulk endpoint with more than 65536 streams in "
|
||||||
"config %d interface %d altsetting %d ep %d: "
|
"config %d interface %d altsetting %d ep %d: "
|
||||||
"setting to max\n",
|
"setting to max\n",
|
||||||
cfgno, inum, asnum, ep->desc.bEndpointAddress);
|
cfgno, inum, asnum, ep->desc.bEndpointAddress);
|
||||||
|
@ -142,7 +142,7 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno,
|
||||||
} else if (usb_endpoint_xfer_isoc(&ep->desc) &&
|
} else if (usb_endpoint_xfer_isoc(&ep->desc) &&
|
||||||
!USB_SS_SSP_ISOC_COMP(desc->bmAttributes) &&
|
!USB_SS_SSP_ISOC_COMP(desc->bmAttributes) &&
|
||||||
USB_SS_MULT(desc->bmAttributes) > 3) {
|
USB_SS_MULT(desc->bmAttributes) > 3) {
|
||||||
dev_warn(ddev, "Isoc endpoint has Mult of %d in "
|
dev_notice(ddev, "Isoc endpoint has Mult of %d in "
|
||||||
"config %d interface %d altsetting %d ep %d: "
|
"config %d interface %d altsetting %d ep %d: "
|
||||||
"setting to 3\n",
|
"setting to 3\n",
|
||||||
USB_SS_MULT(desc->bmAttributes),
|
USB_SS_MULT(desc->bmAttributes),
|
||||||
|
@ -160,7 +160,7 @@ static void usb_parse_ss_endpoint_companion(struct device *ddev, int cfgno,
|
||||||
else
|
else
|
||||||
max_tx = 999999;
|
max_tx = 999999;
|
||||||
if (le16_to_cpu(desc->wBytesPerInterval) > max_tx) {
|
if (le16_to_cpu(desc->wBytesPerInterval) > max_tx) {
|
||||||
dev_warn(ddev, "%s endpoint with wBytesPerInterval of %d in "
|
dev_notice(ddev, "%s endpoint with wBytesPerInterval of %d in "
|
||||||
"config %d interface %d altsetting %d ep %d: "
|
"config %d interface %d altsetting %d ep %d: "
|
||||||
"setting to %d\n",
|
"setting to %d\n",
|
||||||
usb_endpoint_xfer_isoc(&ep->desc) ? "Isoc" : "Int",
|
usb_endpoint_xfer_isoc(&ep->desc) ? "Isoc" : "Int",
|
||||||
|
@ -273,7 +273,7 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno,
|
||||||
else if (d->bLength >= USB_DT_ENDPOINT_SIZE)
|
else if (d->bLength >= USB_DT_ENDPOINT_SIZE)
|
||||||
n = USB_DT_ENDPOINT_SIZE;
|
n = USB_DT_ENDPOINT_SIZE;
|
||||||
else {
|
else {
|
||||||
dev_warn(ddev, "config %d interface %d altsetting %d has an "
|
dev_notice(ddev, "config %d interface %d altsetting %d has an "
|
||||||
"invalid endpoint descriptor of length %d, skipping\n",
|
"invalid endpoint descriptor of length %d, skipping\n",
|
||||||
cfgno, inum, asnum, d->bLength);
|
cfgno, inum, asnum, d->bLength);
|
||||||
goto skip_to_next_endpoint_or_interface_descriptor;
|
goto skip_to_next_endpoint_or_interface_descriptor;
|
||||||
|
@ -281,7 +281,7 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno,
|
||||||
|
|
||||||
i = d->bEndpointAddress & ~USB_ENDPOINT_DIR_MASK;
|
i = d->bEndpointAddress & ~USB_ENDPOINT_DIR_MASK;
|
||||||
if (i >= 16 || i == 0) {
|
if (i >= 16 || i == 0) {
|
||||||
dev_warn(ddev, "config %d interface %d altsetting %d has an "
|
dev_notice(ddev, "config %d interface %d altsetting %d has an "
|
||||||
"invalid endpoint with address 0x%X, skipping\n",
|
"invalid endpoint with address 0x%X, skipping\n",
|
||||||
cfgno, inum, asnum, d->bEndpointAddress);
|
cfgno, inum, asnum, d->bEndpointAddress);
|
||||||
goto skip_to_next_endpoint_or_interface_descriptor;
|
goto skip_to_next_endpoint_or_interface_descriptor;
|
||||||
|
@ -293,7 +293,7 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno,
|
||||||
|
|
||||||
/* Check for duplicate endpoint addresses */
|
/* Check for duplicate endpoint addresses */
|
||||||
if (config_endpoint_is_duplicate(config, inum, asnum, d)) {
|
if (config_endpoint_is_duplicate(config, inum, asnum, d)) {
|
||||||
dev_warn(ddev, "config %d interface %d altsetting %d has a duplicate endpoint with address 0x%X, skipping\n",
|
dev_notice(ddev, "config %d interface %d altsetting %d has a duplicate endpoint with address 0x%X, skipping\n",
|
||||||
cfgno, inum, asnum, d->bEndpointAddress);
|
cfgno, inum, asnum, d->bEndpointAddress);
|
||||||
goto skip_to_next_endpoint_or_interface_descriptor;
|
goto skip_to_next_endpoint_or_interface_descriptor;
|
||||||
}
|
}
|
||||||
|
@ -301,7 +301,7 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno,
|
||||||
/* Ignore some endpoints */
|
/* Ignore some endpoints */
|
||||||
if (udev->quirks & USB_QUIRK_ENDPOINT_IGNORE) {
|
if (udev->quirks & USB_QUIRK_ENDPOINT_IGNORE) {
|
||||||
if (usb_endpoint_is_ignored(udev, ifp, d)) {
|
if (usb_endpoint_is_ignored(udev, ifp, d)) {
|
||||||
dev_warn(ddev, "config %d interface %d altsetting %d has an ignored endpoint with address 0x%X, skipping\n",
|
dev_notice(ddev, "config %d interface %d altsetting %d has an ignored endpoint with address 0x%X, skipping\n",
|
||||||
cfgno, inum, asnum,
|
cfgno, inum, asnum,
|
||||||
d->bEndpointAddress);
|
d->bEndpointAddress);
|
||||||
goto skip_to_next_endpoint_or_interface_descriptor;
|
goto skip_to_next_endpoint_or_interface_descriptor;
|
||||||
|
@ -378,7 +378,7 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (d->bInterval < i || d->bInterval > j) {
|
if (d->bInterval < i || d->bInterval > j) {
|
||||||
dev_warn(ddev, "config %d interface %d altsetting %d "
|
dev_notice(ddev, "config %d interface %d altsetting %d "
|
||||||
"endpoint 0x%X has an invalid bInterval %d, "
|
"endpoint 0x%X has an invalid bInterval %d, "
|
||||||
"changing to %d\n",
|
"changing to %d\n",
|
||||||
cfgno, inum, asnum,
|
cfgno, inum, asnum,
|
||||||
|
@ -391,7 +391,7 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno,
|
||||||
* them usable, we will try treating them as Interrupt endpoints.
|
* them usable, we will try treating them as Interrupt endpoints.
|
||||||
*/
|
*/
|
||||||
if (udev->speed == USB_SPEED_LOW && usb_endpoint_xfer_bulk(d)) {
|
if (udev->speed == USB_SPEED_LOW && usb_endpoint_xfer_bulk(d)) {
|
||||||
dev_warn(ddev, "config %d interface %d altsetting %d "
|
dev_notice(ddev, "config %d interface %d altsetting %d "
|
||||||
"endpoint 0x%X is Bulk; changing to Interrupt\n",
|
"endpoint 0x%X is Bulk; changing to Interrupt\n",
|
||||||
cfgno, inum, asnum, d->bEndpointAddress);
|
cfgno, inum, asnum, d->bEndpointAddress);
|
||||||
endpoint->desc.bmAttributes = USB_ENDPOINT_XFER_INT;
|
endpoint->desc.bmAttributes = USB_ENDPOINT_XFER_INT;
|
||||||
|
@ -408,7 +408,7 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno,
|
||||||
*/
|
*/
|
||||||
maxp = le16_to_cpu(endpoint->desc.wMaxPacketSize);
|
maxp = le16_to_cpu(endpoint->desc.wMaxPacketSize);
|
||||||
if (maxp == 0 && !(usb_endpoint_xfer_isoc(d) && asnum == 0)) {
|
if (maxp == 0 && !(usb_endpoint_xfer_isoc(d) && asnum == 0)) {
|
||||||
dev_warn(ddev, "config %d interface %d altsetting %d endpoint 0x%X has invalid wMaxPacketSize 0\n",
|
dev_notice(ddev, "config %d interface %d altsetting %d endpoint 0x%X has invalid wMaxPacketSize 0\n",
|
||||||
cfgno, inum, asnum, d->bEndpointAddress);
|
cfgno, inum, asnum, d->bEndpointAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -439,7 +439,7 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno,
|
||||||
j = maxpacket_maxes[usb_endpoint_type(&endpoint->desc)];
|
j = maxpacket_maxes[usb_endpoint_type(&endpoint->desc)];
|
||||||
|
|
||||||
if (maxp > j) {
|
if (maxp > j) {
|
||||||
dev_warn(ddev, "config %d interface %d altsetting %d endpoint 0x%X has invalid maxpacket %d, setting to %d\n",
|
dev_notice(ddev, "config %d interface %d altsetting %d endpoint 0x%X has invalid maxpacket %d, setting to %d\n",
|
||||||
cfgno, inum, asnum, d->bEndpointAddress, maxp, j);
|
cfgno, inum, asnum, d->bEndpointAddress, maxp, j);
|
||||||
maxp = j;
|
maxp = j;
|
||||||
endpoint->desc.wMaxPacketSize = cpu_to_le16(i | maxp);
|
endpoint->desc.wMaxPacketSize = cpu_to_le16(i | maxp);
|
||||||
|
@ -452,7 +452,7 @@ static int usb_parse_endpoint(struct device *ddev, int cfgno,
|
||||||
*/
|
*/
|
||||||
if (udev->speed == USB_SPEED_HIGH && usb_endpoint_xfer_bulk(d)) {
|
if (udev->speed == USB_SPEED_HIGH && usb_endpoint_xfer_bulk(d)) {
|
||||||
if (maxp != 512)
|
if (maxp != 512)
|
||||||
dev_warn(ddev, "config %d interface %d altsetting %d "
|
dev_notice(ddev, "config %d interface %d altsetting %d "
|
||||||
"bulk endpoint 0x%X has invalid maxpacket %d\n",
|
"bulk endpoint 0x%X has invalid maxpacket %d\n",
|
||||||
cfgno, inum, asnum, d->bEndpointAddress,
|
cfgno, inum, asnum, d->bEndpointAddress,
|
||||||
maxp);
|
maxp);
|
||||||
|
@ -533,7 +533,7 @@ static int usb_parse_interface(struct device *ddev, int cfgno,
|
||||||
i < intfc->num_altsetting;
|
i < intfc->num_altsetting;
|
||||||
(++i, ++alt)) {
|
(++i, ++alt)) {
|
||||||
if (alt->desc.bAlternateSetting == asnum) {
|
if (alt->desc.bAlternateSetting == asnum) {
|
||||||
dev_warn(ddev, "Duplicate descriptor for config %d "
|
dev_notice(ddev, "Duplicate descriptor for config %d "
|
||||||
"interface %d altsetting %d, skipping\n",
|
"interface %d altsetting %d, skipping\n",
|
||||||
cfgno, inum, asnum);
|
cfgno, inum, asnum);
|
||||||
goto skip_to_next_interface_descriptor;
|
goto skip_to_next_interface_descriptor;
|
||||||
|
@ -559,7 +559,7 @@ static int usb_parse_interface(struct device *ddev, int cfgno,
|
||||||
num_ep = num_ep_orig = alt->desc.bNumEndpoints;
|
num_ep = num_ep_orig = alt->desc.bNumEndpoints;
|
||||||
alt->desc.bNumEndpoints = 0; /* Use as a counter */
|
alt->desc.bNumEndpoints = 0; /* Use as a counter */
|
||||||
if (num_ep > USB_MAXENDPOINTS) {
|
if (num_ep > USB_MAXENDPOINTS) {
|
||||||
dev_warn(ddev, "too many endpoints for config %d interface %d "
|
dev_notice(ddev, "too many endpoints for config %d interface %d "
|
||||||
"altsetting %d: %d, using maximum allowed: %d\n",
|
"altsetting %d: %d, using maximum allowed: %d\n",
|
||||||
cfgno, inum, asnum, num_ep, USB_MAXENDPOINTS);
|
cfgno, inum, asnum, num_ep, USB_MAXENDPOINTS);
|
||||||
num_ep = USB_MAXENDPOINTS;
|
num_ep = USB_MAXENDPOINTS;
|
||||||
|
@ -590,7 +590,7 @@ static int usb_parse_interface(struct device *ddev, int cfgno,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n != num_ep_orig)
|
if (n != num_ep_orig)
|
||||||
dev_warn(ddev, "config %d interface %d altsetting %d has %d "
|
dev_notice(ddev, "config %d interface %d altsetting %d has %d "
|
||||||
"endpoint descriptor%s, different from the interface "
|
"endpoint descriptor%s, different from the interface "
|
||||||
"descriptor's value: %d\n",
|
"descriptor's value: %d\n",
|
||||||
cfgno, inum, asnum, n, plural(n), num_ep_orig);
|
cfgno, inum, asnum, n, plural(n), num_ep_orig);
|
||||||
|
@ -625,7 +625,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
if (config->desc.bDescriptorType != USB_DT_CONFIG ||
|
if (config->desc.bDescriptorType != USB_DT_CONFIG ||
|
||||||
config->desc.bLength < USB_DT_CONFIG_SIZE ||
|
config->desc.bLength < USB_DT_CONFIG_SIZE ||
|
||||||
config->desc.bLength > size) {
|
config->desc.bLength > size) {
|
||||||
dev_err(ddev, "invalid descriptor for config index %d: "
|
dev_notice(ddev, "invalid descriptor for config index %d: "
|
||||||
"type = 0x%X, length = %d\n", cfgidx,
|
"type = 0x%X, length = %d\n", cfgidx,
|
||||||
config->desc.bDescriptorType, config->desc.bLength);
|
config->desc.bDescriptorType, config->desc.bLength);
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
@ -636,7 +636,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
size -= config->desc.bLength;
|
size -= config->desc.bLength;
|
||||||
|
|
||||||
if (nintf > USB_MAXINTERFACES) {
|
if (nintf > USB_MAXINTERFACES) {
|
||||||
dev_warn(ddev, "config %d has too many interfaces: %d, "
|
dev_notice(ddev, "config %d has too many interfaces: %d, "
|
||||||
"using maximum allowed: %d\n",
|
"using maximum allowed: %d\n",
|
||||||
cfgno, nintf, USB_MAXINTERFACES);
|
cfgno, nintf, USB_MAXINTERFACES);
|
||||||
nintf = USB_MAXINTERFACES;
|
nintf = USB_MAXINTERFACES;
|
||||||
|
@ -650,7 +650,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
(buffer2 += header->bLength, size2 -= header->bLength)) {
|
(buffer2 += header->bLength, size2 -= header->bLength)) {
|
||||||
|
|
||||||
if (size2 < sizeof(struct usb_descriptor_header)) {
|
if (size2 < sizeof(struct usb_descriptor_header)) {
|
||||||
dev_warn(ddev, "config %d descriptor has %d excess "
|
dev_notice(ddev, "config %d descriptor has %d excess "
|
||||||
"byte%s, ignoring\n",
|
"byte%s, ignoring\n",
|
||||||
cfgno, size2, plural(size2));
|
cfgno, size2, plural(size2));
|
||||||
break;
|
break;
|
||||||
|
@ -658,7 +658,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
|
|
||||||
header = (struct usb_descriptor_header *) buffer2;
|
header = (struct usb_descriptor_header *) buffer2;
|
||||||
if ((header->bLength > size2) || (header->bLength < 2)) {
|
if ((header->bLength > size2) || (header->bLength < 2)) {
|
||||||
dev_warn(ddev, "config %d has an invalid descriptor "
|
dev_notice(ddev, "config %d has an invalid descriptor "
|
||||||
"of length %d, skipping remainder of the config\n",
|
"of length %d, skipping remainder of the config\n",
|
||||||
cfgno, header->bLength);
|
cfgno, header->bLength);
|
||||||
break;
|
break;
|
||||||
|
@ -670,7 +670,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
|
|
||||||
d = (struct usb_interface_descriptor *) header;
|
d = (struct usb_interface_descriptor *) header;
|
||||||
if (d->bLength < USB_DT_INTERFACE_SIZE) {
|
if (d->bLength < USB_DT_INTERFACE_SIZE) {
|
||||||
dev_warn(ddev, "config %d has an invalid "
|
dev_notice(ddev, "config %d has an invalid "
|
||||||
"interface descriptor of length %d, "
|
"interface descriptor of length %d, "
|
||||||
"skipping\n", cfgno, d->bLength);
|
"skipping\n", cfgno, d->bLength);
|
||||||
continue;
|
continue;
|
||||||
|
@ -680,7 +680,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
|
|
||||||
if ((dev->quirks & USB_QUIRK_HONOR_BNUMINTERFACES) &&
|
if ((dev->quirks & USB_QUIRK_HONOR_BNUMINTERFACES) &&
|
||||||
n >= nintf_orig) {
|
n >= nintf_orig) {
|
||||||
dev_warn(ddev, "config %d has more interface "
|
dev_notice(ddev, "config %d has more interface "
|
||||||
"descriptors, than it declares in "
|
"descriptors, than it declares in "
|
||||||
"bNumInterfaces, ignoring interface "
|
"bNumInterfaces, ignoring interface "
|
||||||
"number: %d\n", cfgno, inum);
|
"number: %d\n", cfgno, inum);
|
||||||
|
@ -688,7 +688,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (inum >= nintf_orig)
|
if (inum >= nintf_orig)
|
||||||
dev_warn(ddev, "config %d has an invalid "
|
dev_notice(ddev, "config %d has an invalid "
|
||||||
"interface number: %d but max is %d\n",
|
"interface number: %d but max is %d\n",
|
||||||
cfgno, inum, nintf_orig - 1);
|
cfgno, inum, nintf_orig - 1);
|
||||||
|
|
||||||
|
@ -713,14 +713,14 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
|
|
||||||
d = (struct usb_interface_assoc_descriptor *)header;
|
d = (struct usb_interface_assoc_descriptor *)header;
|
||||||
if (d->bLength < USB_DT_INTERFACE_ASSOCIATION_SIZE) {
|
if (d->bLength < USB_DT_INTERFACE_ASSOCIATION_SIZE) {
|
||||||
dev_warn(ddev,
|
dev_notice(ddev,
|
||||||
"config %d has an invalid interface association descriptor of length %d, skipping\n",
|
"config %d has an invalid interface association descriptor of length %d, skipping\n",
|
||||||
cfgno, d->bLength);
|
cfgno, d->bLength);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (iad_num == USB_MAXIADS) {
|
if (iad_num == USB_MAXIADS) {
|
||||||
dev_warn(ddev, "found more Interface "
|
dev_notice(ddev, "found more Interface "
|
||||||
"Association Descriptors "
|
"Association Descriptors "
|
||||||
"than allocated for in "
|
"than allocated for in "
|
||||||
"configuration %d\n", cfgno);
|
"configuration %d\n", cfgno);
|
||||||
|
@ -731,7 +731,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
|
|
||||||
} else if (header->bDescriptorType == USB_DT_DEVICE ||
|
} else if (header->bDescriptorType == USB_DT_DEVICE ||
|
||||||
header->bDescriptorType == USB_DT_CONFIG)
|
header->bDescriptorType == USB_DT_CONFIG)
|
||||||
dev_warn(ddev, "config %d contains an unexpected "
|
dev_notice(ddev, "config %d contains an unexpected "
|
||||||
"descriptor of type 0x%X, skipping\n",
|
"descriptor of type 0x%X, skipping\n",
|
||||||
cfgno, header->bDescriptorType);
|
cfgno, header->bDescriptorType);
|
||||||
|
|
||||||
|
@ -740,11 +740,11 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
config->desc.wTotalLength = cpu_to_le16(buffer2 - buffer0);
|
config->desc.wTotalLength = cpu_to_le16(buffer2 - buffer0);
|
||||||
|
|
||||||
if (n != nintf)
|
if (n != nintf)
|
||||||
dev_warn(ddev, "config %d has %d interface%s, different from "
|
dev_notice(ddev, "config %d has %d interface%s, different from "
|
||||||
"the descriptor's value: %d\n",
|
"the descriptor's value: %d\n",
|
||||||
cfgno, n, plural(n), nintf_orig);
|
cfgno, n, plural(n), nintf_orig);
|
||||||
else if (n == 0)
|
else if (n == 0)
|
||||||
dev_warn(ddev, "config %d has no interfaces?\n", cfgno);
|
dev_notice(ddev, "config %d has no interfaces?\n", cfgno);
|
||||||
config->desc.bNumInterfaces = nintf = n;
|
config->desc.bNumInterfaces = nintf = n;
|
||||||
|
|
||||||
/* Check for missing interface numbers */
|
/* Check for missing interface numbers */
|
||||||
|
@ -754,7 +754,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (j >= nintf)
|
if (j >= nintf)
|
||||||
dev_warn(ddev, "config %d has no interface number "
|
dev_notice(ddev, "config %d has no interface number "
|
||||||
"%d\n", cfgno, i);
|
"%d\n", cfgno, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -762,7 +762,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
for (i = 0; i < nintf; ++i) {
|
for (i = 0; i < nintf; ++i) {
|
||||||
j = nalts[i];
|
j = nalts[i];
|
||||||
if (j > USB_MAXALTSETTING) {
|
if (j > USB_MAXALTSETTING) {
|
||||||
dev_warn(ddev, "too many alternate settings for "
|
dev_notice(ddev, "too many alternate settings for "
|
||||||
"config %d interface %d: %d, "
|
"config %d interface %d: %d, "
|
||||||
"using maximum allowed: %d\n",
|
"using maximum allowed: %d\n",
|
||||||
cfgno, inums[i], j, USB_MAXALTSETTING);
|
cfgno, inums[i], j, USB_MAXALTSETTING);
|
||||||
|
@ -811,7 +811,7 @@ static int usb_parse_configuration(struct usb_device *dev, int cfgidx,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (n >= intfc->num_altsetting)
|
if (n >= intfc->num_altsetting)
|
||||||
dev_warn(ddev, "config %d interface %d has no "
|
dev_notice(ddev, "config %d interface %d has no "
|
||||||
"altsetting %d\n", cfgno, inums[i], j);
|
"altsetting %d\n", cfgno, inums[i], j);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -868,7 +868,7 @@ int usb_get_configuration(struct usb_device *dev)
|
||||||
int result;
|
int result;
|
||||||
|
|
||||||
if (ncfg > USB_MAXCONFIG) {
|
if (ncfg > USB_MAXCONFIG) {
|
||||||
dev_warn(ddev, "too many configurations: %d, "
|
dev_notice(ddev, "too many configurations: %d, "
|
||||||
"using maximum allowed: %d\n", ncfg, USB_MAXCONFIG);
|
"using maximum allowed: %d\n", ncfg, USB_MAXCONFIG);
|
||||||
dev->descriptor.bNumConfigurations = ncfg = USB_MAXCONFIG;
|
dev->descriptor.bNumConfigurations = ncfg = USB_MAXCONFIG;
|
||||||
}
|
}
|
||||||
|
@ -902,7 +902,7 @@ int usb_get_configuration(struct usb_device *dev)
|
||||||
"descriptor/%s: %d\n", cfgno, "start", result);
|
"descriptor/%s: %d\n", cfgno, "start", result);
|
||||||
if (result != -EPIPE)
|
if (result != -EPIPE)
|
||||||
goto err;
|
goto err;
|
||||||
dev_err(ddev, "chopping to %d config(s)\n", cfgno);
|
dev_notice(ddev, "chopping to %d config(s)\n", cfgno);
|
||||||
dev->descriptor.bNumConfigurations = cfgno;
|
dev->descriptor.bNumConfigurations = cfgno;
|
||||||
break;
|
break;
|
||||||
} else if (result < 4) {
|
} else if (result < 4) {
|
||||||
|
@ -934,7 +934,7 @@ int usb_get_configuration(struct usb_device *dev)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
if (result < length) {
|
if (result < length) {
|
||||||
dev_warn(ddev, "config index %d descriptor too short "
|
dev_notice(ddev, "config index %d descriptor too short "
|
||||||
"(expected %i, got %i)\n", cfgno, length, result);
|
"(expected %i, got %i)\n", cfgno, length, result);
|
||||||
length = result;
|
length = result;
|
||||||
}
|
}
|
||||||
|
@ -993,7 +993,7 @@ int usb_get_bos_descriptor(struct usb_device *dev)
|
||||||
/* Get BOS descriptor */
|
/* Get BOS descriptor */
|
||||||
ret = usb_get_descriptor(dev, USB_DT_BOS, 0, bos, USB_DT_BOS_SIZE);
|
ret = usb_get_descriptor(dev, USB_DT_BOS, 0, bos, USB_DT_BOS_SIZE);
|
||||||
if (ret < USB_DT_BOS_SIZE || bos->bLength < USB_DT_BOS_SIZE) {
|
if (ret < USB_DT_BOS_SIZE || bos->bLength < USB_DT_BOS_SIZE) {
|
||||||
dev_err(ddev, "unable to get BOS descriptor or descriptor too short\n");
|
dev_notice(ddev, "unable to get BOS descriptor or descriptor too short\n");
|
||||||
if (ret >= 0)
|
if (ret >= 0)
|
||||||
ret = -ENOMSG;
|
ret = -ENOMSG;
|
||||||
kfree(bos);
|
kfree(bos);
|
||||||
|
@ -1021,7 +1021,7 @@ int usb_get_bos_descriptor(struct usb_device *dev)
|
||||||
|
|
||||||
ret = usb_get_descriptor(dev, USB_DT_BOS, 0, buffer, total_len);
|
ret = usb_get_descriptor(dev, USB_DT_BOS, 0, buffer, total_len);
|
||||||
if (ret < total_len) {
|
if (ret < total_len) {
|
||||||
dev_err(ddev, "unable to get BOS descriptor set\n");
|
dev_notice(ddev, "unable to get BOS descriptor set\n");
|
||||||
if (ret >= 0)
|
if (ret >= 0)
|
||||||
ret = -ENOMSG;
|
ret = -ENOMSG;
|
||||||
goto err;
|
goto err;
|
||||||
|
@ -1046,7 +1046,7 @@ int usb_get_bos_descriptor(struct usb_device *dev)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cap->bDescriptorType != USB_DT_DEVICE_CAPABILITY) {
|
if (cap->bDescriptorType != USB_DT_DEVICE_CAPABILITY) {
|
||||||
dev_warn(ddev, "descriptor type invalid, skip\n");
|
dev_notice(ddev, "descriptor type invalid, skip\n");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче