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>
Thu, 9 Jan 2020 09:17:52 +0000 (10:17 +0100)
commitfbff45d2413eb11a0534b3faf9b00636b21337c3
tree360509852a0f876cb48ef1418d4909264faa84ab
parentbca6d54dcc98b944bf5efb34e982a06f935b2099
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