Я наконец сделал это так:
- Это необходимо.
struct path root;
struct file *filerd;
- Получить задачу инициализации fs root.
task_lock(&init_task);
get_fs_root(init_task.fs, &root);
task_unlock(&init_task);
- Изменить dentry на этот файл:
root.dentry = d_find_alias(inode);
- Открыть файл:
filerd = file_open_root(root.dentry->d_parent, root.mnt,
root.dentry->d_name.name, O_RDONLY);
Это работало для каждого процесса, который я тестировал, и для разных точек монтирования, что меня удивило.