Open Source im professionellen Einsatz
Linux-Magazin 12/2014

Zacks Kernel-News

Zacks Kernel-News

912

printk() und die NMIs

Petr Mladek hat ein Patch eingereicht, das es erlauben soll, »printk()« aus der Routine eines Non-Maskable-Interrupts aufzurufen. Diese NMIs lassen sich normal nicht unterbrechen, aber »printk()« löse ein internes Locking aus – insgesamt könne so ein kritischer Deadlock entstehen.

Mladeks Lösung sieht vor, in so einem Falle zunächst zu testen, ob der Lock möglich ist, und »printk()« zu puffern, wenn er nicht klappt. Sobald möglich, solle der Puffer geschrieben werden.

Daraus entwickelte sich eine rege Diskussion, in die sich auch Linus einschaltete und seine grundsätzlichen Bedenken rund um NMIs bekräftigte: "»printk()« aus einem NMI heraus ist nie eine gute Idee. Das wird nicht funktionieren, und wir wissen das doch alle. Ich würde das lieber verbieten und für die wenigen echten Einzelfälle Workarounds finden. Ja, verdammt, der NMI-Kontext ist speziell, aber ich will nicht, dass wir dem kaputten Konzept hinterherlaufen. Also macht einen trivialen Wrapper, keine tausend Zeilen Code."

Damit beendete er die Diskussion für kurze Zeit, aber wohl auch nur, weil keinem der Beteiligten klar war, wie man das Problem der Deadlocks lösen könnte.

Später schrieb der Finne: "Wir sollten NMI nicht als etwas Normales behandeln. Wir haben uns da schon viel zu weit darauf eingelassen. Wir sollten schauen, dass wir Code, der NMI-Kontext nutzt, loswerden, lieber heute als morgen." Danach drehte sich der Thread um einen Workaround von Paul McKenney, der zu Beginn umstritten, am Ende aber doch als passend wahrgenommen wurde.

Die Diskussion erinnert an Phasen der Big Kernel Locks (BKL). Bekanntermaßen war der Mechanismus so tief integriert, dass keine einfache Lösung möglich war. Ein nahezu unberührbarer Haufen Mist, sozusagen, der den ganzen Kernel in Geiselhaft hielt. Schlimmstenfalls droht da auch »printk()« ein kompletter Rewrite.

Neuer Zufallszahlengenerator im Kernel

Stephan Müller hat einige Patches für einen deterministischen Zufallszahlengenerator eingereicht, so wie ihn SP800-90A, ein Dokument aus dem US-amerikanischen Standardisierungsinstitut National Institute of Standards and Technology (NIST, http://csrc.nist.gov/publications/nistpubs/800-90A/SP800-90A.pdf), vorschreibt.

Das NIST ist zuständig für Standards und Richtlinien, definiert aber auch Mindestanforderungen, um angemessene IT-Sicherheit in US-Behörden zu gewährleisten, ähnlich dem Bundesamt für Sicherheit in der Informationstechnik (BSI, http://www.bsi.bund.de) in Deutschland. Gleichwohl gelten die Richtlinien nur intern und nicht etwa als allgemein verbindliche Industriestandards.

Müller implementierte alle drei vorgeschriebenen Zufallszahlengeneratoren: HMAC, Hash und CTR, wobei HMAC der einfachste und CTR der komplexeste ist. Wie vom NIST definiert, nutzt er dafür Hashes, Block-Cipher-Algorithmen oder zahlentheoretische Problemstellungen. Ohne jede Diskussion akzeptierte die Entwicklergemeinde das Patch, das Herbert Xu unverändert übernahm.

Das National Institute of Standards and Technology definiert Behördenstandards.

Container, IDs und XFS

Marian Marinov stellte fest, dass Prozesse in unterschiedlichen Containern gleiche IDs tragen. Wenn aber Benutzer oder Gruppen in verschiedenen Containern gleiche UIDs und GIDs haben, dann werden auch die Prozesse in separaten Containern scheinbar den gleichen Benutzern gehören. Und dann, so Marinov, seien seine Versuche, in via Templates erzeugten Containern Ressourcen automatisch zuzuweisen, zum Scheitern verurteilt.

Weil er dort mit vielen Prozessen hantieren müsse, wäre es eine sehr aufwändige Aufgabe, das erst später zu korrigieren. Deshalb schlägt er vor, Kernel-Datenstrukturen so abzuändern, dass der Namespace jedes Containers isoliert würde. Dann, so meint er, wären die Prozess-Counter sauber separiert.

Nein, meint Eric W. Biederman, das aktuelle Verhalten sei durchaus gewollt und die Vorteile daran würden überwiegen. Gleichwohl sehe auch er das Problem mit der Ressourcenzuweisung.Er schlug einen Tar-basierten Workaround vor, den Marinov jedoch ablehnte.

Auch Serge Hallyn sprang Marinov zur Seite und schlug als Lösung ein sehr schlankes, flexibles Dateisystem vor, das UID-Shifting oder noch besser einen UID-Shift beim Mount beherrscht. Doch beim genaueren Betrachten der technischen Details wuchsen die Probleme sehr schnell an. Zu oft müsste man dabei die UIDs prüfen, immer wenn Kernelspace und Userspace sich berührten.

Biederman schlug eine einfache Lösung vor: "Wir suchen uns Filesysteme aus, fügen Privilege Mounting im User-Namespace hinzu. Dann lassen wir Global Root im richtigen Namespace mit Setns die Mounts durchführen." Das aber, so Marinov, löse nur einen Teil der Probleme. Auch wären davon XFS-User ausgesperrt, was die Akzeptanz eines solchen Patch stark beeinträchtige.

XFS- Probleme

Die Diskussion drehte sich anschließend darum, ob man XFS – dessen Journal auch bei der automatischen Migration zwischen Endian- und Non-Endian-Systemen Probleme bereite – außen vor lassen könne oder nicht. Biederman führte dabei an, dass wegen der Vielzahl an Features von XFS dies dort zu implementieren eine große Aufgabe wäre. Lieber solle man "normale" Dateisysteme zuerst unterstützen und sich um XFS erst dann kümmern, wenn es die tief sitzenden Probleme mit seiner Implementierung gelöst habe.

Damit endete diese Diskussion, ohne ein rechtes Ergebnis erbracht zu haben. Ob und wie der Kernel Marinovs ID-Probleme lösen wird, bleibt unklar. Der Tar-Workaround funktioniert und ist ein Indiz dafür, dass das Ganze nicht so dringend erscheint. Auch die Lösung der XFS-Strukturprobleme wirkt dann nicht mehr so akut. Dennoch bleibt das Problem, dass es keine klare Trennung von UIDs und GIDs unterschiedlicher Container gibt. Darin sind sich alle Teilnehmer einig, nur gibt es derzeit keine gute Lösung dafür. (Zack Brown/mfe)

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 2 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.