11 Aug, 2020

4 commits

  • commit ec37198acca7b4c17b96247697406e47aafe0605 upstream.

    I've confirmed that the ASMedia ASM1142 has the same problem as the
    ASM2142/ASM3142, in that it too reports that it supports 64-bit DMA
    addresses when in fact it does not. As with the ASM2142/ASM3142, this
    can cause problems on systems where the upper bits matter, and adding
    the XHCI_NO_64BIT_SUPPORT quirk completely fixes the issue.

    Acked-by: Mathias Nyman
    Signed-off-by: Forest Crossman
    Cc: stable
    Link: https://lore.kernel.org/r/20200728042408.180529-3-cyrozap@gmail.com
    Signed-off-by: Greg Kroah-Hartman

    Forest Crossman
     
  • commit 1841cb255da41e87bed9573915891d056f80e2e7 upstream.

    Not all ASMedia host controllers have a device ID that matches its part
    number. #define some of these IDs to make it clearer at a glance which
    chips require what quirks.

    Acked-by: Mathias Nyman
    Signed-off-by: Forest Crossman
    Link: https://lore.kernel.org/r/20200728042408.180529-2-cyrozap@gmail.com
    Cc: stable
    Signed-off-by: Greg Kroah-Hartman

    Forest Crossman
     
  • commit 17a82716587e9d7c3b246a789add490b2b5dcab6 upstream.

    In previous patches that added support for new iowarrior devices, the
    handling of the report size was not done correct.

    Fix that up and update the copyright date for the driver

    Reworked from an original patch written by Christoph Jung.

    Fixes: bab5417f5f01 ("USB: misc: iowarrior: add support for the 100 device")
    Fixes: 5f6f8da2d7b5 ("USB: misc: iowarrior: add support for the 28 and 28L devices")
    Fixes: 461d8deb26a7 ("USB: misc: iowarrior: add support for 2 OEMed devices")
    Cc: stable
    Reported-by: Christoph Jung
    Link: https://lore.kernel.org/r/20200726094939.1268978-1-gregkh@linuxfoundation.org
    Signed-off-by: Greg Kroah-Hartman

    Greg Kroah-Hartman
     
  • commit d2a4309c1ab6df424b2239fe2920d6f26f808d17 upstream.

    When running qmi-firmware-update on the Sierra Wireless EM7305 in a Toshiba
    laptop, it changed product ID to 0x9062 when entering QDL mode:

    usb 2-4: new high-speed USB device number 78 using xhci_hcd
    usb 2-4: New USB device found, idVendor=1199, idProduct=9062, bcdDevice= 0.00
    usb 2-4: New USB device strings: Mfr=1, Product=2, SerialNumber=0
    usb 2-4: Product: EM7305
    usb 2-4: Manufacturer: Sierra Wireless, Incorporated

    The upgrade could complete after running
    # echo 1199 9062 > /sys/bus/usb-serial/drivers/qcserial/new_id

    qcserial 2-4:1.0: Qualcomm USB modem converter detected
    usb 2-4: Qualcomm USB modem converter now attached to ttyUSB0

    Signed-off-by: Erik Ekman
    Link: https://lore.kernel.org/r/20200717185118.3640219-1-erik@kryo.se
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Erik Ekman
     

29 Jul, 2020

7 commits


22 Jul, 2020

