Wenn __lddk_copy_from_user()
ruft einfach copy_from_user()
auf , dann die access_ok()
Prüfungen sind überflüssig, weil copy_from_user()
führt diese Prüfungen selbst durch.
Die access_ok()
Prüfungen stellen sicher, dass die Userspace-Anwendung den Kernel nicht auffordert, Kerneladressen zu lesen oder in sie zu schreiben (es handelt sich um eine Integritäts-/Sicherheitsprüfung). Nur weil ein Zeiger vom Userspace bereitgestellt wurde, bedeutet das nicht, dass es definitiv ein Userspace-Zeiger ist - in vielen Fällen bedeutet "Kernel-Zeiger" einfach, dass er in einen bestimmten Bereich des virtuellen Adressraums zeigt.
Zusätzlich Aufruf von access_ok()
mit VERIFY_WRITE
impliziert VERIFY_READ
, wenn Sie also Ersteres aktivieren, müssen Sie Letzteres nicht ebenfalls aktivieren.
Ab diesem Commit im Jahr 2019
access_ok()
hat den type
nicht mehr Argument, also VERIFY_WRITE
gegenüber VERIFY_READ
Punkt ist strittig.