--- x/drivers/net/caif/caif_serial.c +++ y/drivers/net/caif/caif_serial.c @@ -308,6 +308,7 @@ static void ser_release(struct work_stru list_for_each_entry_safe(ser, tmp, &list, node) { dev_close(ser->dev); unregister_netdevice(ser->dev); + tty_kref_put(ser->tty); debugfs_deinit(ser); } rtnl_unlock(); @@ -369,8 +370,6 @@ static void ldisc_close(struct tty_struc { struct ser_device *ser = tty->disc_data; - tty_kref_put(ser->tty); - spin_lock(&ser_lock); list_move(&ser->node, &ser_release_list); spin_unlock(&ser_lock);