Здравствуйте :)
Знающих людей наверняка задолбал этот вопрос, но все-таки... Всем знакомо выражение типа
dev = container_of(inode->i_cdev, struct scull_dev, cdev);
i_cdev заполняется в chrdev_open, если все правильно в probe.
У меня устройства создаются нормально и пока ничего не падает, но все-таки интересно, что именно делает магию? Т.е. как получается, что из inode->i_cdev получается именно то, что нужно? Ведь там просто типы указываются, по логике, тот container_of должен возвращать указатель на inode. Ни в cdev_init, ни в cdev_add ничего похожего я не увидел... :-\