- почему get_fs / set_fs dance?
- почему вы думаете, что вам нужно открыть файл из ядра
- вы пропускаете проверку ошибок и устанавливаете файл в NULL длябез причины
- если вы проверите, как реализовано чтение, вы обнаружите:
__vfs_read с 4.17rc5 (не иметь под рукой 4.4, но, вероятно, у него будет что-то похожее):
ssize_t __vfs_read(struct file *file, char __user *buf, size_t count,
loff_t *pos)
{
if (file->f_op->read)
return file->f_op->read(file, buf, count, pos);
else if (file->f_op->read_iter)
return new_sync_read(file, buf, count, pos);
else
return -EINVAL;
}
Как видите -> чтение не единственный способ чтения из файла.Почему вы проверяли этот указатель?
Чтение файлов из модулей ядра обычно плохая идея.Пожалуйста, объясните, для чего вам это нужно.