PR_MPX_ENABLE_MANAGEMENT(2const)

BEZEICHNUNG
PR_MPX_ENABLE_MANAGEMENT, PR_MPX_DISABLE_MANAGEMENT - Kernelverwaltung der Speicherschutzerweiterungen (MPX) (de)aktivieren

BIBLIOTHEK
Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT
#include <linux/prctl.h>  /* Definition der PR_*-Konstanten */
#include <sys/prctl.h>

[[veraltet]] int prctl(PR_MPX_ENABLE_MANAGEMENT, 0L, 0L, 0L, 0L);
[[veraltet]] int prctl(PR_MPX_DISABLE_MANAGEMENT, 0L, 0L, 0L, 0L);

BESCHREIBUNG
Aktiviert oder deaktiviert die Kernelverwaltung der Begrenzungstabellen der Speicherschutzerweiterungen (MPX).

MPX ist ein Hardware-unterstützter Mechanismus zur Durchführung von Begrenzungsüberprüfungen für Zeiger. Er besteht aus einer Reihe von Registern, die Begrenzungsinformationen speichern und einer Reihe von besonderen Anweisungs-Präfixen, die der CPU mitteilen, bei welchen Anweisungen sie die Begrenzungen durchsetzen soll. Es gibt eine begrenzte Anzahl dieser Register und wenn es mehr Zeiger als Register gibt, muss ihr Inhalt auf eine Reihe von Tabellen »verteilt« werden. Diese Tabellen werden »Begrenzungstabellen« genannt und die Aktion MPX prctl() steuert, ob der Kernel ihre Reservierung und Freigabe verwaltet.

Wenn die Verwaltung aktiviert ist, wird der Kernel die Reservierung und Freigabe der Begrenzungstabellen übernehmen. Dies erfolgt, indem die #BR-Ausnahmen abgefangen werden, die beim erstmaligen Verfehlen der Begrenzungstabellen auftreten. Anstatt die Ausnahme an den Anwendungsraum auszuliefern, wird die Tabelle reserviert und das Begrenzungsverzeichnis mit den Orten der neuen Tabelle befüllt. Für die Freigabe prüft der Kernel, ob die Begrenzungstabellen für Speicher vorhanden sind, der nicht reserviert ist, und gibt diesen dann frei.

Vor der Aktivierung der MPX-Verwaltung mittels PR_MPX_ENABLE_MANAGEMENT muss die Anwendung zuerst einen Puffer im Anwendungsraum für das Begrenzungsverzeichnis reserviert und den Ort dieses Verzeichnisses in dem Register bndcfgu abgelegt haben.

Diese Aufrufe schlagen fehl, falls die CPU oder der Kernel kein MPX unterstützt. Die Kernelunterstützung für MPX wird mittels der Konfigurationsoption CONFIG_X86_INTEL_MPX aktiviert. Durch den folgenden Befehl können Sie prüfen, ob die CPU MPX unterstützt, indem Sie nach dem CPUID-Bit mpx schauen:

    cat /proc/cpuinfo | grep ' mpx '

Ein Thread darf nicht in oder aus dem Long-Modus (64-bit) schalten, wenn MPX aktiviert ist.

Alle Threads in einem Prozess sind von diesen Aufrufen betroffen.

Der Kindprozess eines fork(2) erbt den Zustand der MPX-Verwaltung. Während execve(2) wird die MPX-Verwaltung auf einen Zustand zurückgesetzt, als ob PR_MPX_DISABLE_MANAGEMENT aufgerufen worden wäre.

RÜCKGABEWERT
Bei Erfolg wird 0 zurückgegeben. Bei einem Fehler wird -1 zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.

FEHLER

ENXIO
    Der Kernel oder die CPU unterstützt die MPX-Verwaltung nicht. Prüfen Sie, ob der Kernel oder der Prozessor über MPX-Unterstützung verfügt.

STANDARDS
Keine.

GESCHICHTE
Linux 3.19. Entfernt in Linux 5.4. Nur auf X86.

Aufgrund mangelnder Unterstützung in der Werkzeugkette werden PR_MPX_ENABLE_MANAGEMENT und PR_MPX_DISABLE_MANAGEMENT in Linux 5.4 und neuer nicht unterstützt.

SIEHE AUCH
prctl(2)

Weitere Informationen über Intel MPX finden Sie in der Kernelquelldatei Documentation/x86/intel_mpx.rst.

ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann <debian@helgefjell.de> erstellt.

Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 (https://www.gnu.org/licenses/gpl-3.0.html) oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.

Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.