Se __lddk_copy_from_user()
chiama semplicemente copy_from_user()
, quindi il access_ok()
i controlli sono ridondanti, perché copy_from_user()
esegue personalmente questi controlli.
Il access_ok()
i controlli assicurano che l'applicazione dello spazio utente non chieda al kernel di leggere o scrivere negli indirizzi del kernel (sono un controllo di integrità/sicurezza). Solo perché un puntatore è stato fornito dallo spazio utente non significa che sia sicuramente un puntatore dello spazio utente - in molti casi "puntatore del kernel" significa semplicemente che sta puntando all'interno di una particolare regione dello spazio degli indirizzi virtuali.
Inoltre, chiamando access_ok()
con VERIFY_WRITE
implica VERIFY_READ
, quindi se controlli il primo non è necessario controllare anche il secondo.
A partire da questo commit nel 2019,
access_ok()
non ha più il type
argomento, quindi VERIFY_WRITE
contro VERIFY_READ
il punto è discutibile.