All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
To: Sergey Ryazanov <ryazanov.s.a@gmail.com>
Cc: Jakub Kicinski <kuba@kernel.org>,
	"David S . Miller" <davem@davemloft.net>,
	Oliver Neukum <oneukum@suse.com>,
	linux-usb@vger.kernel.org, netdev@vger.kernel.org
Subject: Re: [PATCH net] usb: cdc-wdm: fix reading stuck on device close
Date: Sun, 1 May 2022 20:09:14 +0200	[thread overview]
Message-ID: <Ym7MyhaX3SYX9rmm@kroah.com> (raw)
In-Reply-To: <20220501175828.8185-1-ryazanov.s.a@gmail.com>

On Sun, May 01, 2022 at 08:58:28PM +0300, Sergey Ryazanov wrote:
> cdc-wdm tracks whether a response reading request is in-progress and
> blocks the next request from being sent until the previous request is
> completed. As soon as last user closes the cdc-wdm device file, the
> driver cancels any ongoing requests, resets the pending response
> counter, but leaves the response reading in-progress flag
> (WDM_RESPONDING) untouched.
> 
> So if the user closes the device file during the response receive
> request is being performed, no more data will be obtained from the
> modem. The request will be cancelled, effectively preventing the
> WDM_RESPONDING flag from being reseted. Keeping the flag set will
> prevent a new response receive request from being sent, permanently
> blocking the read path. The read path will staying blocked until the
> module will be reloaded or till the modem will be re-attached.
> 
> This stuck has been observed with a Huawei E3372 modem attached to an
> OpenWrt router and using the comgt utility to set up a network
> connection.
> 
> Fix this issue by clearing the WDM_RESPONDING flag on the device file
> close.
> 
> Without this fix, the device reading stuck can be easily reproduced in a
> few connection establishing attempts. With this fix, a load test for
> modem connection re-establishing worked for several hours without any
> issues.
> 
> Fixes: 922a5eadd5a3 ("usb: cdc-wdm: Fix race between autosuspend and
> reading from the device")

Nit, Fixes: lines should only be one line, I'll fix this up when
applying it.

> Signed-off-by: Sergey Ryazanov <ryazanov.s.a@gmail.com>
> ---
> 
> Technically, cdc-wdm belongs to the USB subsystem even though it serves
> WWAN devices. I think this fix should be applied (backported) to LTS
> versions too. So I targeted it to the 'net' tree, but send it to both
> lists to get a feedback. Greg, Jakub, what is the best tree for this
> fix?
> 
> ---
>  drivers/usb/class/cdc-wdm.c | 1 +
>  1 file changed, 1 insertion(+)

scripts/get_maintainer.pl is pretty clear this goes through the USB
tree.  I'll queue it up in a few days, thanks,

greg k-h

  reply	other threads:[~2022-05-01 18:09 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-05-01 17:58 [PATCH net] usb: cdc-wdm: fix reading stuck on device close Sergey Ryazanov
2022-05-01 18:09 ` Greg Kroah-Hartman [this message]
2022-05-01 18:15   ` Sergey Ryazanov
2022-05-02 10:30 ` Oliver Neukum

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Ym7MyhaX3SYX9rmm@kroah.com \
    --to=gregkh@linuxfoundation.org \
    --cc=davem@davemloft.net \
    --cc=kuba@kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=oneukum@suse.com \
    --cc=ryazanov.s.a@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.