All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] USB:bugfix a controller halt error
@ 2023-07-21 10:00 liulongfang
  2023-07-21 11:08 ` Greg KH
  2023-07-21 14:57 ` Alan Stern
  0 siblings, 2 replies; 18+ messages in thread
From: liulongfang @ 2023-07-21 10:00 UTC (permalink / raw)
  To: gregkh; +Cc: linux-usb, linux-kernel

On systems that use ECC memory. The ECC error of the memory will
cause the USB controller to halt. It causes the usb_control_msg()
operation to fail.
At this point, the returned buffer data is an abnormal value, and
continuing to use it will lead to incorrect results.

Therefore, it is necessary to judge the return value and exit.

Signed-off-by: liulongfang <liulongfang@huawei.com>
---
 drivers/usb/core/hub.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c
index a739403a9e45..6a43198be263 100644
--- a/drivers/usb/core/hub.c
+++ b/drivers/usb/core/hub.c
@@ -4891,6 +4891,16 @@ hub_port_init(struct usb_hub *hub, struct usb_device *udev, int port1,
 					USB_DT_DEVICE << 8, 0,
 					buf, GET_DESCRIPTOR_BUFSIZE,
 					initial_descriptor_timeout);
+				/* On systems that use ECC memory, ECC errors can
+				 * cause the USB controller to halt.
+				 * It causes this operation to fail. At this time,
+				 * the buf data is an abnormal value and needs to be exited.
+				 */
+				if (r < 0) {
+					kfree(buf);
+					goto fail;
+				}
+
 				switch (buf->bMaxPacketSize0) {
 				case 8: case 16: case 32: case 64: case 255:
 					if (buf->bDescriptorType ==
-- 
2.24.0


^ permalink raw reply related	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2023-08-10  1:20 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-07-21 10:00 [PATCH] USB:bugfix a controller halt error liulongfang
2023-07-21 11:08 ` Greg KH
2023-07-26  6:44   ` liulongfang
2023-07-26  7:18     ` Greg KH
2023-07-26 11:16       ` Oliver Neukum
2023-07-27  7:00         ` liulongfang
2023-07-27  8:46           ` Oliver Neukum
2023-07-27  4:02       ` liulongfang
2023-07-21 14:57 ` Alan Stern
2023-07-24 12:35   ` Oliver Neukum
2023-07-26  6:58   ` liulongfang
2023-07-26 14:20     ` Alan Stern
2023-07-27  7:03       ` liulongfang
2023-07-27  8:47         ` Oliver Neukum
2023-07-27 14:42         ` Alan Stern
2023-07-27 15:31           ` Oliver Neukum
2023-07-27 15:57             ` Alan Stern
2023-08-10  1:20               ` liulongfang

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.