On Tue, 2021-06-08 at 17:42 +0300, Andy Shevchenko wrote: > It's possible that during ->exit() the private_data is NULL, > for instance when there was no GPIO device instantiated. > Due to this we may not dereference it. Add a respective check. > > Note, for now ->exit() only makes sense when GPIO device > was instantiated, that's why we may use the check for entire > function. > > Fixes: 81171e7d31a6 ("serial: 8250_exar: Constify the software nodes") > Reported-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> > Signed-off-by: Andy Shevchenko <andriy.shevchenko@xxxxxxxxxxxxxxx> > --- > drivers/tty/serial/8250/8250_exar.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/tty/serial/8250/8250_exar.c b/drivers/tty/serial/8250/8250_exar.c > index 2f49c580139b..bd4e9f6ac29c 100644 > --- a/drivers/tty/serial/8250/8250_exar.c > +++ b/drivers/tty/serial/8250/8250_exar.c > @@ -553,7 +553,11 @@ static void pci_xr17v35x_exit(struct pci_dev *pcidev) > { > struct exar8250 *priv = pci_get_drvdata(pcidev); > struct uart_8250_port *port = serial8250_get_port(priv->line[0]); > - struct platform_device *pdev = port->port.private_data; > + struct platform_device *pdev; > + > + pdev = port->port.private_data; > + if (!pdev) > + return; > > device_remove_software_node(&pdev->dev); > platform_device_unregister(pdev); Hi! I just tested this patch and it does work! Thanks a lot for fixing this that fast! Tested-by: Maxim Levitsky <mlevitsk@xxxxxxxxxx> Best regards, Maxim Levitsky