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.