Является ли 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
необходимо учитывать, что он использует небольшой трюк с предварительным распределением памяти ядра. Смотрите эту ссылку для деталей.