Linux-Kernel wechselt zu kmalloc_obj für verbesserte Speicherzuweisung
Technologie
⚠ Einzelquelle
2h ago

Linux-Kernel wechselt zu kmalloc_obj für verbesserte Speicherzuweisung

KI-synthetisiert · Voreingenommenheit entfernt · Nur Fakten

Linus Torvalds hat eine bedeutende Codeänderung in den Linux-Kernel 7.3-rc2 integriert, die mehr Aufrufe der Funktion `kmalloc()` auf die neuere `kmalloc_obj()`-Funktionsfamilie umstellt. Diese umfassende Anstrengung, die von Linux-Entwickler Kees Cook geleitet wird, zielt darauf ab, die Speicherzuweisung innerhalb des Kernels zu verbessern.

Die Konvertierung, die mit einem Coccinelle-gestützten Skript durchgeführt wurde, betrifft Hunderte von Dateien und über 600 Codezeilen. Sie behebt frühere unvollständige Übergänge zu `kmalloc_obj()` und erweitert dessen Verwendung seit der Einführung in Linux 7.0. Die `kmalloc_obj()`-Funktionen bieten gegenüber `kmalloc()` mehrere Vorteile, darunter die Eliminierung der Notwendigkeit von `sizeof()` und dem Typnamen, die Ermöglichung interner Introspektion der zugewiesenen Typen und die Vorbereitung auf zukünftige Verbesserungen wie Härtung und ausrichtungsbasierte Entscheidungen.

Laut einem Commit, der die `kmalloc_obj()`-Funktionen Anfang dieses Jahres vorstellte, ersetzt die Änderung gängige Zuweisungsidiome. Beispielsweise wird `ptr = kmalloc(sizeof(*ptr), gfp);` zu `ptr = kmalloc_obj(*ptr, gfp);`. Der Hauptvorteil ist die Entfernung der Notwendigkeit von `sizeof()` und dem Typnamen, während gleichzeitig die Zuweisungstypen durchgesetzt werden – die Funktionen geben einen Zeiger auf den Typ des ersten Arguments zurück. Der Typname kann weiterhin für indirekte Zuweisungen verwendet werden. Darüber hinaus ermöglichen die neuen Funktionen die Deklaration von Variablen mit `__auto_type`, wie z. B. `__auto_type ptr = kmalloc_obj(struct foo, gfp);`.

War das hilfreich?

Originale Berichterstattung lesen

💬 Kommentare

📜 Kommentar-Richtlinie