diff --git a/drivers/media/rc/lirc_dev.c b/drivers/media/rc/lirc_dev.c index d9b6ecca563f..f7b8f1f66d9b 100644 --- a/drivers/media/rc/lirc_dev.c +++ b/drivers/media/rc/lirc_dev.c @@ -777,6 +777,9 @@ void lirc_unregister(struct rc_dev *dev) unsigned long flags; struct lirc_fh *fh; + if (!device_is_registered(&dev->lirc_dev)) + return; + dev_dbg(&dev->dev, "lirc_dev: driver %s unregistered from minor = %d\n", dev->driver_name, MINOR(dev->lirc_dev.devt)); diff --git a/drivers/media/rc/rc-main.c b/drivers/media/rc/rc-main.c index 1c07bdd3b42b..a867bf9e8416 100644 --- a/drivers/media/rc/rc-main.c +++ b/drivers/media/rc/rc-main.c @@ -2018,8 +2018,7 @@ int rc_register_device(struct rc_dev *dev) scoped_guard(mutex, &dev->lock) dev->registered = false; - if (device_is_registered(&dev->lirc_dev)) - lirc_unregister(dev); + lirc_unregister(dev); device_del(&dev->dev); /* registered already cleared above */ goto out_free_table;