Conformément à la conception Linux sur x86 et ppc, l'espace d'adressage virtuel 4g est divisé en 3: 1. Les adresses virtuelles des utilisateurs sont jusqu'à 3g.Pourquoi copy_to/from_user est-il requis?
Maintenant, si l'application utilisateur fait un ioctl en passant un pointeur sur le tampon, le module du noyau, peut directement faire un memcpy, j'ai essayé et cela a fonctionné. => Pourquoi avons-nous besoin d'un utilisateur copy_to/copy_from?
Remarque: Si la page est permutée, le gestionnaire de faille de page du noyau la ramènera et sera invisible pour le module du noyau.
besoin de vos idées ... commentaires
ok, donc la raison principale est la gestion des ** mauvaises ** adresses. – mSO
et si les adresses sont valides (disons le meilleur des cas, personne ne fait de mal) le memcpy devrait fonctionner. – mSO
@Manish: Il ne s'agit pas forcément d'un "méfait", il pourrait s'agir simplement d'un ancien bogue dans l'espace utilisateur - ces bogues devraient être gérés gracieusement par le noyau. Et le 'memcpy()' ne fonctionnera que sur certaines architectures. – caf