Вообще говоря, если вам нужно читать / записывать файлы из модуля ядра, вы делаете что-то неправильно в архитектуре.
Существуют механизмы (например, netlink или просто зарегистрировать устройство символов), чтобы разрешить модулю ядра разговаривать с вспомогательным процессом в пользовательском пространстве. Этот вспомогательный процесс в пользовательском пространстве может делать все, что захочет.
Вы также можете реализовать системный вызов (или такой), чтобы взять файловый дескриптор, открытый в пользовательском пространстве, и прочитать / записать его из ядра.
Это, вероятно, будет более аккуратным, чем попытка открыть файлы в пространстве ядра.
Есть некоторые другие вещи, которые уже открывают файлы из пространства ядра, вы можете посмотреть на них (на что обращает внимание драйвер цикла?).