2013-07-16 9 views
6

Ich bin in einem Linux-Kernel-Modul, und ich zuteile etwas Speicher mit, sagen wir vmalloc(). Ich möchte, dass der Speicher Lese-, Schreib- und Ausführungsrechte hat. Was ist der saubere und angemessene Weg, dies zu tun? Grundsätzlich entspricht dies im Allgemeinen dem Aufruf von mprotect(), aber im Kernel-Bereich.mprotect() wie Funktionalität im Linux-Kernel

Wenn ich die Seite zu Fuß tun, pgd_offset(), pud_offset(), pmd_offset(), pte_offset_map() und dann pte_mkwrite(), ich laufe in Fehler verknüpfen, wenn ich es versuchte, sich auf 2.6.39. Außerdem scheint es, dass wenn ich den Seitenspaziergang mache, es ein Hack ist, und es sollte eine sauberere und geeignetere Methode geben.

Mein Kernelmodul ist ein ladbares Modul, daher stehen mir interne Symbole nicht zur Verfügung.

Vielen Dank im Voraus für Ihre Anleitung.

Antwort

0

Haben Sie versucht, indem Sie do_mprotect() [Kernfunktion entsprechend mprotect()] direkt aufrufen?