Поскольку оборудование удалено, это не значит, что ваш драйвер удален. Так что вам нужно знать, есть ваше оборудование или нет.
Тогда вы должны завершить все запущенные транзакции. Это означает, что какую бы операцию вы ни выполняли в своих файловых операциях, она должна в какой-то момент завершиться и вернуться с кодом ошибки, чтобы вы могли вернуться к коду пользователя. Для USB-устройств есть функция, которая делает это за вас.
Код пространства пользователя может выполнять чтение / запись / ioctl после того, как ваше устройство было удалено. Эти системные вызовы знают, что аппаратного обеспечения больше нет, поэтому они должны вернуть код ошибки.
Любое вменяемое приложение затем закроет или закроет соответствующий файловый дескриптор. Так что пересчет должен происходить в методе open / release. Какой бы ресурс вы ни выделили, они могут существовать и после удаления вашего устройства.