13 commits

  • commit da6902e5b6dbca9081e3d377f9802d4fd0c5ea59 upstream.

    Add support for Quectel Wireless Solutions Co., Ltd. EG95 LTE modem

    T: Bus=01 Lev=01 Prnt=01 Port=02 Cnt=02 Dev#= 5 Spd=480 MxCh= 0
    D: Ver= 2.00 Cls=ef(misc ) Sub=02 Prot=01 MxPS=64 #Cfgs= 1
    P: Vendor=2c7c ProdID=0195 Rev=03.18
    S: Manufacturer=Android
    S: Product=Android
    C: #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I: If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)
    I: If#=0x1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    I: If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    I: If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=(none)
    I: If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=(none)

    Signed-off-by: AceLan Kao
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    AceLan Kao
     
  • commit 08d4ef5cc9203a113702f24725f6cf4db476c958 upstream.

    Add USB IDs for GosunCn GM500 series cellular modules.

    RNDIS config:
    usb-devices
    T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 12 Spd=480 MxCh= 0
    D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
    P: Vendor=305a ProdID=1404 Rev=03.18
    S: Manufacturer=Android
    S: Product=Android
    S: SerialNumber=
    C: #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I: If#=0x0 Alt= 0 #EPs= 1 Cls=e0(wlcon) Sub=01 Prot=03 Driver=rndis_host
    I: If#=0x1 Alt= 0 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=rndis_host
    I: If#=0x2 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I: If#=0x3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I: If#=0x4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option

    MBIM config:
    usb-devices
    T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 11 Spd=480 MxCh= 0
    D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
    P: Vendor=305a ProdID=1405 Rev=03.18
    S: Manufacturer=Android
    S: Product=Android
    S: SerialNumber=
    C: #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I: If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I: If#=0x1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I: If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I: If#=0x3 Alt= 0 #EPs= 1 Cls=02(commc) Sub=0e Prot=00 Driver=cdc_mbim
    I: If#=0x4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=02 Driver=cdc_mbim

    ECM config:
    usb-devices
    T: Bus=01 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 13 Spd=480 MxCh= 0
    D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
    P: Vendor=305a ProdID=1406 Rev=03.18
    S: Manufacturer=Android
    S: Product=Android
    S: SerialNumber=
    C: #Ifs= 5 Cfg#= 1 Atr=a0 MxPwr=500mA
    I: If#=0x0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
    I: If#=0x1 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I: If#=0x2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
    I: If#=0x3 Alt= 0 #EPs= 1 Cls=02(commc) Sub=06 Prot=00 Driver=cdc_ether
    I: If#=0x4 Alt= 1 #EPs= 2 Cls=0a(data ) Sub=00 Prot=00 Driver=cdc_ether

    Signed-off-by: Jörgen Storvist
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Jörgen Storvist
     
  • commit 5d0136f8e79f8287e6a36780601f0ce797cf11c2 upstream.

    Add PID for CH340 that's found on some ESP8266 dev boards made by
    LilyGO. The specific device that contains such serial converter can be
    seen here: https://github.com/LilyGO/LILYGO-T-OI.

    Apparently, it's a regular CH340, but I've confirmed with others that
    also bought this board that the PID found on this device (0x7522)
    differs from other devices with the "same" converter (0x7523).
    Simply adding its PID to the driver and rebuilding it made it work
    as expected.

    Signed-off-by: Igor Moura
    Cc: stable@vger.kernel.org
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Igor Moura
     
  • commit 5c45d04c5081c1830d674f4d22d4400ea2083afe upstream.

    This is a UPB (Universal Powerline Bus) PIM (Powerline Interface Module)
    which allows for controlling multiple UPB compatible devices from Linux
    using the standard serial interface.

    Based on vendor application source code there are two different models
    of USB based PIM devices in addition to a number of RS232 based PIM's.

    The vendor UPB application source contains the following USB ID's:

    #define USB_PCS_VENDOR_ID 0x04b4
    #define USB_PCS_PIM_PRODUCT_ID 0x5500

    #define USB_SAI_VENDOR_ID 0x17dd
    #define USB_SAI_PIM_PRODUCT_ID 0x5500

    The first set of ID's correspond to the PIM variant sold by Powerline
    Control Systems while the second corresponds to the Simply Automated
    Incorporated PIM. As the product ID for both of these match the default
    cypress HID->COM RS232 product ID it assumed that they both use an
    internal variant of this HID->COM RS232 converter hardware. However
    as the vendor ID for the Simply Automated variant is different we need
    to also add it to the cypress_M8 driver so that it is properly
    detected.

    Signed-off-by: James Hilliard
    Link: https://lore.kernel.org/r/20200616220403.1807003-1-james.hilliard1@gmail.com
    Cc: stable@vger.kernel.org
    [ johan: amend VID define entry ]
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    James Hilliard
     
  • commit e7b931bee739e8a77ae216e613d3b99342b6dec0 upstream.

    The driver would happily overwrite its write buffer with user data in
    256 byte increments due to a removed buffer-space sanity check.

    Fixes: 5fcf62b0f1f2 ("tty: iuu_phoenix: fix locking.")
    Cc: stable # 2.6.31
    Signed-off-by: Johan Hovold
    Signed-off-by: Greg Kroah-Hartman

    Johan Hovold
     
  • commit 8778eb0927ddcd3f431805c37b78fa56481aeed9 upstream.

    Add a missing spinlock protection for play_queue, because
    the play_queue may be destroyed when the "playback_work"
    work func and "f_audio_out_ep_complete" callback func
    operate this paly_queue at the same time.

    Fixes: c6994e6f067cf ("USB: gadget: add USB Audio Gadget driver")
    Cc: stable
    Signed-off-by: Zhang Qiang
    Signed-off-by: Felipe Balbi
    Signed-off-by: Greg Kroah-Hartman

    Zhang Qiang
     
  • commit 876d4e1e8298ad1f94d9e9392fc90486755437b4 upstream.

    If wakeup event occurred by extcon event, it needs to call
    ci_irq again since the first ci_irq calling at extcon notifier
    only wakes up controller, but do noop for event handling,
    it causes the extcon use case can't work well from low power mode.

    Cc:
    Fixes: 3ecb3e09b042 ("usb: chipidea: Use extcon framework for VBUS and ID detect")
    Reported-by: Philippe Schenker
    Tested-by: Philippe Schenker
    Signed-off-by: Peter Chen
    Link: https://lore.kernel.org/r/20200707060601.31907-2-peter.chen@kernel.org
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Greg Kroah-Hartman

    Peter Chen
     
  • commit 4fdf228cdf6925af45a2066d403821e0977bfddb upstream.

    To avoid lot of interrupts from dwc2 core, which can be asserted in
    specific conditions need to disable interrupts on HW level instead of
    disable IRQs on Kernel level, because of IRQ can be shared between
    drivers.

    Cc: stable@vger.kernel.org
    Fixes: a40a00318c7fc ("usb: dwc2: add shutdown callback to platform variant")
    Tested-by: Frank Mori Hess
    Reviewed-by: Alan Stern
    Reviewed-by: Doug Anderson
    Reviewed-by: Frank Mori Hess
    Signed-off-by: Minas Harutyunyan
    Signed-off-by: Felipe Balbi
    Signed-off-by: Greg Kroah-Hartman

    Minas Harutyunyan
     
  • commit 211f08347355cba1f769bbf3355816a12b3ddd55 upstream.

    clang static analysis flags this error

    c67x00-sched.c:489:55: warning: Use of memory after it is freed [unix.Malloc]
    usb_hcd_giveback_urb(c67x00_hcd_to_hcd(c67x00), urb, urbp->status);
    ^~~~~~~~~~~~
    Problem happens in this block of code

    c67x00_release_urb(c67x00, urb);
    usb_hcd_unlink_urb_from_ep(c67x00_hcd_to_hcd(c67x00), urb);
    spin_unlock(&c67x00->lock);
    usb_hcd_giveback_urb(c67x00_hcd_to_hcd(c67x00), urb, urbp->status);

    In the call to c67x00_release_urb has this freeing of urbp

    urbp = urb->hcpriv;
    urb->hcpriv = NULL;
    list_del(&urbp->hep_node);
    kfree(urbp);

    And so urbp is freed before usb_hcd_giveback_urb uses it as its 3rd
    parameter.

    Since all is required is the status, pass the status directly as is
    done in c64x00_urb_dequeue

    Fixes: e9b29ffc519b ("USB: add Cypress c67x00 OTG controller HCD driver")
    Signed-off-by: Tom Rix
    Cc: stable
    Link: https://lore.kernel.org/r/20200708131243.24336-1-trix@redhat.com
    Signed-off-by: Greg Kroah-Hartman

    Tom Rix
     
  • [ Upstream commit 30517ffeb3bff842e1355cbc32f1959d9dbb5414 ]

    Fixed commit moved the assignment of 'req', but did not update a
    reference in the DBG() call. Use the argument as it was renamed.

    Fixes: 5fb694f96e7c ("usb: gadget: udc: atmel: fix possible oops when unloading module")
    Signed-off-by: Michał Mirosław
    Signed-off-by: Felipe Balbi
    Signed-off-by: Sasha Levin

    Michał Mirosław
     
  • This reverts commit 57a1cd87efb9279ab58aae2e5c41920150e31873.

    Eugeniu Rosca writes:

    On Thu, Jul 09, 2020 at 09:00:23AM +0200, Eugeniu Rosca wrote:
    >After integrating v4.14.186 commit 5410d158ca2a50 ("usb/ehci-platform:
    >Set PM runtime as active on resume") into downstream v4.14.x, we started
    >to consistently experience below panic [1] on every second s2ram of
    >R-Car H3 Salvator-X Renesas reference board.
    >
    >After some investigations, we concluded the following:
    > - the issue does not exist in vanilla v5.8-rc4+
    > - [bisecting shows that] the panic on v4.14.186 is caused by the lack
    > of v5.6-rc1 commit 987351e1ea7772 ("phy: core: Add consumer device
    > link support"). Getting evidence for that is easy. Reverting
    > 987351e1ea7772 in vanilla leads to a similar backtrace [2].
    >
    >Questions:
    > - Backporting 987351e1ea7772 ("phy: core: Add consumer device
    > link support") to v4.14.187 looks challenging enough, so probably not
    > worth it. Anybody to contradict this?
    > - Assuming no plans to backport the missing mainline commit to v4.14.x,
    > should the following three v4.14.186 commits be reverted on v4.14.x?
    > * baef809ea497a4 ("usb/ohci-platform: Fix a warning when hibernating")
    > * 9f33eff4958885 ("usb/xhci-plat: Set PM runtime as active on resume")
    > * 5410d158ca2a50 ("usb/ehci-platform: Set PM runtime as active on resume")

    Signed-off-by: Sasha Levin

    Sasha Levin
     
  • This reverts commit 335d720bb4bd9d2808cae5af6f3c636c87f19596.

    Eugeniu Rosca writes:

    On Thu, Jul 09, 2020 at 09:00:23AM +0200, Eugeniu Rosca wrote:
    >After integrating v4.14.186 commit 5410d158ca2a50 ("usb/ehci-platform:
    >Set PM runtime as active on resume") into downstream v4.14.x, we started
    >to consistently experience below panic [1] on every second s2ram of
    >R-Car H3 Salvator-X Renesas reference board.
    >
    >After some investigations, we concluded the following:
    > - the issue does not exist in vanilla v5.8-rc4+
    > - [bisecting shows that] the panic on v4.14.186 is caused by the lack
    > of v5.6-rc1 commit 987351e1ea7772 ("phy: core: Add consumer device
    > link support"). Getting evidence for that is easy. Reverting
    > 987351e1ea7772 in vanilla leads to a similar backtrace [2].
    >
    >Questions:
    > - Backporting 987351e1ea7772 ("phy: core: Add consumer device
    > link support") to v4.14.187 looks challenging enough, so probably not
    > worth it. Anybody to contradict this?
    > - Assuming no plans to backport the missing mainline commit to v4.14.x,
    > should the following three v4.14.186 commits be reverted on v4.14.x?
    > * baef809ea497a4 ("usb/ohci-platform: Fix a warning when hibernating")
    > * 9f33eff4958885 ("usb/xhci-plat: Set PM runtime as active on resume")
    > * 5410d158ca2a50 ("usb/ehci-platform: Set PM runtime as active on resume")

    Signed-off-by: Sasha Levin

    Sasha Levin
     
  • This reverts commit fbf719e5da126c6b391ea7b1f38d4493582d8aaf.

    Eugeniu Rosca writes:

    On Thu, Jul 09, 2020 at 09:00:23AM +0200, Eugeniu Rosca wrote:
    >After integrating v4.14.186 commit 5410d158ca2a50 ("usb/ehci-platform:
    >Set PM runtime as active on resume") into downstream v4.14.x, we started
    >to consistently experience below panic [1] on every second s2ram of
    >R-Car H3 Salvator-X Renesas reference board.
    >
    >After some investigations, we concluded the following:
    > - the issue does not exist in vanilla v5.8-rc4+
    > - [bisecting shows that] the panic on v4.14.186 is caused by the lack
    > of v5.6-rc1 commit 987351e1ea7772 ("phy: core: Add consumer device
    > link support"). Getting evidence for that is easy. Reverting
    > 987351e1ea7772 in vanilla leads to a similar backtrace [2].
    >
    >Questions:
    > - Backporting 987351e1ea7772 ("phy: core: Add consumer device
    > link support") to v4.14.187 looks challenging enough, so probably not
    > worth it. Anybody to contradict this?
    > - Assuming no plans to backport the missing mainline commit to v4.14.x,
    > should the following three v4.14.186 commits be reverted on v4.14.x?
    > * baef809ea497a4 ("usb/ohci-platform: Fix a warning when hibernating")
    > * 9f33eff4958885 ("usb/xhci-plat: Set PM runtime as active on resume")
    > * 5410d158ca2a50 ("usb/ehci-platform: Set PM runtime as active on resume")

    Signed-off-by: Sasha Levin

    Sasha Levin
     

16 Jul, 2020

1 commit


09 Jul, 2020

1 commit

  • [ Upstream commit 28ebeb8db77035e058a510ce9bd17c2b9a009dba ]

    BUG: memory leak
    unreferenced object 0xffff888055046e00 (size 256):
    comm "kworker/2:9", pid 2570, jiffies 4294942129 (age 1095.500s)
    hex dump (first 32 bytes):
    00 70 04 55 80 88 ff ff 18 bb 5a 81 ff ff ff ff .p.U......Z.....
    f5 96 78 81 ff ff ff ff 37 de 8e 81 ff ff ff ff ..x.....7.......
    backtrace:
    [] kmemleak_alloc_recursive
    include/linux/kmemleak.h:43 [inline]
    [] slab_post_alloc_hook mm/slab.h:586 [inline]
    [] slab_alloc_node mm/slub.c:2786 [inline]
    [] slab_alloc mm/slub.c:2794 [inline]
    [] kmem_cache_alloc_trace+0x15e/0x2d0 mm/slub.c:2811
    [] kmalloc include/linux/slab.h:555 [inline]
    [] usbtest_probe+0x286/0x19d0
    drivers/usb/misc/usbtest.c:2790
    [] usb_probe_interface+0x2bd/0x870
    drivers/usb/core/driver.c:361
    [] really_probe+0x48d/0x8f0 drivers/base/dd.c:551
    [] driver_probe_device+0xfc/0x2a0 drivers/base/dd.c:724
    [] __device_attach_driver+0x1b6/0x240
    drivers/base/dd.c:831
    [] bus_for_each_drv+0x14e/0x1e0 drivers/base/bus.c:431
    [] __device_attach+0x1f9/0x350 drivers/base/dd.c:897
    [] device_initial_probe+0x1a/0x20 drivers/base/dd.c:944
    [] bus_probe_device+0x1e1/0x280 drivers/base/bus.c:491
    [] device_add+0x131d/0x1c40 drivers/base/core.c:2504
    [] usb_set_configuration+0xe84/0x1ab0
    drivers/usb/core/message.c:2030
    [] generic_probe+0x6a/0xe0 drivers/usb/core/generic.c:210
    [] usb_probe_device+0x90/0xd0
    drivers/usb/core/driver.c:266
    [] really_probe+0x48d/0x8f0 drivers/base/dd.c:551
    [] driver_probe_device+0xfc/0x2a0 drivers/base/dd.c:724

    Acked-by: Alan Stern
    Reported-by: Kyungtae Kim
    Signed-off-by: Zqiang
    Link: https://lore.kernel.org/r/20200612035210.20494-1-qiang.zhang@windriver.com
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin

    Zqiang
     

01 Jul, 2020

14 commits

  • [ Upstream commit ea0efd687b01355cd799c8643d0c636ba4859ffc ]

    This driver assumed that dmaengine_tx_status() could return
    the residue even if the transfer was completed. However,
    this was not correct usage [1] and this caused to break getting
    the residue after the commit 24461d9792c2 ("dmaengine:
    virt-dma: Fix access after free in vchan_complete()") actually.
    So, this is possible to get wrong received size if the usb
    controller gets a short packet. For example, g_zero driver
    causes "bad OUT byte" errors.

    The usb-dmac driver will support the callback_result, so this
    driver can use it to get residue correctly. Note that even if
    the usb-dmac driver has not supported the callback_result yet,
    this patch doesn't cause any side-effects.

    [1]
    https://lore.kernel.org/dmaengine/20200616165550.GP2324254@vkoul-mobl/

    Reported-by: Hien Dang
    Fixes: 24461d9792c2 ("dmaengine: virt-dma: Fix access after free in vchan_complete()")
    Signed-off-by: Yoshihiro Shimoda
    Link: https://lore.kernel.org/r/1592482277-19563-1-git-send-email-yoshihiro.shimoda.uh@renesas.com
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Sasha Levin

    Yoshihiro Shimoda
     
  • [ Upstream commit e55f3c37cb8d31c7e301f46396b2ac6a19eb3a7c ]

    If this is in "transceiver" mode the the ->qwork isn't required and is
    a NULL pointer. This can lead to a NULL dereference when we call
    destroy_workqueue(udc->qwork).

    Fixes: 3517c31a8ece ("usb: gadget: mv_udc: use devm_xxx for probe")
    Signed-off-by: Dan Carpenter
    Signed-off-by: Felipe Balbi
    Signed-off-by: Sasha Levin

    Dan Carpenter
     
  • commit 03894573f2913181ee5aae0089f333b2131f2d4b upstream.

    USB_DEVICE(0x0424, 0x274e) can send data before cdc_acm is ready,
    causing garbage chars on the TTY causing stray input to the shell
    and/or login prompt.

    Signed-off-by: Joakim Tjernlund
    Cc: stable@vger.kernel.org
    Acked-by: Oliver Neukum
    Link: https://lore.kernel.org/r/20200605105418.22263-1-joakim.tjernlund@infinera.com
    Signed-off-by: Greg Kroah-Hartman

    Joakim Tjernlund
     
  • commit f0c472a6da51f9fac15e80fe2fd9c83b68754cff upstream.

    Just return if xHCI is quirked to disable LPM. We can save some time
    from reading registers and doing spinlocks.

    Add stable tag as we want this patch together with the next one,
    "Poll for U0 after disabling USB2 LPM" which fixes a suspend issue
    for some USB2 LPM devices

    Cc: stable@vger.kernel.org
    Signed-off-by: Kai-Heng Feng
    Signed-off-by: Mathias Nyman
    Link: https://lore.kernel.org/r/20200624135949.22611-5-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Greg Kroah-Hartman

    Kai-Heng Feng
     
  • commit a73d9d9cfc3cfceabd91fb0b0c13e4062b6dbcd7 upstream.

    Unable to complete the enumeration of a USB TV Tuner device.

    Per XHCI spec (4.6.5), the EP state field of the input context shall
    be cleared for a set address command. In the special case of an FS
    device that has "MaxPacketSize0 = 8", the Linux XHCI driver does
    not do this before evaluating the context. With an XHCI controller
    that checks the EP state field for parameter context error this
    causes a problem in cases such as the device getting reset again
    after enumeration.

    When that field is cleared, the problem does not occur.

    This was found and fixed by Sasi Kumar.

    Cc: stable@vger.kernel.org
    Signed-off-by: Al Cooper
    Signed-off-by: Mathias Nyman
    Link: https://lore.kernel.org/r/20200624135949.22611-3-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Greg Kroah-Hartman

    Al Cooper
     
  • commit dceea67058fe22075db3aed62d5cb62092be5053 upstream.

    EP_STATE_MASK should be 0x7 instead of 0xf

    xhci spec 6.2.3 shows that the EP state field in the endpoint context data
    structure consist of bits [2:0].
    The old value included a bit from the next field which fortunately is a
    RsvdZ region. So hopefully this hasn't caused too much harm

    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman
    Link: https://lore.kernel.org/r/20200624135949.22611-2-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman
    Signed-off-by: Greg Kroah-Hartman

    Mathias Nyman
     
  • commit 2587a029fa2a877d0a8dda955ef1b24c94b4bd0e upstream.

    The other thread may access other endpoints when the cdns3_check_new_setup
    is handling, add spinlock to protect it.

    Cc:
    Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver")
    Reviewed-by: Pawel Laszczak
    Signed-off-by: Peter Chen
    Signed-off-by: Felipe Balbi
    Signed-off-by: Greg Kroah-Hartman

    Peter Chen
     
  • commit b51e1cf64f93acebb6d8afbacd648a6ecefc39b4 upstream.

    The 'tmode' is ctrl->wIndex, changing it as the real test
    mode value for register assignment.

    Cc:
    Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver")
    Reviewed-by: Jun Li
    Signed-off-by: Peter Chen
    Signed-off-by: Felipe Balbi
    Signed-off-by: Greg Kroah-Hartman

    Peter Chen
     
  • commit ba3a80fe0fb67d8790f62b7bc60df97406d89871 upstream.

    It should use the correct direction value from register, not depends
    on previous software setting. It fixed the EP number wrong issue at
    trace when the TRBERR interrupt occurs for EP0IN.

    When the EP0IN IOC has finished, software prepares the setup packet
    request, the expected direction is OUT, but at that time, the TRBERR
    for EP0IN may occur since it is DMULT mode, the DMA does not stop
    until TRBERR has met.

    Cc:
    Fixes: 7733f6c32e36 ("usb: cdns3: Add Cadence USB3 DRD Driver")
    Reviewed-by: Pawel Laszczak
    Signed-off-by: Peter Chen
    Signed-off-by: Felipe Balbi
    Signed-off-by: Greg Kroah-Hartman

    Peter Chen
     
  • commit 302c570bf36e997d55ad0d60628a2feec76954a4 upstream.

    John reported screaming irq caused by rt1711h when system boot[1],
    this is because irq request is done before tcpci_register_port(),
    so the chip->tcpci has not been setup, irq handler is entered but
    can't do anything, this patch is to address this by moving the irq
    request after tcpci_register_port().

    [1] https://lore.kernel.org/linux-usb/20200530040157.31038-1-john.stultz@linaro.org

    Fixes: ce08eaeb6388 ("staging: typec: rt1711h typec chip driver")
    Cc: stable # v4.18+
    Cc: John Stultz
    Reported-and-tested-by: John Stultz
    Reviewed-by: Guenter Roeck
    Reviewed-by: Heikki Krogerus
    Signed-off-by: Li Jun
    Link: https://lore.kernel.org/r/20200604112118.38062-1-jun.li@nxp.com
    Signed-off-by: Greg Kroah-Hartman

    Li Jun
     
  • commit 44ed240d62736ad29943ec01e41e194b96f7c5e9 upstream.

    If the function platform_get_irq() failed, the negative value
    returned will not be detected here. So fix error handling in
    exynos_ehci_probe(). And when get irq failed, the function
    platform_get_irq() logs an error message, so remove redundant
    message here.

    Fixes: 1bcc5aa87f04 ("USB: Add initial S5P EHCI driver")
    Cc: stable
    Signed-off-by: Zhang Shengju
    Signed-off-by: Tang Bin
    Link: https://lore.kernel.org/r/20200602114708.28620-1-tangbin@cmss.chinamobile.com
    Signed-off-by: Greg Kroah-Hartman

    Tang Bin
     
  • commit b3d71abd135e6919ca0b6cab463738472653ddfb upstream.

    USB2 devices with LPM enabled may interrupt the system suspend:
    [ 932.510475] usb 1-7: usb suspend, wakeup 0
    [ 932.510549] hub 1-0:1.0: hub_suspend
    [ 932.510581] usb usb1: bus suspend, wakeup 0
    [ 932.510590] xhci_hcd 0000:00:14.0: port 9 not suspended
    [ 932.510593] xhci_hcd 0000:00:14.0: port 8 not suspended
    ..
    [ 932.520323] xhci_hcd 0000:00:14.0: Port change event, 1-7, id 7, portsc: 0x400e03
    ..
    [ 932.591405] PM: pci_pm_suspend(): hcd_pci_suspend+0x0/0x30 returns -16
    [ 932.591414] PM: dpm_run_callback(): pci_pm_suspend+0x0/0x160 returns -16
    [ 932.591418] PM: Device 0000:00:14.0 failed to suspend async: error -16

    During system suspend, USB core will let HC suspends the device if it
    doesn't have remote wakeup enabled and doesn't have any children.
    However, from the log above we can see that the usb 1-7 doesn't get bus
    suspended due to not in U0. After a while the port finished U2 -> U0
    transition, interrupts the suspend process.

    The observation is that after disabling LPM, port doesn't transit to U0
    immediately and can linger in U2. xHCI spec 4.23.5.2 states that the
    maximum exit latency for USB2 LPM should be BESL + 10us. The BESL for
    the affected device is advertised as 400us, which is still not enough
    based on my testing result.

    So let's use the maximum permitted latency, 10000, to poll for U0
    status to solve the issue.

    Cc: stable@vger.kernel.org
    Signed-off-by: Kai-Heng Feng
    Signed-off-by: Mathias Nyman
    Link: https://lore.kernel.org/r/20200624135949.22611-6-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman

    Kai-Heng Feng
     
  • commit a24d5072e87457a14023ee1dd3fc8b1e76f899ef upstream.

    When runtime suspend was enabled, runtime suspend might happen
    when xhci is removing hcd. This might cause kernel panic when hcd
    has been freed but runtime pm suspend related handle need to
    reference it.

    Signed-off-by: Macpaul Lin
    Reviewed-by: Chunfeng Yun
    Cc: stable@vger.kernel.org
    Signed-off-by: Mathias Nyman
    Link: https://lore.kernel.org/r/20200624135949.22611-4-mathias.nyman@linux.intel.com
    Signed-off-by: Greg Kroah-Hartman

    Macpaul Lin
     
  • commit 1ddcb71a3edf0e1682b6e056158e4c4b00325f66 upstream.

    A Synopsys USB2.0 core used in Huawei Kunpeng920 SoC has a bug which
    might cause the host controller not issuing ping.

    Bug description:
    After indicating an Interrupt on Async Advance, the software uses the
    doorbell mechanism to delete the Next Link queue head of the last
    executed queue head. At this time, the host controller still references
    the removed queue head(the queue head is NULL). NULL reference causes
    the host controller to lose the USB device.

    Solution:
    After deleting the Next Link queue head, when has_synopsys_hc_bug set
    to 1,the software can write one of the valid queue head addresses to
    the ASYNCLISTADDR register to allow the host controller to get
    the valid queue head. in order to solve that problem, this patch set
    the flag for Huawei Kunpeng920

    There are detailed instructions and solutions in this patch:
    commit 2f7ac6c19997 ("USB: ehci: add workaround for Synopsys HC bug")

    Signed-off-by: Longfang Liu
    Cc: stable
    Acked-by: Alan Stern
    Link: https://lore.kernel.org/r/1591588019-44284-1-git-send-email-liulongfang@huawei.com
    Signed-off-by: Greg Kroah-Hartman

    Longfang Liu