Вы забыли упомянуть, что вам также следует изучить try_module_get / module_put / symbol_get / symbol_put / symbol_request для обеспечения загрузки другого модуля и того факта, что он не выгружается во время использования. Я не помню точных деталей, хотя; Я думаю, что modprobe обеспечит загрузку другого модуля, но я не уверен, будет ли добавлена зависимость времени выгрузки для выгрузки. Я предполагаю, что эти API могут быть необходимы для некоторых других случаев, но для этого нужно знать о них.
Кстати, бесплатная книга Linux Device Drivers доступна здесь, и она ответит на этот вопрос и многое другое:
http://lwn.net/Kernel/LDD3/