summaryrefslogtreecommitdiff
path: root/scripts/basic
diff options
context:
space:
mode:
authorMichael Grzeschik <mgr@kernel.org>2026-09-22 00:25:57 +0200
committerDominique Martinet <asmadeus@codewreck.org>2026-09-22 08:11:44 +0000
commitcd1988cf723c2eae87112b198bf90b0aebfeaf31 (patch)
tree51a35f84b79ddf9645a876a8dc2d225f4b5c6a39 /scripts/basic
parent08c6b9f484a406d9d87c5b2580725d2e0597f3b9 (diff)
downloadlinux-cd1988cf723c2eae87112b198bf90b0aebfeaf31.tar.gz
linux-cd1988cf723c2eae87112b198bf90b0aebfeaf31.zip
net/9p/usbg: call disable_usb9pfs() from usb9pfs_disable()
usb9pfs_disable() is the usb_function ->disable callback, invoked by the composite gadget core whenever the host resets or unconfigures the gadget. The gadget function API requires this callback to disable its endpoints; every other in-tree function driver does so from its ->disable hook. usb9pfs_disable() never called disable_usb9pfs(), so the IN/OUT endpoints and their usb_request objects were left active and allocated across a host-driven disable. When the host later reconfigures the device, enable_usb9pfs() calls alloc_requests() again and unconditionally overwrites usb9pfs->in_req/out_req, permanently leaking the previous allocations, while the endpoints themselves are left enabled underneath the function's own idea of being disabled. Call disable_usb9pfs() before reinit_completion(&usb9pfs->send), mirroring the same sequence already used in p9_usbg_close(). Placing it before the reinit_completion() also ensures usb_ep_disable() has synchronously flushed any requests still queued in hardware before the completion is reset, closing the same race that motivated resetting the completion here in the first place. Fixes: a3be076dc174 ("net/9p/usbg: Add new usb gadget function transport") Assisted-by: Claude:claude-opus-4.8 Cc: stable@vger.kernel.org Signed-off-by: Michael Grzeschik <mgr@kernel.org> Message-ID: <20260922-usb9pfsfixes-v1-4-9d8dcc52904c@kernel.org> Signed-off-by: Dominique Martinet <asmadeus@codewreck.org>
Diffstat (limited to 'scripts/basic')
0 files changed, 0 insertions, 0 deletions