Using devres infrastructure it is possible to write a serdev driver that doesn't have any code that needs to be called as a part of .remove. Add code to make .remove optional.
Cc: linux-kernel@vger.kernel.org Cc: linux-ser...@vger.kernel.org Cc: Rob Herring <r...@kernel.org> Cc: cphe...@gmail.com Cc: Guenter Roeck <li...@roeck-us.net> Cc: Lucas Stach <l.st...@pengutronix.de> Cc: Nikita Yushchenko <nikita.yo...@cogentembedded.com> Cc: Lee Jones <lee.jo...@linaro.org> Cc: Greg Kroah-Hartman <gre...@linuxfoundation.org> Cc: Pavel Machek <pa...@ucw.cz> Cc: Andy Shevchenko <andy.shevche...@gmail.com> Cc: Johan Hovold <jo...@kernel.org> Reviewed-by: Guenter Roeck <li...@roeck-us.net> Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com> --- drivers/tty/serdev/core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/tty/serdev/core.c b/drivers/tty/serdev/core.c index c68fb3a8ea1c..f500f6a2ca88 100644 --- a/drivers/tty/serdev/core.c +++ b/drivers/tty/serdev/core.c @@ -252,8 +252,8 @@ static int serdev_drv_probe(struct device *dev) static int serdev_drv_remove(struct device *dev) { const struct serdev_device_driver *sdrv = to_serdev_device_driver(dev->driver); - - sdrv->remove(to_serdev_device(dev)); + if (sdrv->remove) + sdrv->remove(to_serdev_device(dev)); return 0; } -- 2.13.5