Según el diseño de Linux en x86 y ppc, el espacio de direcciones virtuales 4g se divide en 3: 1. Las direcciones virtuales del usuario son hasta 3g.¿Por qué se requiere copy_to/from_user?
Ahora, si la aplicación del usuario hace un ioctl pasando un puntero a un búfer, el módulo kernel puede hacer directamente un memcpy, lo intenté y funcionó. => ¿Por qué necesitamos un usuario copy_to/copy_from?
Nota: Si la página se intercambia, el manejador de la página del núcleo no lo devolverá, y es invisible para el módulo kernel.
necesito yr ideas ... comentarios
bien, entonces la razón principal es el manejo de direcciones ** bad **. – mSO
y si las direcciones son válidas (digamos, en el mejor de los casos, nadie está haciendo ningún daño) la memcpy debería funcionar. – mSO
@Manish: no es necesariamente "travesura", podría ser simplemente un viejo error en el espacio de usuario: el kernel debe manejar estos errores con elegancia. Y el 'memcpy()' solo funcionará en algunas arquitecturas. – caf