lkml.org 
[lkml]   [2023]   [Jul]   [21]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH] USB:bugfix a controller halt error
    Date
    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
    \
     
     \ /
      Last update: 2023-07-21 12:03    [W:4.444 / U:0.008 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site