From 1c1464c2b19f1b96885040b8adc9cf5ba3c7b32d Mon Sep 17 00:00:00 2001 From: Jean-Jacques Hiblot Date: Tue, 22 Jan 2019 16:48:16 +0100 Subject: [PATCH] usb: ether: call _usb_eth_halt() if initialization fails If the host does not respond in time, the initialization fails. However the usb ether driver will still be registered. This will make usb_gadget_probe_driver() fail the next time the initialization is attempted because it cannot find an available UDC. Fixing this by calling _usb_eth_halt() when the init fails. Signed-off-by: Jean-Jacques Hiblot Acked-by: Lukasz Majewski --- drivers/usb/gadget/ether.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/usb/gadget/ether.c b/drivers/usb/gadget/ether.c index e4993dc6e6..0b5a1a4796 100644 --- a/drivers/usb/gadget/ether.c +++ b/drivers/usb/gadget/ether.c @@ -2333,6 +2333,8 @@ fail: } /*-------------------------------------------------------------------------*/ +static void _usb_eth_halt(struct ether_priv *priv); + static int _usb_eth_init(struct ether_priv *priv) { struct eth_dev *dev = &priv->ethdev; @@ -2406,6 +2408,7 @@ static int _usb_eth_init(struct ether_priv *priv) rx_submit(dev, dev->rx_req, 0); return 0; fail: + _usb_eth_halt(priv); return -1; } @@ -2485,7 +2488,7 @@ static int _usb_eth_recv(struct ether_priv *priv) return 0; } -void _usb_eth_halt(struct ether_priv *priv) +static void _usb_eth_halt(struct ether_priv *priv) { struct eth_dev *dev = &priv->ethdev; -- 2.25.1