Я думаю, что вам, вероятно, придется открыть каталог, используя filp_open.
Для аргумента "flags" вам, вероятно, нужно поместить некоторую комбинацию флагов LOOKUP_, перечисленных в include / linux / namei.h
Вы можете увидеть, что build_open_flags делает здесь: http://lxr.linux.no/#linux+v3.1.5/fs/open.c#L876, чтобы предоставить флаги для filp_open.
Насколько я знаю, filp_open - это правильный способ открытия файла в пространстве ядра.Однако делать это не рекомендуется.
Если вы делаете это из контекста "нормального" потока, принадлежащего пользовательскому процессу, я думаю, вы будете в порядке.