Si __lddk_copy_from_user()
simplemente llama a copy_from_user()
, luego el access_ok()
las comprobaciones son redundantes, porque copy_from_user()
realiza estas comprobaciones por sí mismo.
El access_ok()
Las comprobaciones garantizan que la aplicación del espacio de usuario no le pida al núcleo que lea o escriba en las direcciones del núcleo (son una comprobación de integridad/seguridad). El hecho de que el espacio de usuario haya proporcionado un puntero no significa que sea definitivamente un puntero de espacio de usuario; en muchos casos, "puntero del kernel" simplemente significa que apunta dentro de una región particular del espacio de direcciones virtuales.
Además, llamar a access_ok()
con VERIFY_WRITE
implica VERIFY_READ
, por lo que si marca lo primero, no es necesario que marque también lo segundo.
A partir de este compromiso en 2019,
access_ok()
ya no tiene el type
argumento, entonces el VERIFY_WRITE
contra VERIFY_READ
el punto es discutible.