OSDN Git Service

usb: gadget: fix wrong endpoint desc
authorEJ Hsu <ejh@nvidia.com>
Wed, 4 Dec 2019 07:34:56 +0000 (23:34 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 12 Jan 2020 10:22:39 +0000 (11:22 +0100)
commitebff557aca6bcc2beefc16ec6cac60de00262554
treef4aa6091ff73a2812409b2d693a82f44355cea9a
parent8febe765539fbcc7d47e4e2ad44a0bcb2adbf02b
usb: gadget: fix wrong endpoint desc

[ Upstream commit e5b5da96da50ef30abb39cb9f694e99366404d24 ]

Gadget driver should always use config_ep_by_speed() to initialize
usb_ep struct according to usb device's operating speed. Otherwise,
usb_ep struct may be wrong if usb devcie's operating speed is changed.

The key point in this patch is that we want to make sure the desc pointer
in usb_ep struct will be set to NULL when gadget is disconnected.
This will force it to call config_ep_by_speed() to correctly initialize
usb_ep struct based on the new operating speed when gadget is
re-connected later.

Reviewed-by: Peter Chen <peter.chen@nxp.com>
Signed-off-by: EJ Hsu <ejh@nvidia.com>
Signed-off-by: Felipe Balbi <balbi@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/usb/gadget/function/f_ecm.c
drivers/usb/gadget/function/f_rndis.c