Ниже приведена последовательность выполнения проблемы, я пишу новый драйвер платформы, который также создает записи sysfs
- insmod works
- нет чтения / записи sysfs из пользовательского пространства
rmmod works
insmod works
- sudo bash -c "echo xxx> / sys / devices / platform / xphy / chipname"
rmmod работает - но не удаляет символическую ссылку / sys / bus / platform / devices / xphy -> ../../../devices/platform/xphy
insmod терпит неудачу - потому что - sysfs: не может создать дублирующееся имя файла '/ bus / platform / devices / xphy'
ниже не работало при вызове во время выхода из модуля / драйвера.
//sysfs_remove_link(&device->dev.kobj, "xphy");
//sysfs_remove_link(&device->dev.kobj, "bus/platform/devices/xphy");
ks = bus_get_kset(device->dev.bus);
ko = kset_find_obj(ks, "xphy");
sysfs_remove_link(ko, "xphy");
ko = kset_find_obj(bus_get_kset(device->dev.bus), "xphy");
if (ko) {
printk(KERN_DEBUG "dereferencing xphy sysfs kernel object!\n");
kobject_put(ko);
printk(KERN_DEBUG "deleting xphy sysfs kernel object!\n");
kobject_del(ko);
}