linux-usb.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [1/2] cdc-acm: do not reset notification buffer index upon urb unlinking
@ 2018-10-04 13:33 Oliver Neukum
  0 siblings, 0 replies; 3+ messages in thread
From: Oliver Neukum @ 2018-10-04 13:33 UTC (permalink / raw)
  To: Tobias Herzog; +Cc: gregkh, linux-kernel, linux-usb

On Sa, 2018-09-22 at 22:11 +0200, Tobias Herzog wrote:
> Resetting the write index of the notification buffer on urb unlink (e.g.
> closing a cdc-acm device from userspace) may lead to wrong interpretation
> of further received notifications, in case the index is not 0 when urb
> unlink happens (i.e. when parts of a notification already have been
> transferred). On the device side there is no "reset" of the notification
> transimission and thus we would get out of sync with the device.
> 
> Signed-off-by: Tobias Herzog <t-herzog@gmx.de>
Acked-by: Oliver Neukum <oneukum@suse.com>

^ permalink raw reply	[flat|nested] 3+ messages in thread
* [1/2] cdc-acm: do not reset notification buffer index upon urb unlinking
@ 2018-10-04 13:32 Oliver Neukum
  0 siblings, 0 replies; 3+ messages in thread
From: Oliver Neukum @ 2018-10-04 13:32 UTC (permalink / raw)
  To: Tobias Herzog; +Cc: gregkh, linux-kernel, linux-usb

On Sa, 2018-09-22 at 22:11 +0200, Tobias Herzog wrote:
> Resetting the write index of the notification buffer on urb unlink (e.g.
> closing a cdc-acm device from userspace) may lead to wrong interpretation
> of further received notifications, in case the index is not 0 when urb
> unlink happens (i.e. when parts of a notification already have been
> transferred). On the device side there is no "reset" of the notification
> transimission and thus we would get out of sync with the device.

Hi,

you are right, when you are describing the problem. The fix seems to me
to fix a part, albeit a large part of the issue. As far as I can tell,
the transfer could be partially succesful, meaning that the driver
loses a part in the middle of the notification.

	Regards
		Oliver

^ permalink raw reply	[flat|nested] 3+ messages in thread
* [1/2] cdc-acm: do not reset notification buffer index upon urb unlinking
@ 2018-09-22 20:11 Tobias Herzog
  0 siblings, 0 replies; 3+ messages in thread
From: Tobias Herzog @ 2018-09-22 20:11 UTC (permalink / raw)
  To: oneukum; +Cc: gregkh, linux-usb, linux-kernel

Resetting the write index of the notification buffer on urb unlink (e.g.
closing a cdc-acm device from userspace) may lead to wrong interpretation
of further received notifications, in case the index is not 0 when urb
unlink happens (i.e. when parts of a notification already have been
transferred). On the device side there is no "reset" of the notification
transimission and thus we would get out of sync with the device.

Signed-off-by: Tobias Herzog <t-herzog@gmx.de>
---
 drivers/usb/class/cdc-acm.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/usb/class/cdc-acm.c b/drivers/usb/class/cdc-acm.c
index 27346d6..50339ca 100644
--- a/drivers/usb/class/cdc-acm.c
+++ b/drivers/usb/class/cdc-acm.c
@@ -355,7 +355,6 @@ static void acm_ctrl_irq(struct urb *urb)
 	case -ENOENT:
 	case -ESHUTDOWN:
 		/* this urb is terminated, clean up */
-		acm->nb_index = 0;
 		dev_dbg(&acm->control->dev,
 			"%s - urb shutting down with status: %d\n",
 			__func__, status);

^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2018-10-04 13:33 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-10-04 13:33 [1/2] cdc-acm: do not reset notification buffer index upon urb unlinking Oliver Neukum
  -- strict thread matches above, loose matches on Subject: below --
2018-10-04 13:32 Oliver Neukum
2018-09-22 20:11 Tobias Herzog

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).