NFC: pn533: fix bulk-message timeout
authorJohan Hovold <johan@kernel.org>
Mon, 13 Jan 2020 17:23:58 +0000 (18:23 +0100)
committerJakub Kicinski <kuba@kernel.org>
Tue, 14 Jan 2020 02:50:18 +0000 (18:50 -0800)
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>
drivers/nfc/pn533/usb.c

index 4590fbf82dc2a486709d8904f4288fd06e395712..f5bb7ace2ff57857d88ea28dc89a4923fc033a18 100644 (file)
@@ -391,7 +391,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,