Является ли copy_to_user необходимым с procfs?

Я всегда думал copy_to_user было необходимо, когда ядро ​​пишет пользователям через procfs.

Я забыл сделать это один раз, хотя (и я использовал snprintf) и все работало нормально. Теперь, когда я это заметил, я искал. Я нашел эту ссылку, которая не говорит copy_to_user нужен, хотя для другого раздела (чтение ядра от пользователя) он говорит copy_from_user является необходимым.

Итак, предоставлен ли буфер модулю ядра для записи данных (так что пользователь читает из него), уже в пространстве ядра? Это правда, что вам не нужно copy_to_user при записи через procfs? Или мне повезло, что я не попал в аварию?

1 ответ

Решение

Всегда используйте copy_from_user а также copy_to_user при работе с указателями пространства пользователя. Даже если просто memcpy иногда у вас работает, бывают ситуации, когда он может потерпеть неудачу. Смотрите эту ветку для информации.

Говоря о procfs необходимо учитывать, что он использует небольшой трюк с предварительным распределением памяти ядра. Смотрите эту ссылку для деталей.

Другие вопросы по тегам