Wie im Linux-Design auf x86 und ppc ist der virtuelle 4g-Adressraum in 3: 1 unterteilt. Benutzer virtuelle Adresse sind bis 3g.Warum ist copy_to/from_user erforderlich?
Nun, wenn Benutzer App ein ioctl übergeben einen Zeiger auf Puffer, das Kernel-Modul, kann direkt eine memcpy tun, ich habe versucht, und es hat funktioniert. => Warum brauchen wir dann einen copy_to/copy_from Benutzer?
Hinweis: Wenn die Seite ausgelagert wird, würde der kernel pagefault-Handler das zurückbringen und ist für das Kernel-Modul unsichtbar.
brauchen yr Ideen ... Kommentare
ok, also der Hauptgrund ist die Behandlung von ** schlechten ** Adressen. – mSO
und wenn die Adressen gültig sind (sagen wir den besten Fall, niemand macht irgendeinen Unfug), sollte das Memcpy funktionieren. – mSO
@Manish: Es ist nicht unbedingt "Unfug", es könnte einfach ein einfacher alter Bug im Userspace sein - solche Bugs sollten vom Kernel gut behandelt werden. Und das 'memcpy()' funktioniert nur auf einigen Architekturen überhaupt. – caf