diff mbox series

[v4,1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response

Message ID 20241112075514.680712-1-stanislaw.gruszka@linux.intel.com (mailing list archive)
State Accepted
Commit 5c5d8eb8af06df615e8b1dc88e5847196c846045
Headers show
Series [v4,1/3] usb: misc: ljca: move usb_autopm_put_interface() after wait for response | expand

Commit Message

Stanislaw Gruszka Nov. 12, 2024, 7:55 a.m. UTC
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>
---
v3 -> v4: no change in this patch
v2 -> v3: add A-b tag from Sakari
v1 -> v2: fix handing error of usb_autopm_get_interface(),
          add R-b, T-b tags from Hans

 drivers/usb/misc/usb-ljca.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

Comments

Hans de Goede Nov. 12, 2024, 10:13 a.m. UTC | #1
Greg,

This patch 1/3 + patch 2/3 together fix an issue causing the camera to not
work on quite a few ThinkPad models.

Can you maybe pick up patch 1/3 + patch 2/3 already, while
Stanislaw works on fixing 3/3 ?

Regards,

Hans


On 12-Nov-24 8:55 AM, Stanislaw Gruszka wrote:
> 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>
> ---
> v3 -> v4: no change in this patch
> v2 -> v3: add A-b tag from Sakari
> v1 -> v2: fix handing error of usb_autopm_get_interface(),
>           add R-b, T-b tags from Hans
> 
>  drivers/usb/misc/usb-ljca.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/usb/misc/usb-ljca.c b/drivers/usb/misc/usb-ljca.c
> index 01ceafc4ab78..8056c65e4548 100644
> --- a/drivers/usb/misc/usb-ljca.c
> +++ b/drivers/usb/misc/usb-ljca.c
> @@ -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;
Greg KH Nov. 12, 2024, 10:33 a.m. UTC | #2
On Tue, Nov 12, 2024 at 11:13:55AM +0100, Hans de Goede wrote:
> Greg,
> 
> This patch 1/3 + patch 2/3 together fix an issue causing the camera to not
> work on quite a few ThinkPad models.
> 
> Can you maybe pick up patch 1/3 + patch 2/3 already, while
> Stanislaw works on fixing 3/3 ?

Yes, I'll do that later today, good idea.

Mixing new feaures and bug fixes shouldn't be in the same patch series,
again, Intel developers should know better if this were to actually pass
their internal review process (which seems to keep being ignored
here...)

thanks,

greg k-h
diff mbox series

Patch

diff --git a/drivers/usb/misc/usb-ljca.c b/drivers/usb/misc/usb-ljca.c
index 01ceafc4ab78..8056c65e4548 100644
--- a/drivers/usb/misc/usb-ljca.c
+++ b/drivers/usb/misc/usb-ljca.c
@@ -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;