Я вижу, что существует проблема в порядке, в котором вы пытаетесь уничтожить / удалить класс, устройство и cdev.
Я попытался в моей системе с примером кода. Снимок прилагается ниже:
[root @ dhcp-10-123-181-110 own_char] # find / -name sample_cdev0
/ DEV / sample_cdev0
/ SYS / устройства / виртуальный / образец / sample_cdev0
/ SYS / класс / образец / sample_cdev0
[root @ dhcp-10-123-181-110 own_char] #
[root @ dhcp-10-123-181-110 own_char] #
[root @ dhcp-10-123-181-110 own_char] # rmmod himschar
[root @ dhcp-10-123-181-110 own_char] # find / -name sample_cdev0
[root @ dhcp-10-123-181-110 own_char] # cat / proc / devices | grep -i образец
[root @ dhcp-10-123-181-110 own_char] #
=============================================== =========================
Порядок, которому вы должны следовать:
device_destroy(sample_class, sample_dev_t);
class_destroy(sample_class);
cdev_del(sample_cdev);
unregister_chrdev_region(sample_dev_t, 1);