]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/commitdiff
NFC: pn533: fix bulk-message timeout
authorJohan Hovold <johan@kernel.org>
Mon, 13 Jan 2020 17:23:58 +0000 (18:23 +0100)
committerKhalid Elmously <khalid.elmously@canonical.com>
Fri, 14 Feb 2020 05:29:37 +0000 (00:29 -0500)
BugLink: https://bugs.launchpad.net/bugs/1862259
commit a112adafcb47760feff959ee1ecd10b74d2c5467 upstream.

The driver was doing a synchronous uninterruptible bulk-transfer without
using a timeout. This could lead to the driver hanging on probe due to a
malfunctioning (or malicious) device until the device is physically
disconnected. While sleeping in probe the driver prevents other devices
connected to the same hub from being added to (or removed from) the bus.

An arbitrary limit of five seconds should be more than enough.

Fixes: dbafc28955fa ("NFC: pn533: don't send USB data off of the stack")
Signed-off-by: Johan Hovold <johan@kernel.org>
Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: Kamal Mostafa <kamal@canonical.com>
Signed-off-by: Khalid Elmously <khalid.elmously@canonical.com>
drivers/nfc/pn533/usb.c

index fcb57d64d97e60d37dbc30364a4fc5d222f4d1a4..a2c9b3f3bc2322a7504cdcdb96ba8bf144fcc4ec 100644 (file)
@@ -403,7 +403,7 @@ static int pn533_acr122_poweron_rdr(struct pn533_usb_phy *phy)
                       cmd, sizeof(cmd), false);
 
        rc = usb_bulk_msg(phy->udev, phy->out_urb->pipe, buffer, sizeof(cmd),
-                         &transferred, 0);
+                         &transferred, 5000);
        kfree(buffer);
        if (rc || (transferred != sizeof(cmd))) {
                nfc_err(&phy->udev->dev,