]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
usb: misc: ljca: move usb_autopm_put_interface() after wait for response
authorStanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Tue, 12 Nov 2024 07:55:12 +0000 (08:55 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 12 Nov 2024 11:17:20 +0000 (12:17 +0100)
Do not mark interface as ready to suspend when we are still waiting
for response messages from the device.

Fixes: acd6199f195d ("usb: Add support for Intel LJCA device")
Cc: stable@vger.kernel.org
Reviewed-by: Hans de Goede <hdegoede@redhat.com>
Tested-by: Hans de Goede <hdegoede@redhat.com> # ThinkPad X1 Yoga Gen 8, ov2740
Acked-by: Sakari Ailus <sakari.ailus@linux.intel.com>
Signed-off-by: Stanislaw Gruszka <stanislaw.gruszka@linux.intel.com>
Link: https://lore.kernel.org/r/20241112075514.680712-1-stanislaw.gruszka@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/usb/misc/usb-ljca.c

index 01ceafc4ab78ce28ffae8372c58a745247a2ff6b..8056c65e4548f78db81088ddfa34ce7231e174d5 100644 (file)
@@ -332,14 +332,11 @@ static int ljca_send(struct ljca_adapter *adap, u8 type, u8 cmd,
 
        ret = usb_bulk_msg(adap->usb_dev, adap->tx_pipe, header,
                           msg_len, &transferred, LJCA_WRITE_TIMEOUT_MS);
-
-       usb_autopm_put_interface(adap->intf);
-
        if (ret < 0)
-               goto out;
+               goto out_put;
        if (transferred != msg_len) {
                ret = -EIO;
-               goto out;
+               goto out_put;
        }
 
        if (ack) {
@@ -347,11 +344,14 @@ static int ljca_send(struct ljca_adapter *adap, u8 type, u8 cmd,
                                                  timeout);
                if (!ret) {
                        ret = -ETIMEDOUT;
-                       goto out;
+                       goto out_put;
                }
        }
        ret = adap->actual_length;
 
+out_put:
+       usb_autopm_put_interface(adap->intf);
+
 out:
        spin_lock_irqsave(&adap->lock, flags);
        adap->ex_buf = NULL;