Ich versuche, einen Linux -Geräte -Treiber aus der vorherigen Version (4.19) in den letzten Kerneln wieder aufzubauen, nämlich 6,1.22 auf eingebetteten Plattformen, ARM64 Arch.
Der Treiber verwalten ein TTY-Gerät. /p>
Der folgende Code versucht, die Verwaltung der Verwendung zusammenzufassen: < /p>
Code: Select all
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);
/* ... */
Code: Select all
EFAULT< /code> /schlechte Adresse).
Das ist im Vorhandensein von Funktionen copy_from_user () < /code>, ... Das schlägt einfach fehl In mehreren Forum fand ich mehrere Details über die Entfernung von "set_fs ()"-Tanz, aber nichts über Lösung oder alternative Ansätze. Folgungen:
[*]https://lwn.net/articles/832121/
[*] Abschreibung von Kraft_Uaccess_Begin () in Linux KERNEL 5.19 /6.0? ()
Ist es noch möglich? > -dance? Ist der Ansatz, wenn überhaupt, völlig anders? /> < /ul>
Jeder Kommentar wird geschätzt. t erkannte den Typ einer möglichen Lösung/Arbeit.