On 17.02.23 15:05, Maxim Kochetkov wrote: > While probing ns16550 clock provider may be unavailable and > clk_get() returns -EPROBE_DEFER. Next ns16550_probe() attempts > will be failed too because of dev_request_mem_resource() has already > acquired this resource for the device and returns -EBUSY. > So move resource allocation just after clock init. It will let proper > probe for defered clocks on boards with deep probe disabled. > > Signed-off-by: Maxim Kochetkov <fido_max@xxxxxxxx> > --- > drivers/serial/serial_ns16550.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/drivers/serial/serial_ns16550.c b/drivers/serial/serial_ns16550.c > index 16f3576645..bbf783f662 100644 > --- a/drivers/serial/serial_ns16550.c > +++ b/drivers/serial/serial_ns16550.c > @@ -479,13 +479,6 @@ static int ns16550_probe(struct device *dev) > > priv = xzalloc(sizeof(*priv)); > > - ret = ns16550_init_iomem(dev, priv); > - if (ret) > - ret = ns16550_init_ioport(dev, priv); > - > - if (ret) > - return ret; > - > if (plat) > priv->plat = *plat; > else > @@ -511,6 +504,13 @@ static int ns16550_probe(struct device *dev) > goto err; > } > > + ret = ns16550_init_iomem(dev, priv); > + if (ret) > + ret = ns16550_init_ioport(dev, priv); > + > + if (ret) > + return ret; Sorry should've looked closer :/ This should be goto err like in the code above as not to leak memory. > + > cdev = &priv->cdev; > cdev->dev = dev; > cdev->tstc = ns16550_tstc; -- Pengutronix e.K. | | Steuerwalder Str. 21 | http://www.pengutronix.de/ | 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |