mirror of
https://github.com/torvalds/linux.git
synced 2026-11-07 06:17:02 +01:00
net/9p/usbg: always reset completion when disconnecting
When some tx or rx transfers were pending while closing the connection,
the completion handler could catch one pending completion call. To
ensure a normal start when mounting again, we have to reset the
completion and flush any pending completions.
Fixes: a3be076dc1 ("net/9p/usbg: Add new usb gadget function transport")
Cc: stable@vger.kernel.org
Signed-off-by: Michael Grzeschik <mgr@kernel.org>
Message-ID: <20260922-usb9pfsfixes-v1-3-9d8dcc52904c@kernel.org>
Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
This commit is contained in:
parent
795f8eeca0
commit
08c6b9f484
|
|
@ -475,6 +475,7 @@ static void p9_usbg_close(struct p9_client *client)
|
|||
mutex_unlock(&usb9pfs_lock);
|
||||
|
||||
disable_usb9pfs(usb9pfs);
|
||||
reinit_completion(&usb9pfs->send);
|
||||
}
|
||||
|
||||
static int p9_usbg_request(struct p9_client *client, struct p9_req_t *p9_req)
|
||||
|
|
@ -764,6 +765,7 @@ static void usb9pfs_disable(struct usb_function *f)
|
|||
usb9pfs->client->status = Disconnected;
|
||||
spin_unlock_irqrestore(&usb9pfs->lock, flags);
|
||||
usb9pfs_clear_tx(usb9pfs);
|
||||
reinit_completion(&usb9pfs->send);
|
||||
}
|
||||
|
||||
static struct usb_function *usb9pfs_alloc(struct usb_function_instance *fi)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user