Я правильно реализую copy_from_user? - PullRequest
0 голосов
/ 12 апреля 2020

Я выполняю операцию записи файла для моего модуля, и я хочу знать, правильно ли я реализую функцию copy_from_user. Модуль представляет собой тиктактую игру, поэтому я беру информацию от пользователя. Входными данными будут строки в формах «01 X» или «21 O», где числа представляют столбцы и строки, а буквы - их части. Моя функция записи выглядит следующим образом:

ssize_t tictactoe_write(struct file *pfile, char __user *buffer, size_t length, loff_t *offset){

   char* data = kmalloc(sizeof(buffer), GFP_KERNEL);
   size_t unread = copy_from_user(data, buffer, sizeof(buffer));

   printk(KERN_NOTICE "Written");

   //Return number of bytes not read
   return unread;
}

При такой реализации указатель данных будет инициализирован с помощью ввода пользователя? Что я могу затем манипулировать через остальную часть модуля? Любая помощь приветствуется.

1 Ответ

0 голосов
/ 15 апреля 2020

Чтобы выяснить, что имел в виду @Tarracon:

ssize_t tictactoe_write(struct file *pfile, char __user *buffer, size_t length, loff_t *offset){

   char* data = kmalloc(length, GFP_KERNEL);
   size_t unread = copy_from_user(data, buffer, length);

   printk(KERN_NOTICE "Written");

   //Return number of bytes not read
   return unread;
}

Кроме того, вы не реализуете copy_from_user, вы вызываете это. Большая разница.

...