Как позвонить в IOCTL из ядра в ядре Linux после версии 5.18 и для 64-битной аркиLinux

Ответить
Anonymous
 Как позвонить в IOCTL из ядра в ядре Linux после версии 5.18 и для 64-битной арки

Сообщение Anonymous »

Доброе утро,
Я пытаюсь восстановить драйвер устройства Linux из предыдущего выпуска (4.19) в недавних ядрах, а именно 6.1.22 на встроенных платформах, Arm64 Arch.
Драйвер управляет устройством tty. /p>
Следующий код Попробуйте обобщить использование для поддержания: < /p>

Код: Выделить всё

    char device_name = "/dev/my-tty";
int open_mode = O_RDWR | O_NOCTTY;
struct file * file =  filp_open(device_name, open_mode, 0);
/* ... */
struct ktermios *ntermios;
int ldisc;

/* ... something on ldisc and ntermios ... */

fs = get_fs();
set_fs(get_ds());
int retval = file->f_op->unlocked_ioctl(file, TCSETS, (unsigned long)&ntermios));
set_fs(fs);

/* ... */

fs = get_fs();
set_fs(get_ds());
int retval = file->f_op->unlocked_ioctl(file, TIOCSETD, (unsigned long)&ldisc));
set_fs(fs);

/* ... */
В обоих случаях возвращаемое значение двух вызовов для разблокировки_ioctl составляет -14 (

Код: Выделить всё

EFAULT< /code> /плохой адрес).
IS IS в присутствии функции copy_from_user () < /code>, ... что просто не удается. < /p>
Поиск в коде и На нескольких форуме я нашел несколько подробностей о «set_fs ()»-удаление танца, но ничего о решении или альтернативных подходах. Следующие действия:

[*]https://lwn.net/articles/832121/
[*] Исключение force_uaccess_begin () в linux Ядро 5.19 /6.0? < /li>
 Как использовать ioctl () из пространства ядра в Linux? () 
и force_uaccess_end () , get_ds () , set_ds () , get_fs () , а также тип mm_segment_t не являются Представьте больше (по крайней мере, для Arm64 Arch). < /p>
В основном вопросы: < /p>

Как я могу Возьмите с собой устройство, как TTY, из пространства ядра?
Это возможно? > -Dance? Подход, если таковой имеется, совершенно другой? /> < /ul>
Любой комментарий приветствуется. T осознал тип возможного решения/раунда.

Подробнее здесь: https://stackoverflow.com/questions/794 ... -and-for-6
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»