<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

<author contact="mailto:zbrown@tumblerings.org">Zack Brown</author>

<issue num="37" date="04 Oct 1999 00:00:00 -0800" />

<intro>

<p>There are now printer-friendly versions of KT and KC issues. We're in the
process of adding links to reference them. The basic rule is, to get the
printer-friendly version of an issue, change the URL from
&lt;something.html&gt; to &lt;something_print.html&gt;.</p>

</intro>

<stats posts="1096" size="4292" contrib="423" multiples="176" lastweek="152">

<person posts="92" size="264" who="Alan Cox " />
<person posts="44" size="155" who="Andrea Arcangeli " />
<person posts="30" size="81" who="" />
<person posts="21" size="76" who="&quot;Richard B. Johnson&quot; " />
<person posts="20" size="77" who="&quot;David S. Miller&quot; " />
<person posts="20" size="65" who="Jes Sorensen " />
<person posts="15" size="61" who="Jeff Garzik " />
<person posts="13" size="42" who="Ingo Molnar " />
<person posts="12" size="36" who="Jens Axboe " />
<person posts="11" size="53" who="Andreas Tobler " />
<person posts="11" size="35" who="Henner Eisen " />
<person posts="10" size="104" who="David Weinehall " />
<person posts="9" size="31" who="Manfred Spraul " />
<person posts="9" size="25" who="Jamie Lokier " />
<person posts="8" size="44" who="Matthew Vanecek " />
<person posts="8" size="30" who="Matti Aarnio " />
<person posts="8" size="25" who="Steve Dodd " />
<person posts="7" size="60" who="Thomas Sailer " />
<person posts="7" size="41" who="&quot;Stephen D. WIlliams&quot; " />
<person posts="7" size="36" who="Lech Szychowski " />
<person posts="7" size="29" who=" (david parsons)" />
<person posts="7" size="28" who="&quot;Mr. James W. Laferriere&quot; " />
<person posts="7" size="28" who=" (Rogier Wolff)" />
<person posts="7" size="26" who="&quot;Sean Hunter&quot; " />
<person posts="7" size="25" who=" (Guest section DW)" />
<person posts="7" size="21" who="Werner Almesberger " />
<person posts="7" size="20" who="Ari Pollak " />
<person posts="6" size="57" who="&quot;Nicholas R LeRoy&quot; " />
<person posts="6" size="46" who="Pavel Machek " />
<person posts="6" size="32" who="Urban Widmark " />
<person posts="6" size="18" who="&quot;Barrett G. Lyon&quot; " />
<person posts="6" size="18" who="Thomas Molina " />
<person posts="5" size="33" who="Oliver Xymoron " />
<person posts="5" size="25" who="Chuck Lever " />
<person posts="5" size="22" who="Brandon L Black " />
<person posts="5" size="17" who="Rui Sousa " />
<person posts="5" size="17" who=" (H. Peter Anvin)" />
<person posts="5" size="17" who="Paul Rusty Russell " />
<person posts="5" size="16" who="Artur Skawina " />
<person posts="5" size="15" who="Yann Doussot " />
<person posts="5" size="14" who="Keith Owens " />
<person posts="5" size="14" who="&quot;Jones D (ISaCS)&quot; " />
<person posts="5" size="13" who="Oystein Viggen " />
<person posts="5" size="13" who="Robert Tennent " />
<person posts="4" size="21" who="David Woodhouse " />
<person posts="4" size="20" who="Andre Hedrick " />
<person posts="4" size="17" who="German Jose Gomez Garcia " />
<person posts="4" size="16" who="Pete Wyckoff " />
<person posts="4" size="15" who="Larry McVoy " />
<person posts="4" size="15" who="Kristian Koehntopp " />
<person posts="4" size="15" who="Nick Burrett " />
<person posts="4" size="15" who="Riley Williams " />
<person posts="4" size="15" who="Vedad Kajtaz " />
<person posts="4" size="14" who="Bret Indrelee " />
<person posts="4" size="14" who="Mike " />
<person posts="4" size="13" who="Horst von Brand " />
<person posts="4" size="13" who="Richard A Nelson " />
<person posts="4" size="13" who="Ryan Murray " />
<person posts="4" size="12" who="bernie zhu " />
<person posts="4" size="12" who="Peter Hanecak " />
<person posts="4" size="10" who="" />
<person posts="4" size="10" who="&quot;Garst R. Reese&quot; " />
<person posts="4" size="10" who="Michael Harnois " />
<person posts="3" size="24" who="Camm Maguire " />
<person posts="3" size="21" who="Thierry vignaud " />
<person posts="3" size="16" who="Neil Brown " />
<person posts="3" size="16" who="Petko Manolov " />
<person posts="3" size="15" who="Andy Henroid " />
<person posts="3" size="15" who="&quot;WANG,YIDING (HP-SanJose,ex1)&quot; " />
<person posts="3" size="15" who="Steve Rhodes " />
<person posts="3" size="15" who="" />
<person posts="3" size="15" who="&quot;lirunbo&quot; " />
<person posts="3" size="14" who="Simon Richter " />
<person posts="3" size="13" who="Admin Mailing Lists " />
<person posts="3" size="13" who="Craig Milo Rogers " />
<person posts="3" size="12" who="Kurt Garloff " />
<person posts="3" size="12" who="Helge Deller " />
<person posts="3" size="12" who="Richard Guy Briggs " />
<person posts="3" size="12" who="Franck SICARD " />
<person posts="3" size="11" who="Wade Hampton " />
<person posts="3" size="11" who="Casey Schaufler " />
<person posts="3" size="11" who="Karl Kleinpaste " />
<person posts="3" size="10" who="Momchil Velikov " />
<person posts="3" size="10" who="&quot;Peter 'Luna' Runestig&quot; " />
<person posts="3" size="10" who="Ivan Kokshaysky " />
<person posts="3" size="10" who="&quot;Forever shall I be.&quot; " />
<person posts="3" size="10" who="&quot;Petr Vandrovec Ing. VTEI&quot; " />
<person posts="3" size="10" who="Richard Gooch " />
<person posts="3" size="10" who="Andi Kleen " />
<person posts="3" size="10" who="Marko Schulz " />
<person posts="3" size="10" who="Gabor Lenart " />
<person posts="3" size="10" who="&quot;G. Allen Morris III&quot; " />
<person posts="3" size="10" who=" (Peter Benie)" />
<person posts="3" size="10" who="David Wragg " />
<person posts="3" size="10" who="&quot;Paradox&quot; " />
<person posts="3" size="9" who="Herbert Huber " />
<person posts="3" size="9" who="&quot;Stephen C. Tweedie&quot; " />
<person posts="3" size="9" who="Alex Nicolaou " />
<person posts="3" size="9" who="Trond Myklebust " />
<person posts="3" size="9" who="Nate Eldredge " />
<person posts="3" size="9" who="Jeff Dike " />
<person posts="3" size="9" who="&quot;Dipl.-Ing. Uwe Koloska&quot; " />
<person posts="3" size="8" who="f5ibh " />
<person posts="3" size="8" who="ULISES ALONSO CAMARO " />
<person posts="3" size="8" who="Shawn Leas " />
<person posts="3" size="8" who="Paul Ashton " />
<person posts="3" size="8" who="&quot;John Hayward-Warburton (Programming account)&quot; " />
<person posts="3" size="7" who="Tonglu Yi " />
<person posts="3" size="7" who="Wakko Warner " />
<person posts="2" size="75" who="Tony Scholes " />
<person posts="2" size="21" who="Adam Fritzler " />
<person posts="2" size="20" who="Gerard Roudier " />
<person posts="2" size="18" who="Avenger " />
<person posts="2" size="14" who="Sebastian " />
<person posts="2" size="11" who="Mark Cooke " />
<person posts="2" size="11" who="" />
<person posts="2" size="10" who="Olaf Kirch " />
<person posts="2" size="9" who="Dieter N&#252;tzel " />
<person posts="2" size="9" who="John Kennedy " />
<person posts="2" size="9" who="Martin Markovitz " />
<person posts="2" size="8" who="Andrew Pimlott " />
<person posts="2" size="8" who="Harald Koenig " />
<person posts="2" size="8" who="Philippe Troin " />
<person posts="2" size="8" who="Scott Henry " />
<person posts="2" size="7" who="&quot;Javan Dempsey&quot; " />
<person posts="2" size="7" who="Marcin Dalecki " />
<person posts="2" size="7" who="Michael Elizabeth Chastain " />
<person posts="2" size="7" who="&quot;James O'Kane&quot; " />
<person posts="2" size="7" who="David van der Spoel " />
<person posts="2" size="7" who="Horst von Brand " />
<person posts="2" size="7" who="Karsten Keil " />
<person posts="2" size="7" who="&quot;H. Peter Anvin&quot; " />
<person posts="2" size="7" who="Jakub Jelinek " />
<person posts="2" size="7" who="Mohammad DAMT " />
<person posts="2" size="7" who="Miles Lane " />
<person posts="2" size="7" who="Petr Vandrovec " />
<person posts="2" size="7" who="&quot;Peter Goh&quot; " />
<person posts="2" size="7" who="&quot;Henning P. Schmiedehausen&quot; " />
<person posts="2" size="7" who="Savochkin Andrey Vladimirovich " />
<person posts="2" size="7" who="&quot;Edward S. Marshall&quot; " />
<person posts="2" size="6" who="Jim Garlick " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="Nils Faerber " />
<person posts="2" size="6" who="Christopher Fisk " />
<person posts="2" size="6" who="dave madden " />
<person posts="2" size="6" who="Dale Amon " />
<person posts="2" size="6" who="Sven Koch " />
<person posts="2" size="6" who="Steve Underwood " />
<person posts="2" size="6" who="Todd Chauvin " />
<person posts="2" size="6" who="yugami " />
<person posts="2" size="6" who="Jason Gunthorpe " />
<person posts="2" size="6" who="Nat Lanza " />
<person posts="2" size="6" who="Song Jianping " />
<person posts="2" size="5" who="Mitchell Blank Jr " />
<person posts="2" size="5" who="Marcelo Tosatti " />
<person posts="2" size="5" who="Falco Hirschenberger " />
<person posts="2" size="5" who="Tony Hoyle " />
<person posts="2" size="5" who="Philip Blundell " />
<person posts="2" size="5" who="Gergely Madarasz " />
<person posts="2" size="5" who="Arjan van de Ven " />
<person posts="2" size="5" who="&quot;Manfred&quot; " />
<person posts="2" size="5" who="Richard Rak " />
<person posts="2" size="5" who="Linux Lists " />
<person posts="2" size="5" who="Pavel Machek " />
<person posts="2" size="5" who="Arjan van de Ven " />
<person posts="2" size="5" who="" />
<person posts="2" size="5" who="Heinz Diehl " />
<person posts="2" size="5" who="Alex Buell " />
<person posts="2" size="5" who="Ed Hall " />
<person posts="2" size="5" who="Ury Segal " />
<person posts="2" size="5" who="Benjamin LaHaise " />
<person posts="2" size="5" who="" />
<person posts="2" size="5" who="Chris Wedgwood " />
<person posts="2" size="5" who="Bernd Eckenfels " />
<person posts="2" size="5" who="Mark Hahn " />
<person posts="2" size="4" who="Paul Flinders " />
<person posts="1" size="31" who="&quot;Mario Goegel&quot; " />
<person posts="1" size="20" who="&quot;Robert de Bath&quot; " />
<person posts="1" size="13" who="Jens Taprogge " />
<person posts="1" size="13" who="Amos Shapira " />
<person posts="1" size="13" who=" (H.J. Lu)" />
<person posts="1" size="12" who="Alvaro Lopes " />
<person posts="1" size="11" who="&quot;Daniel J Blueman&quot; " />
<person posts="1" size="9" who="&quot;Jason A. Diegmueller&quot; " />
<person posts="1" size="8" who="Erik Parker " />
<person posts="1" size="8" who="root " />
<person posts="1" size="8" who="Brian Wolfe " />
<person posts="1" size="7" who="Bryan Mayland " />
<person posts="1" size="7" who="" />
<person posts="1" size="7" who="Richard Kaszeta " />
<person posts="1" size="6" who="Aaron Holtzman " />
<person posts="1" size="6" who="&quot;Jonathan Crenner&quot; " />
<person posts="1" size="6" who="Pauline Middelink " />
<person posts="1" size="6" who="&quot;Earth Day News-US&quot; " />
<person posts="1" size="6" who="Alexander Kjeldaas " />
<person posts="1" size="5" who="&quot;Donald A. Huettl&quot; " />
<person posts="1" size="5" who="Jens Benecke " />
<person posts="1" size="5" who="Ignasi Garcia " />
<person posts="1" size="5" who="Nadeem Riaz " />
<person posts="1" size="5" who="Richard Dynes " />
<person posts="1" size="5" who="Nate Riffe " />
<person posts="1" size="5" who="Giuliano Pochini " />
<person posts="1" size="5" who="Sami Farin " />
<person posts="1" size="5" who="Singh " />
<person posts="1" size="5" who="Dick Balaska " />
<person posts="1" size="5" who="Michael Leodolter " />
<person posts="1" size="5" who="&quot;Glenn McGrath&quot; " />
<person posts="1" size="5" who="&quot;Ram'on Garc'ia Fern'andez&quot; " />
<person posts="1" size="5" who="Helen McCall " />
<person posts="1" size="5" who="&quot;Robert K. Nelson&quot; " />
<person posts="1" size="4" who="Dave Airlie " />
<person posts="1" size="4" who=" (H.J. Lu)" />
<person posts="1" size="4" who="Will Morton " />
<person posts="1" size="4" who="Fuzzy Fox " />
<person posts="1" size="4" who="&quot;Olsen, Jim&quot; " />
<person posts="1" size="4" who="Momchil 'Velco' Velikov " />
<person posts="1" size="4" who="Simon Kirby " />
<person posts="1" size="4" who="&quot;Michael J. Dikkema&quot; " />
<person posts="1" size="4" who="Stanislav Meduna " />
<person posts="1" size="4" who="Uwe Bonnes " />
<person posts="1" size="4" who="Thomas Speck " />
<person posts="1" size="4" who="Dag Wieers " />
<person posts="1" size="4" who="Eivind Tagseth " />
<person posts="1" size="4" who="Pontus Lidman " />
<person posts="1" size="4" who="Dean Gaudet " />
<person posts="1" size="4" who="Derek Glidden " />
<person posts="1" size="4" who="" />
<person posts="1" size="4" who="&quot;Stefan Monnier&quot; " />
<person posts="1" size="4" who="&quot;Mike Black&quot; " />
<person posts="1" size="4" who="Shay Cohen " />
<person posts="1" size="4" who="&quot;James H. Cloos Jr.&quot; " />
<person posts="1" size="4" who=" (Kanoj Sarcar)" />
<person posts="1" size="3" who="Fumitoshi UKAI " />
<person posts="1" size="3" who="Matt Wilson " />
<person posts="1" size="3" who="Richard Guenther " />
<person posts="1" size="3" who="Doug Ledford " />
<person posts="1" size="3" who="Dawid Kuroczko " />
<person posts="1" size="3" who="Artur Frysiak " />
<person posts="1" size="3" who="Martin Dalecki " />
<person posts="1" size="3" who="Marc Mutz " />
<person posts="1" size="3" who="folkert van heusden " />
<person posts="1" size="3" who="&quot;Pascal A. Dupuis&quot; " />
<person posts="1" size="3" who="Bodo Moeller " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Lars Marowsky-Bree " />
<person posts="1" size="3" who="&quot;Matthew G. Marsh&quot; " />
<person posts="1" size="3" who="Dave Meyer " />
<person posts="1" size="3" who="Kenneth Johansson " />
<person posts="1" size="3" who="Darrell Wright " />
<person posts="1" size="3" who="Deepak Saxena " />
<person posts="1" size="3" who="Miquel van Smoorenburg " />
<person posts="1" size="3" who="Stephen Walton " />
<person posts="1" size="3" who="Galen Hazelwood " />
<person posts="1" size="3" who="Donald Becker " />
<person posts="1" size="3" who="Brian Strand " />
<person posts="1" size="3" who="Herbert Xu " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="&quot;Theodore Y. Ts'o&quot; " />
<person posts="1" size="3" who="&quot;Jim B&quot; " />
<person posts="1" size="3" who="Graffiti " />
<person posts="1" size="3" who=" (Marc MERLIN)" />
<person posts="1" size="3" who="Aron Griffis " />
<person posts="1" size="3" who="Jim Brown " />
<person posts="1" size="3" who="Randy Appleton " />
<person posts="1" size="3" who="Russ Allbery " />
<person posts="1" size="3" who="Andi Kleen " />
<person posts="1" size="3" who="&quot;Marc Bechler&quot; " />
<person posts="1" size="3" who="Matthias Hanisch " />
<person posts="1" size="3" who="Mike Frisch " />
<person posts="1" size="3" who="Brian Hall " />
<person posts="1" size="3" who="Enno Ewers " />
<person posts="1" size="3" who="Sergey Kubushin " />
<person posts="1" size="3" who="Robert de Vries " />
<person posts="1" size="3" who="Mark Henry " />
<person posts="1" size="3" who="Claudio Fleiner " />
<person posts="1" size="3" who="Mark Montague " />
<person posts="1" size="3" who="&quot;Anthony Barbachan&quot; " />
<person posts="1" size="3" who=" (Arjan van de Ven)" />
<person posts="1" size="3" who="Arthur " />
<person posts="1" size="3" who="David Hunnisett " />
<person posts="1" size="3" who="Tomoko Oki " />
<person posts="1" size="3" who="Erik Mouw " />
<person posts="1" size="3" who="&quot;Peter J. Braam&quot; " />
<person posts="1" size="3" who="Ingo Molnar " />
<person posts="1" size="3" who="&quot;Boda Karoly jr.&quot; " />
<person posts="1" size="3" who="Gilbert Ramirez " />
<person posts="1" size="3" who="&quot;Mark H. Wood&quot; " />
<person posts="1" size="3" who="Mark Rutherford " />
<person posts="1" size="3" who="Neil Conway " />
<person posts="1" size="3" who="Martin Mares " />
<person posts="1" size="3" who="Adam Sulmicki " />
<person posts="1" size="3" who="Michael Cornwell " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="&quot;Avi Shevin&quot; " />
<person posts="1" size="3" who="Derek Wildstar " />
<person posts="1" size="3" who="Stuart MacDonald " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="&quot;Richard Rak&quot; " />
<person posts="1" size="3" who="Jason Clifford " />
<person posts="1" size="3" who="&quot;Khimenko Victor&quot; " />
<person posts="1" size="3" who="unslider " />
<person posts="1" size="3" who="Peter Desnoyers " />
<person posts="1" size="3" who="&quot;Ard Righ&quot; " />
<person posts="1" size="3" who="Aaron T Porter " />
<person posts="1" size="3" who="Steve VanDevender " />
<person posts="1" size="3" who="Lauri Tischler " />
<person posts="1" size="3" who="&quot;Tom Livingston&quot; " />
<person posts="1" size="3" who="Dag Brattli " />
<person posts="1" size="3" who="&quot;Rupa Schomaker (list)&quot; " />
<person posts="1" size="3" who="ani joshi " />
<person posts="1" size="3" who="Drizzt " />
<person posts="1" size="3" who="Dan Drown " />
<person posts="1" size="3" who="Tuan Hoang " />
<person posts="1" size="3" who="Jeff Epler " />
<person posts="1" size="3" who="&quot;Christoph Goos&quot; " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who=" (Nick Holloway)" />
<person posts="1" size="3" who="Russell Kroll " />
<person posts="1" size="3" who="Soren Harward " />
<person posts="1" size="3" who="Steven Bonneville " />
<person posts="1" size="3" who="Jeff Noxon " />
<person posts="1" size="3" who=" (Jens-Uwe Mager)" />
<person posts="1" size="3" who="&quot;B. James Phillippe&quot; " />
<person posts="1" size="3" who="Jose Miguel Pereira Tavares " />
<person posts="1" size="3" who="Alan Modra " />
<person posts="1" size="2" who="Ed Grimm " />
<person posts="1" size="2" who="Hamfast Istar " />
<person posts="1" size="2" who="Mikael Pettersson " />
<person posts="1" size="2" who="Jonathan Disher " />
<person posts="1" size="2" who="Johannes Erdfelt " />
<person posts="1" size="2" who="The Doctor What " />
<person posts="1" size="2" who="&quot;Bill Rugolsky Jr.&quot; " />
<person posts="1" size="2" who="Brian Naylor " />
<person posts="1" size="2" who="&quot;Jim Nance&quot; " />
<person posts="1" size="2" who="Sean Connor " />
<person posts="1" size="2" who="Helge Hafting " />
<person posts="1" size="2" who="Andrea Arcangeli " />
<person posts="1" size="2" who="Robert Brockway " />
<person posts="1" size="2" who="Dan Kegel " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Geir Thomassen " />
<person posts="1" size="2" who="&quot;Daniel P. Zepeda&quot; " />
<person posts="1" size="2" who="Mario Mikocevic " />
<person posts="1" size="2" who="Willy Tarreau " />
<person posts="1" size="2" who="Jeremy Katz " />
<person posts="1" size="2" who="&quot;Roel Teuwen&quot; " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="root " />
<person posts="1" size="2" who="Martin Mares " />
<person posts="1" size="2" who="Gary Simmons " />
<person posts="1" size="2" who="Oskar Liljeblad " />
<person posts="1" size="2" who="A V Naga Muni Reddy " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Tigran Aivazian " />
<person posts="1" size="2" who="&quot;Steven N. Hirsch&quot; " />
<person posts="1" size="2" who="George Staikos " />
<person posts="1" size="2" who="Robert Bihlmeyer " />
<person posts="1" size="2" who="Robert Cardell " />
<person posts="1" size="2" who="&quot;Michael H. Warfield&quot; " />
<person posts="1" size="2" who="Mark Hagger " />
<person posts="1" size="2" who="Richard Adams " />
<person posts="1" size="2" who=" (Peter Corlett)" />
<person posts="1" size="2" who="Jean-Louis Martineau " />
<person posts="1" size="2" who="&quot;Mark E. Drummond&quot; " />
<person posts="1" size="2" who="Arnaldo Carvalho de Melo " />
<person posts="1" size="2" who="Ben McCann " />
<person posts="1" size="2" who="David Morton " />
<person posts="1" size="2" who="Matt Kemner " />
<person posts="1" size="2" who="Steven Udell " />
<person posts="1" size="2" who="Arjan van de Ven " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Mike Jagdis " />
<person posts="1" size="2" who="Sean King " />
<person posts="1" size="2" who="Roy Sigurd Karlsbakk " />
<person posts="1" size="2" who="Yusuf Goolamabbas " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Nathan Hand " />
<person posts="1" size="2" who="&quot;Magnus N&#228;slund(b)&quot; " />
<person posts="1" size="2" who="Ryan Gammon " />
<person posts="1" size="2" who="Martin Costabel " />
<person posts="1" size="2" who="Greg Ingram " />
<person posts="1" size="2" who="Jochen Friedrich " />
<person posts="1" size="2" who="&quot;Nietzel, Earle R&quot; " />
<person posts="1" size="2" who="Christian Ehrhardt " />
<person posts="1" size="2" who="&quot;Sergey V. Kolychev&quot; " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Tomasz Wegrzanowski " />
<person posts="1" size="2" who="Zach Brown " />
<person posts="1" size="2" who="Oliver Teuber " />
<person posts="1" size="2" who="I Lee Hetherington " />
<person posts="1" size="2" who="Drew Bernat " />
<person posts="1" size="2" who="Pierfrancesco Caci " />
<person posts="1" size="2" who="Dan Hollis " />
<person posts="1" size="2" who="Philip Blundell " />
<person posts="1" size="2" who="Stephen Frost " />
<person posts="1" size="2" who="Rene Chaddock " />
<person posts="1" size="2" who="Earle Ake " />
<person posts="1" size="2" who=" (Jan Willamowius)" />
<person posts="1" size="2" who="&quot;Svend Ole Nielsen&quot; " />
<person posts="1" size="2" who="Robert Dinse " />
<person posts="1" size="2" who="Meelis Roos " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Neil Conway " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who=" (Zygo Blaxell)" />
<person posts="1" size="2" who=" (Aaron Denney)" />
<person posts="1" size="2" who="Brian Gerst " />
<person posts="1" size="2" who="M Carling " />
<person posts="1" size="2" who="Arianna Caliari " />
<person posts="1" size="2" who="&quot;Russell Foster&quot; " />
<person posts="1" size="2" who="rewt " />
<person posts="1" size="2" who="&quot;Pieckiel, Kevin A&quot; " />
<person posts="1" size="2" who="Shashidhar P Patil " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="BOSZORMENYI Zoltan " />
<person posts="1" size="2" who="Fernando Barreto " />
<person posts="1" size="2" who="Juan Carlos P&#233;rez V&#225;zquez " />
<person posts="1" size="2" who="Eric Hanchrow " />
<person posts="1" size="2" who="[32;1mJonathan Brenes Fern&#225;ndez[0m " />
<person posts="1" size="2" who="Perry Wagle " />
<person posts="1" size="2" who="Chuprina Alexandr " />
<person posts="1" size="2" who="System Administrator " />

</stats>

<section
  title="Implementation Of Generic ACPI Support Debated"
  subject="[PATCH] generic ACPI support"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_03/msg00293.html"
  posts="6"
  startdate="16 Sep 1999 00:00:00 -0800"
  enddate="21 Sep 1999 00:00:00 -0800"
>
<topic>Disks: IDE</topic>
<topic>Power Management: ACPI</topic>
<topic>USB</topic>
<topic>Virtual Memory</topic>

<mention>Jeff Garzik</mention>

<p>Andy Henroid posted a pointer to <a
href="http://www.geocities.com/SiliconValley/Hardware/3165/">his patch</a>
and announced, <quote who="Andy Henroid">I've gone a
couple rounds with Linus on this patch for generic (ie. not PIIX4 specific)
ACPI support and I think I've won his tentative approval. I would appreciate
feedback from anybody else that is interested. The patch is very minimal and
most of the work (the AML interpreter) will be done by a user-space daemon
(acpid).</quote> Jeff Garzik asked how Andy's work related to the <a
href="http://phobos.fachschaften.tu-muenchen.de/acpi/">ACPI4Linux
Project</a>, and Andy explained, <quote who="Andy Henroid">This is one of the two ideas floating around in the
ACPI4Linux project. I'm calling this one the "thin ACPI driver" model. The
alternate idea basically integrates the AML interpreter directly into the
kernel which adds quite a bit of size to the kernel (guessing maybe 300k+,
ouch)</quote></p>

<p>Simon Richter (a proponant of integrating directly into the kernel) felt
that Andy's idea had drawbacks:</p>

<quote who="Simon Richter">

<p>ACPI does device
enumeration, and although current systems do not require that for booting,
doing the enumeration after booting (when the daemon is running) means
shutting down all affected subsystems (IDE, USB, PCMCIA, ...),
reinitializing the hardware using the AML method the BIOS provided for this
(there is no way to circumvent this, as only this AML code knows about the
ACPI specific registers in the chipset) and then restart the drivers. Also,
even if we do this, we still have to go to a solid VM when hardware is
available that relies on ACPI enum.</p>

<p>The second big drawback is that not only sleeping but also proper waking
depends on a userspace program, which needs to take precautions not to get
swapped out because it needs to work even when only the CPU and memory are
powered. You can easily shoot yourself in the foot with that. :-)</p>

<p>The third thing that disturbs me is that a userspace program tells the
kernel where to peek and poke. This program can easily be replaced by
someone breaking in from the network, while this is harder to do for the
kernel. Also, you cannot easily determine what accesses are legal because
the driver needs to be able to access all hardware. By a skilled attacker,
this can be used to circumvent the file system and low level harddisk
drivers, or to read or write arbitrary memory. Short, a huge security hole.</p>

<p>This is why I favor the static solution, even if it bloats the kernel and is
hard to debug.</p>

</quote>

<p>Andy replied:</p>

<quote who="Andy Henroid">

<strong>1. device
enumeration/initialization</strong><br />

<p>This will not be an issue until hardware that depends on ACPI for
initialization appears. That's going to be a while and, even then, boot
devices will always be initialized by the system so the OS can be loaded.</p>

<p>Yes, with the thin driver model, device re-initialization is going to be
necessary on platforms without legacy initialization. And yes, that's going
to be complicated but I think it is definitely workable.</p>

<strong>2. device sleep/wake</strong><br />

<p>Right, we can't rely on user-space for turning storage devices on and off.
What we can do is pre-run the AML in user-space and upload the I/O access
sequence to the kernel for execution.</p>

<strong>3. security</strong><br />

<p>It's just as easy to install a new kernel or kernel module as it is to
replace a system daemon. If someone has root access you are vulnerable with
either model.</p>

</quote>

<p>He concluded:</p>

<quote who="Andy Henroid">

<p>#1 and #2 are definitely
important issues but I think there are solutions to both while keeping the
bulk of ACPI code in user-space.</p>

<p>You are going to need a much more convincing argument to get that much code
into the kernel initially. Why don't we go the thin way and as specific
issues arise or new hardware appears, then push more of the code into the
kernel?</p>

</quote>

<p>Simon wasn't convinced, but had network connectivity problems that made
continuing the debate difficult, and it ended.</p>

</section>

<section
  title="Including Kernel Headers In C++ Programs"
  subject="bug in socket.h (and maybe many other kernel headerfiles)"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_03/msg00405.html"
  posts="23"
  startdate="17 Sep 1999 00:00:00 -0800"
  enddate="21 Sep 1999 00:00:00 -0800"
>

<mention>Sean Hunter</mention>
<mention>Anthony Barbachan</mention>

<p>Uwe Koloska was writing a C++ program that needed kernel functions, but
found that including kernel headers (which are in C) would produce errors.
Anthony Barbachan recommended just editing the header files, since the
problem was only with null pointers handling; and Sean Hunter recommended
using 'extern "C" {}'. Later and elsewhere, Sean posted a one-line patch to
give an explicit cast to a null value (as he'd seen elsewhere in the patched
file), and Michael Elizabeth Chastain reported:</p>

<quote who="Michael Elizabeth Chastain">

<p>It Works For
Me (tm).</p>

<p>I have the same problem -- a C++ program that includes kernel header files
-- and your patch does indeed fix my problem. If it gets into the kernel
then I can take some nasty preprocessor kludges out of my source.</p>

<p>Here's a little background: I have a program like strace, which monitors the
system calls that *other programs* make. I need to #include the entire
userspace-to-kernel ABI so that I can monitor properly. Using glibc headers
doesn't meet my needs at all, because I am not calling these services, I am
using ptrace to watching other processes call these services.</p>

<p>I chose to write my program in C++ because I like OO programming.</p>

</quote>

<p>Jeff Dike replied:</p>

<quote who="Jeff Dike">

<p>I ran into a similar problem
with the user-mode kernel, and my fix for it might be applicable. I need to
#include both user and kernel headers, the kernel headers because I'm
building a kernel, the user headers because the lowest levels are
implemented in terms of system calls.</p>

<p>I found out that you are asking for a world of hurt if you include both user
and kernel headers into the same file. What I did was split my sources into
"user" and "kernel" files, which include only user and kernel headers,
respectively. Communication between these two groups happens in terms of
basic C types.</p>

<p>So, what might work for C++ is to have little C files which include the
kernel headers, which pass their information back out to the C++ files using
types that everyone agrees on.</p>

</quote>

</section>

<section
  title="Unsolved SMP Races Explored"
  subject="[patch] stime/settimeofday/adjtimex SMP races (2.2.12 and 2.3.18ac5)"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_03/msg00428.html"
  posts="16"
  startdate="17 Sep 1999 00:00:00 -0800"
  enddate="20 Sep 1999 00:00:00 -0800"
>
<topic>SMP</topic>

<p>Andrea Arcangeli posted a patch, and said:</p>

<quote who="Andrea Arcangeli">

<p>I reviewed the
time-related stuff in 2.2.12 and I found potential SMP races in the
time-related syscalls. Basically the only problem is that the time-syscalls
are not protecting against each other. They are only protecting themself
against the timer irq. And this may lead to SMP races.</p>

<p>Actually I don't know if these SMP races may be the source of the RTC
screwedup with ntpd enabled (also considering that ntpd seems single
threaded...). Anyway here it is the fix for the races I spotted so far. It's
against 2.2.12 but it applyes cleanly to all 2.2.x 2.3.x kernels out there
as there aren't been NTP/time changes since 2.2.0. You may want to try to
reproduce the RTC SMP race with this fix applyed (I can't reproduce in any
way here, but I am not sure I configured xntp hard enough to trigger the
race).</p>

</quote>

<p>Dave Madden reported failure with this patch, saying, <quote who="Dave
Madden">I still see gettimeofday() returning values
smaller than were previously returned from a userspace program, and a
prink() I put in arch/i386/kernel/time.c shows many more (smaller) time
backups.</quote> Ryan Murray reported initial success and was very happy,
but on reboot found that his hardware clock had warped to 2002, which wasn't
a good sign (Jonathan Disher cracked, <quote who="Jonathan Disher">At least it handled the Y2K rollover correctly
;-).</quote>).</p>

<p>There was no resolution during the thread.</p>

</section>

<section
  title="Kernel-Hacking HOWTO"
  subject="kernel-hacking-HOWTO: An lk primer seeks feedback"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_03/msg00625.html"
  posts="10"
  startdate="18 Sep 1999 00:00:00 -0800"
  enddate="23 Sep 1999 00:00:00 -0800"
>
<topic>FS: NFS</topic>
<topic>Samba</topic>

<mention>Philipp Rumpf</mention>
<mention>Neil Brown</mention>
<mention>Andi Kleen</mention>
<mention>Rusty Russell</mention>

<p>Paul Rusty Russell thanked Andi Kleen and Philipp Rumpf for their help, and
gave a pointer to his <a
href="http://www.samba.org/~netfilter/kernel-hacking-HOWTO/">Kernel-Hacking
HOWTO</a>. He explained, <quote who="Paul Rusty Russell">This document describes the common routines, locking systems
and general requirements for kernel code: its goal is to serve as a primer
for Linux kernel development.</quote></p>

<p>Everyone loved the document, and Neil Brown also posted a link to his <a
href="http://www.cse.unsw.edu.au/~neilb/oss/linux-commentary/">documentation
on the VFS layer and kNFSD</a>.</p>

</section>

<section
  title="GCC Bug, Workaround, And Controversy"
  subject="Possible GCC contamination of Linux"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_03/msg00834.html"
  posts="39"
  startdate="20 Sep 1999 00:00:00 -0800"
  enddate="25 Sep 1999 00:00:00 -0800"
>
<topic>Assembly</topic>

<p>Richard B. Johnson made a horrifying discovery. Apparently the C compiler,
compiled on a 686, had been generating binaries containing 686 opcodes, even
when explicitly told to compile for earlier processors. He guessed,
<quote who="Richard B. Johnson">So, is there the
possibility that something from the gcc library gets linked into the kernel?
If so, how would I prevent it from happening?</quote></p>

<p>Artur Frysiak said, <quote who="Artur Frysiak">Probably bug in gcc. Please add -mcpu=i486 and recompile
Linux kernel on i686. If works add this as workaround for i386 arch.</quote>
Richard tried this, in addition to compiling with "-fno-builtins", and ran
into a new difficulty: abs() was an undefined symbol. He added the macro
somewhere, and the problem went away: kernels compiled on a 686 would now
boot on a 486.</p>

<p>There followed a bit of discussion, and Richard said he'd post a patch after
the next clean Linux release; but Andrea Arcangeli objected:</p>

<quote who="Andrea Arcangeli">

<p>IMHO there's nothing to
change into the kernel.</p>

<p>I don't care at all how my gcc is been compiled for, the gcc output _must_
be the same for all GCC of such same version careless about which
optimizations are been used to compile gcc itself. The makefiles must ensure
that the libgcc is been compiled for i386 and the gcc build process may also
create a different libgcc.a for each different architecture supported by gcc
and then link the right one statically into the binary in function of the
flag specifyed to the gcc executable.</p>

<p>The output of gcc must be the same even if I'm cross compiling the kernel
for i386 on an Alpha. If I choose -march=386 and some 686 assembler goes
into the binary then gcc is definitly buggy and must be fixed.</p>

</quote>

<p>Richard agreed in theory, but pointed out that simple workarounds for these
kinds of compiler bugs were essential, since they couldn't depend upon those
other packages (whatever they happened to be) being properly maintained. But
Andrea stood firm, with:</p>

<quote who="Andrea Arcangeli">

<p>So the buggy compiler
must _not_ be used. If you don't fix the kernel then the debugger will be
sure fixed.</p>

<p>You just know the workaround and you can implement it by hand in the
meantime.</p>

<p>That's MHO at least.</p>

</quote>

<p>There was a bit of discussion around this point, with various folks taking
various positions.</p>

</section>

<section
  title="Support For Soundcard In Dell Latitude CPi 400 PPX"
  subject="Support for Neomagic audio controller requested."
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_03/msg01105.html"
  posts="2"
  startdate="21 Sep 1999 00:00:00 -0800"
  enddate="21 Sep 1999 00:00:00 -0800"
>
<topic>PCI</topic>
<topic>Sound</topic>

<mention>Roy Sigurd Karlsbakk</mention>

<p>Roy Sigurd Karlsbakk had a Dell Latitude CPi 400 PPX, with a sound card
listed in /proc/pci as follows:</p>

<pre>  Bus  1, device   0, function  1:
    Multimedia audio controller: Neomagic Unknown device (rev 0).
      Vendor id=10c8. Device id=8006.
      Medium devsel.  Fast back-to-back capable.  IRQ 5.
      Prefetchable 32 bit memory at 0xf5800000 [0xf5800008].
      Non-prefetchable 32 bit memory at 0xfda00000 [0xfda00000].</pre>

<p>The sound card didn't seem to be supported, and he asked for some help. Alan
Cox replied, <quote who="Alan Cox">It is supported in 2.2.13pre10
onwards</quote></p>

</section>

<section
  title="smbfs In 2.3.x"
  subject="[patch] smbfs in 2.3.18(ac#)"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_03/msg01133.html"
  posts="2"
  startdate="21 Sep 1999 00:00:00 -0800"
  enddate="22 Sep 1999 00:00:00 -0800"
>
<topic>FS: smbfs</topic>
<topic>Samba</topic>

<p>Urban Widmark posted a patch and announced:</p>

<quote who="Urban Widmark">

<p>This is my attempt at
getting smbfs to work with 2.3.x.</p>

<p>This patch:</p>

<ul>

<li>adds a 'get_cached_page' with inspiration from 2.2 mm/filemap.c</li>

<li>changes the locking for inode-&gt;readpage/writepage</li>

<li>tries to use macros instead of setting PG_ values</li>

<li>smb_write_one_page is now of type writepage_t</li>

<li>debug messages don't printk non-null terminated strings (it oops'ed me
...)</li>

</ul>

<p>This should apply cleanly to any 2.3.18 (+ac#).</p>

<p>I have tested this on a few machines (plain 2.3.18, ac5, ac7). Me and at
least one more person have been unable to crash it so maybe it is fit for a
development kernel. Oh, not only does it not crash, it shows files and
allows reading &amp; writing. :)</p>

</quote>

<p>Andrew Tridgell replied, <quote who="Andrew Tridgell">thanks! I also have some other changes pending for smbfs
that I'll send to Linus shortly. Jeremy and I are trying to get Samba 2.0.6
out in the next 10 days and I should have all the smbfs changes done by
then.</quote></p>

</section>

<section
  title="GCC v2.95 Or Higher Still Out Of Favor For 2.2.13pre11"
  subject="Linux 2.2.13pre11 aka &quot;Release Candidate #1&quot;"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_03/msg01196.html"
  posts="7"
  startdate="22 Sep 1999 00:00:00 -0800"
  enddate="24 Sep 1999 00:00:00 -0800"
>
<topic>SMP</topic>

<p>Alan Cox posted the changelog and announced 2.2.13pre11, saying:</p>

<quote who="Alan Cox">

<p>Ok this should fix the last few
bugs that needed closing, and some small fixes for the token ring (afaik
sktr still doesnt work but someone now seems to know why which is good)</p>

<p>I've got several other drivers and good patches that are queued. I'm going
to sit on most of them until 2.2.14. The only stuff I want for 2.2.13 now is
bug reports (and preferably fixes). Just bug fixes.</p>

<p>I'd like to get the reported network delay stuff nailed if possible and also
the SMP hang reports. I'm not interested in reports that include the knfsd,
nfs client or Ingo raid patches. Not because I think they are bound to be
the cause but because I want less variables - ditto stuff built with gcc
2.95 or later on x86</p>

<p>If you see hangs on unadulterated 2.2.13pre11 I definitely want to know. If
you can run the ikd patch and other tools to get dumps even better.</p>

</quote>

<p>Oliver Teuber reported that the new version broke Java on his system. He
posted his exploit:</p>

<pre>olibox:~ # java -version
java_ns version "1.1.7B"
olibox:~ # javac
Cannot open /proc/01129 for GC</pre>

<p>It seemed to him to be a problem with the leading 0, and Jeff Epler replied,
<quote who="Jeff Epler">Yes, this was mentioned to be
a deliberate change. Unfortunately, broken stuff like that risk forcing the
old behavior to be returned. The answer instead is to use a sprintf("%d")
instead of (apparently) %05d in the java bytecode interpreter's garbage
collection routines.</quote></p>

</section>

<section
  title="Problems With Logitech Mice In 2.2.x/2.3.x"
  subject="Mouse Problems W/Logitech"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_04/msg00161.html"
  posts="3"
  startdate="23 Sep 1999 00:00:00 -0800"
  enddate="24 Sep 1999 00:00:00 -0800"
>

<p>Sean King had a Logitech mouse model M-BA47, which worked fine under 2.0,
but who's wheel was not being recognized under 2.2.x kernels. Mark Henry
reported virtually the identical problem, only with a model M-RG45. Dag
Brattli also reported virtually the identical problem, with his MouseMan+
and TrackMan Marble+ not working on his laptop in the 2.2/2.3 series
(although he reported that they did work on his HP Vectra).</p>

<p>End Of Thread.</p>

</section>

<section
  title="Mailbox Corruption Under 2.3.18ac"
  subject="Mailbox corruption under 2.3.18ac7"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_04/msg00283.html"
  posts="15"
  startdate="23 Sep 1999 00:00:00 -0800"
  enddate="27 Sep 1999 00:00:00 -0800"
>

<mention>Alan Cox</mention>
<mention>Jeff Garzik</mention>

<p>Someone started experiencing mailbox corruption under 2.3.18ac7, which went
away when downgrading to 2.2.12; and several other folks confirmed the
problem. Jeff Garzik also confirmed it, and pointed out that it didn't seem
to occur in the stock 2.3.18; Alan Cox asked if the problem occurred under
2.3.18ac2, which might imply that the culprit was the flushpage fix; under
2.3.18ac4, which might imply that the culprit was kupdated; or under
2.3.18ac6, which would still leave several candidates. Later, Alan reported
that Jeff had found ac4 to be OK; and added that he suspected ac6, which
added several changes that might be related to the problem. No solution
presented itself during the thread.</p>

</section>

<section
  title="Situation Of Linux Networking Code"
  subject="Headerless packets hitting ethernet?"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_04/msg00277.html"
  posts="14"
  startdate="23 Sep 1999 00:00:00 -0800"
  enddate="27 Sep 1999 00:00:00 -0800"
>
<topic>Networking</topic>

<mention>Alan Cox</mention>
<mention>Rusty Russell</mention>

<p>In the course of discussion, Paul Rusty Russell said:</p>

<quote who="Paul Rusty Russell">

<p>I'm not going to make
myself popular here, but the network code is *not* easy to read.</p>

<p>#ifdef RANT</p>

<p>Consider: ip_route_output() returns a route, but you wonder if you have to
free it somehow? You look through ip_route_input, then ip_route_input_slow,
and verify that it's using a reference count.</p>

<p>Looking for _release, _unref etc. gets you nowhere; eventually you find some
code that uses ip_rt_put. Cool, so the networking jargon for release is
xxx_put().</p>

<p>So skb_put releases skbs then?  Not fucking likely.  kfree_skb does that: of
course, it doesn't actually kfree the skb unless the refcnt is 0. skb_push
and skb_pull have nothing to do with putting skbs on a stack.
skb_realloc_headroom is not really realloc: it returns a copy of the packet
with more headroom, without freeing the old one. Of course, the definition
for `struct sk_buff' is not in `sk_buff.h', but `skbuff.h'.</p>

<p>Consider tracing the code path of an IP packet from one NIC to another
involves 3 chained strategy functions (unless it's fast routed!):
packet_type's descriptive `func()', the routing code's output(), and then
the queuing disc's function if there is one.</p>

<p>Figuring out the packet_type's func is a simple matter of finding how
they're registered (dev_add_pack of course!) and looking for it in ipv4/, to
see that it's going to be ip_rcv().</p>

<p>Figuring out how the packet gets from ip_finish_output2 to dev_queue_xmit is
something I've NEVER managed to do; grepping for dev_queue_xmit or hh_output
gives nothing I can see, neither does the desparate resort of grepping for
`output'.</p>

<p>But if you manage to get through that, can you figure out that the queuing
discipline on the device has a queue: ethertap.c: doesn't set it statically,
or in init_module, nor register_netdev(), try ethertap_probe(), no, but it
calls net_init.c's ether_setup(), which doesn't set it either. grep'ing the
directory reveals that noone mentions `qdisc'.</p>

<p>By guessing, I look in sched/sch_generic.c: my, this dev_init_scheduler()
looks like it might be something, and grepping again finds it.</p>

<p>After all this, there's NO WAY you're going to bet that you didn't miss
something, or get it wrong: trying to figure what fields are going to be
valid in the skb at the end (and which of those is coincidence which won't
be true in the next kernel version) is not realistic.</p>

<p>#endif /*RANT*/</p>

<p>There are *reasons* why none of the external add-ins to the networking stack
have never been reliable worth a damn (masquerading, CIPE, Free/SWAN,
redirection etc) and there have been holes in our packet filtering (early
2.0 iirc). The network code simply isn't readable on any scale larger than a
single function, and it's not documented.</p>

<p>I have a huge respect for the hacking skills of the IP maintainers, but
don't be under any illusions that outsiders can make mods to the 500,000
lines of networking code. They can't.</p>

</quote>

<p>Alan Cox completely agreed that the networking code was tough to read, but
pointed out that changing the naming conventions (as Paul had seemed to
suggest) would break drivers and wreak havoc with driver writers. Peter
Benie replied:</p>

<quote who="Peter Benie">

<p>Changing the names now would
be a crazy idea, but a few more comments in the code wouldn't go amiss.</p>

<p>A lot of the networking code is conceptually simple. There's a lot of it,
which makes it tedious, but with a little time and patience, the code can be
followed. However, every so often, you hit a function pointer, such as
dst_entry.input or dst_entry.output. The problem with function pointers is
that once you dereference one, to understand the code, you need to find
where and why the pointer was set. A few lines of comments pointing people
in the right direction would be incredibly helpful. Without them, the code
has the property that to understand a small part of the code, you need to
understand _all_ of the code, which is a bad property, both for reliablility
and for security. I don't agree with Alexey's argument that the complex code
is just an exam; I certainly wouldn't push for changing the code to make it
easier for newbie programmers, but the existing code is tough even for
experienced programmers.</p>

<p>Even if you have read all the code and understand what the existing code
does right now, it is impossible to deduce from the code what the expected
semantics of an interface are. This makes it difficult to write code that
will stay working in future versions of the kernel. Without documentation,
you have to understand how different parts of the kernel interact with each
other, and as the code gets bigger and acquires more subsystems, this
becomes a much harder task - the complexity of the interactions goes up much
faster than the size of the code. With documented interfaces, it would be
possible to find bugs by checking that the code on both sides of an
interface obey the documented semantics and don't rely on undocumented
semantics. Note that I'm not advocating setting kernel internal interfaces
in stone, but I do want interfaces to be more obvious so people think harder
about the consequences for other people's code when they change the
semantics.</p>

</quote>

</section>

<section
  title="Kernel API Documentation System "
  subject="[patch] kernel API documentation system"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_04/msg00623.html"
  posts="16"
  startdate="26 Sep 1999 00:00:00 -0800"
  enddate="27 Sep 1999 00:00:00 -0800"
>
<topic>Virtual Memory</topic>

<mention>Jes Sorensen</mention>
<mention>Jeff Garzik</mention>

<p>Jeff Garzik posted a kernel API documentation system based on the one used
by Gnome, which would allow documentation to be generated from comments in
the source code itself. Jes Sorensen pointed out that putting the
automatically generated docs in the same directory as the others would make
it harder to keep track of what could be safely deleted. Jeff pointed out
that the system currently would only generate a single kernel-api.html file,
but agreed with Jes in principle, and suggested using a subdirectory off of
the current documentation directory.</p>

<p>Under the Subject: <a href="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_04/msg00721.html">Documentation / API thread</a>, Larry McVoy
said:</p>

<quote who="Larry McVoy">

<p>I've been following this
code / documentation thread for a while.</p>

<p>Here's a few points for consideration:</p>

<ol>

    <li> Incorrect documentation is _far_ worse than no documentation.</li>

    <li> Code gets updated, docs don't</li>

    <li> Documenting interfaces is important, documenting implementation is
         a great deal less important.</li>

    <li> Terseness is good.</li>

</ol>

<p>Given all that, you might consider documenting just the internal interfaces
and the semantics of those interfaces. For instance, what are the interfaces
to an inode? What are the semantics of those interfaces? What's the locking
model used from without the interface and from within the interface (they
are frequently different).</p>

<p>Diving into a ton of details about implementations specifics is going to do
nothing but clutter up the code. On the other hand, a set of docs which
defined the interfaces to the following set of kernel "objects" would be
something that a lot of people would use:</p>

<ul>

    <li> files </li>
    <li> file systems </li>
    <li> block, char devices </li>
    <li> network devices </li>
    <li> scsi devices (and layers) </li>
    <li> processes </li>
    <li> sockets </li>
    <li> VM - both the VM address space and the page cache </li>

</ul>

<p>That's probably an incomplete list but it's a good start.  I personally
would love to see just the interfaces documented - I could care less about
the implementation - my experience is that the implementation tends to
change and the docs tend to get out of date (and hence much worse than
nothing because they are misleading). But interfaces tend to live for a long
time.</p>

</quote>

</section>

<section
  title="Linux 2.2.x ISN Vulnerability"
  subject="Linux 2.2.x ISN Vulnerability"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_04/msg00630.html"
  posts="12"
  startdate="26 Sep 1999 00:00:00 -0800"
  enddate="27 Sep 1999 00:00:00 -0800"
>
<topic>BSD: OpenBSD</topic>
<topic>FS: NFS</topic>
<topic>Microsoft</topic>
<topic>Networking</topic>
<topic>Random Number Generation</topic>

<mention>Alexey Kuznetsov</mention>

<p>Someone posted this report of a Linux 2.2.x vulnerability:</p>

<quote who="nofirstname nolastname">

<p>TESO Security Advisory 26/09/1999</p>

<p>Linux Kernel 2.2.x ISN Vulnerability</p>

<p><strong>Summary</strong></p>

<p>A weakness within the TCP stack in Linux 2.2.x kernels has been discovered.
The vulnerability makes it possible to "blind-spoof" TCP connections. It's
therefore possible for an attacker to initiate a TCP connection from an
arbitrary non existing or unresponding IP source address, exploiting IP
address based access control mechanisms.</p>

<p>Linux 2.0.x kernels were tested against this attack and found not to be
vulnerable in any case.</p>

<p><strong>Systems Affected</strong></p>

<p>All systems running the kernel versions 2.2.x of the Linux operating system.
Linux 2.3.x systems may be affected, too, we didn't tested this versions.</p>

<p>In our test situations we noticed that it doesn't seem to matter whether the
TCP syncookie functionality was enabled or not (enabled within the kernel
and activated through the proc filesystem options).</p>

<p><strong>Tests</strong></p>

<p>This is the beginning of a log of a successfully mounted blind TCP spoofing
attack agains a Linux 2.2.12 system. (tcpdump output formatted for better
readability)</p>

<pre>    16:23:02.727540 attacker.522  &gt; victim.ssh  : S  446679473: 446679473(0)
    16:23:02.728371 victim.ssh    &gt; attacker.522: S 3929852318:3929852318(0)
    16:23:02.734448 11.11.11.11.522 &gt; victim.ssh: S  446679473: 446679473(0)
    16:23:02.734599 victim.ssh &gt; 11.11.11.11.522: S 3929859164:3929859164(0)
    16:23:03.014941 attacker.522  &gt;   victim.ssh: R  446679474: 446679474(0)
    16:23:05.983368 victim.ssh &gt; 11.11.11.11.522: S 3929859164:3929859164(0)
    16:23:06.473192 11.11.11.11.522 &gt; victim.ssh: . ack 3929855318
    16:23:06.473427 victim.ssh &gt; 11.11.11.11.522: R 3929855318:3929855318(0)
    16:23:06.554958 11.11.11.11.522 &gt; victim.ssh: . ack 3929855319
    16:23:06.555119 victim.ssh &gt; 11.11.11.11.522: R 3929855319:3929855319(0)
    16:23:06.637731 11.11.11.11.522 &gt; victim.ssh: . ack 3929855320
    16:23:06.637909 victim.ssh &gt; 11.11.11.11.522: R 3929855320:3929855320(0)
    ...</pre>

<p>The first ISN of the victim's host is 3929852318, which is within a SYNACK
packet to the attackers host. This is unspoofed and can be easily snagged by
the attacker. At the same time the attacker sent out the first unspoofed SYN
packet he sent a spoofed SYN packet from 11.11.11.11 too. This packet is
answered by the victims host too with the ISN of 3929859164. The difference
between the first visible ISN and the second ISN is only
(3929859164-3929852318) = 6846.</p>

<p>Please notice that all TCP and IP parameters of the spoofed packet, except
for the IP source address are the same as of the unspoofed packet. This is
important (see below).</p>

<p>This small differences within the initial TCP sequence number (ISN) is
exploitable. In other tests, where both hosts were unlagged we even had
differences below 500 sometimes.</p>

<p>We've managed to successfully blind spoof TCP connections on different Linux
2.2.x systems, that is reaching the TCP "ESTABLISHED" state without being
able to sniff the victim host.</p>

<p><strong>Impact</strong></p>

<p>By sending packets from a trusted source address, attackers could possibly
bypass address based authentication and security mechanisms.</p>

<p>There have been similiar exploiting technics, aimed especially at r* and NFS
services, in the past that demonstrated the security impact of weak ISNs
very well. We have written a working exploit to demonstrate the weakness.</p>

<p><strong>Explanation</strong></p>

<p>The problem relies on a implementation flaw within the random ISN algorithm
in the Linux kernel.</p>

<p>The problem is within drivers/char/random.c, line 1684:</p>

<pre>    __u32 secure_tcp_sequence_number(__u32 saddr, __u32 daddr,
                                     __u16 sport, __u16 dport)
    {
            ...
            static __u32    secret[12];
            ...
            secret[0]=saddr;
            secret[1]=daddr;
            secret[2]=(sport &lt;&lt; 16) + dport;

            seq = (halfMD4Transform(secret+8, secret) &amp;
                   ((1&lt;&lt;HASH_BITS)-1)) + count;
            ...
    }</pre>

<p>As already said, in our spoofed TCP SYN packet only the IP source address
differs, that is only secret[0], so of 12*4 random bytes used to create the
sequence number from, only 4 bytes differ. Obviously the hash created by
halfMD4Transform has similarities if the source and destination ports and
the destination address are the same.</p>

<p>It seems that the src-adress is least-significant to the above MD4
algorithm. Changing the source-ports too, makes the 2 ISNs more differ. Due
to the short gap of time, the last</p>

<pre>            seq += tv.tv_usec + tv.tv_sec*1000000;</pre>

<p>is useless. This may be the reason why this bug may have survived long: In
any real network situation it is uncommon that the source and destination
ports are equal in two different connections on one host.</p>

<p>Further analyzation of the hash algorithm in this routine may result in a
better ISN prediction than the one we use (range prediction).</p>

<p><strong>Solution</strong></p>

<p>First: It's always unwise to rely on address based authentication, because
in a sniffable enviroment, such as the Internet, there are always means of
bypassing address based authentication.</p>

<p>Second: The press shouldn't hype this as _THE_ Linux bug.. everyone having
looked at the ISNs/DNS Sequence numbers of any of Microsoft's operating
systems knows that their 'random numbers' are _much_ easier targets to use
for IP and DNS spoofing attacks. For a a description how the ISN numbers of
the Microsoft Windows NT TCP stack have even weakened with the latest
Service Packs, you may want to browse the latest postings to the Bugtraq
security mailing list [1] or read [2]. Well.. not that it matters.. but who
uses Microsoft software anyway ?</p>

<p>The Linux kernel developers have been notified at the same time as the
public Linux community, so a safe patch should be available real soon.</p>

<p><strong>Acknowledgments</strong></p>

<p>The bugdiscovery and the exploit is due to:</p>

<p>Stealth <a
href="http://www.kalug.lug.net/stealth">http://www.kalug.lug.net/stealth</a></p>

<p>S. Krahmer <a
href="http://www.cs.uni-potsdam.de/homepages/students/linuxer">http://www.cs.uni-potsdam.de/homepages/students/linuxer</a></p>

<p>This advisory has been written by typo and scut.<br /> The tests and further
analyzation were done by stealth and scut.<br /> The demonstration exploit has
been written by S. Krahmer.</p>

<p><strong>Contact Information</strong></p>

<p>The teso crew can be reached by mailing to <a
href="mailto:teso@shellcode.org">teso@shellcode.org</a>. Our webpage is at
<a href="http://teso.scene.at/">http://teso.scene.at/</a></p>

<p><strong>References</strong></p>

<p>[1] Mail to the Bugtraq mailing list From: Roy Hills
&lt;bugtraq-l@NTA-MONITOR.COM&gt; Subject: NT Predictable Initial TCP
Sequence numbers - changes observed with SP4</p>

<p>[2] Microsoft Knowledge Database Article ID: Q192292 "Unpredictable TCP
Sequence Numbers in SP4".</p>

<p>[3] libUSI++, a spoofing library <a
href="http://www.cs.uni-potsdam.de/homepages/students/linuxer/">http://www.cs.uni-potsdam.de/homepages/students/linuxer/</a></p>

<p>[4] TESO <a href="http://teso.scene.at/">http://teso.scene.at/</a></p>

<p>[5] S. Krahmer <a
href="http://www.cs.uni-potsdam.de/homepages/students/linuxer">http://www.cs.uni-potsdam.de/homepages/students/linuxer</a></p>

<p><strong>Disclaimer</strong></p>

<p>This advisory does not claim to be complete or to be usable for any purpose.
Especially information on the vulnerable systems may be inaccurate or wrong.
The supplied exploit is not to be used for malicious purposes, but for
educational purposes only.</p>

<p>This advisory is free for open distribution in unmodified form. Articles
that are based on information from this advisory should include link [4] and
[5].</p>

<p><strong>Exploit</strong></p>

<p>We've created a working exploit to demonstrate the vulnerability. The
exploit needs libUSI++ installed, which can be obtained through [3].</p>

<p>The exploit is available from either</p>

<p><a href="http://teso.scene.at/">http://teso.scene.at/</a></p>

<p>or</p>

<p><a
href="http://www.cs.uni-potsdam.de/homepages/students/linuxer/">http://www.cs.uni-potsdam.de/homepages/students/linuxer/</a></p>

</quote>

<p>Alexey Kuznetsov was horrified and posted a two-line patch (to which David
S. Miller said elsewhere, <quote who="David S. Miller">Nice work Alexey,
I've applied your patch.</quote>). Manfred Spraul posted a one-liner, and
said, <quote who="Manfred Spraul">I think the problem is not the
halfMD4Transform. The problem could be caused by the fact that the random
part of secret remains zero. Could you please check if the newest
2.2.13pre12 kernel from Alan is vulnerable? This bug was found a few days
ago.</quote></p>

<p>Andrea Arcangeli was initially sceptical about whether Manfred's point was
significant, saying, <quote who="Andrea Arcangeli">Such part of the secret
should remains constant across lots of seconds so it shouldn't matter if
it's zero or the right value for this issue.</quote> But an hour later he
replied to himself, with, <quote who="Andrea Arcangeli">Hmm I think I was
wrong. I was focusing on the zero issue. The fact that the secret is zero
infact is not the real issue as the secret may be zero even with the bug
fixed. I think the real problem was that they _known_ the random part of the
secret (that _incidentally_ was zero 8).</quote></p>

<p>The initial poster replied:</p>

<quote who="nofirstname nolastname">

<p>I think that the
implementation of the secure TCP Sequence number algorithm within the Linux
kernel is flawed from ground on.</p>

<p>I agree, using known data (port numbers, addresses) as "secret" data to hash
is false. Instead a good PRNG should be used everytime a sequence number is
needed, independent to any TCP data. Operating systems such as OpenBSD do
have cryptographical safe Sequence number generators, why should Linux go
the unsafe way ?</p>

<p>But again, this advisory shows the general lack of security within the old
protocol suites. TCP Sequence numbers were never meant to be secure, a 32
bit number just cannot guarantee security at all. Later when the first
spoofing vulnerabilities were discovered the reasons of the sequence number
shifted from a "to order data" meaning to a "guarantee security"
meaning.</p>

</quote>

<p>To the person's second paragraph above, Alan Cox replied, <quote who="Alan
Cox">You can't just use a random number generator. There are _strict_ rules
about sequence spaces keeping ordering. Otherwise your risk data
corruption,</quote> and to his third paragraph, Alan replied, <quote
who="Alan Cox">Correct. You should be using encrypted IP. Unfortunately the
US government still puts its paranoia before its people's safety</quote></p>

<p>There was a bit more discussion, but Alexey's patch seemed to be the fix,
and the thread petered out.</p>

</section>

<section
  title="ptrace Patch To Enable Changing System Call Numbers"
  subject="[PATCH] i386 ptrace patch needed for user-mode port"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_04/msg00685.html"
  posts="2"
  startdate="26 Sep 1999 00:00:00 -0800"
  enddate="27 Sep 1999 00:00:00 -0800"
>

<p>Jeff Dike posted a patch, and said, <quote who="Jeff Dike">Below is a small patch to ptrace which enables it to change
system call numbers. This is needed in order to run the user-mode port. It
adds range checks to ptrace and to the slow system call path. I've been
feeding this sporadically to Linus for the last couple of months with no
result. If anyone can clue me in as to what would make this more acceptable,
please do so.</quote></p>

<p>Pavel Machek replied, <quote who="Pavel Machek">Afaik
you are not the first person to want this small patch. It is usefull for
other purposes, too (ask mec@shout.net). Just push it little harder
:-).</quote></p>

</section>

<section
  title="PPP Over Ethernet"
  subject="PPPoE"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_04/msg00697.html"
  posts="2"
  startdate="26 Sep 1999 00:00:00 -0800"
  enddate="26 Sep 1999 00:00:00 -0800"
>
<topic>Networking</topic>

<p>PPP over ethernet was first discussed in <kcref subject="PPPoE?"
startdate="24 Aug 1999 00:00:00 -0800"></kcref>, and then again in <kcref subject="Kernel
Support For PPP over Ethernet" startdate="08 Sep 1999 00:00:00 -0800"></kcref>. This time,
Gary Simmons explained, <quote who="Gary Simmons">My ADSL service provider
is in the transition to switiching to a PPPoE service, currently both DHCP
and PPPoE work but within a month I will be forced to use PPPoE. They have
provided a userspace PPPoE driver and have distributed both the binary and
source thereto. The problem however is despite the driver working, it uses a
monsterous 30% CPU usage. I recall hearing of an effort to develop the PPPoE
kernelspace driver that was much faster, what is the status of this? I could
provide the source to the driver I speak of however it has a license
agreement which appears to state that even thoguht he source is provided you
may not use it for any useful purpose other than compiling it to obtain the
binary. Any further information would be appreciated.</quote></p>

<p>Alan Cox replied, <quote who="Alan Cox">There is a 2.3.x driver for PPP in
kernel space. It won't ever be in 2.2.x. If you look on freshmeat you will
find a GPL'd userspace PPPoE for Linux 2.0.x/2.2.x that is a lot more
efficient.</quote> EOT.</p>

</section>

<section
  title="Problems With The linux-kernel Mailing List"
  subject="LIST ADMIN: notes and warnings about subscriptions/problems.."
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_04/msg00747.html"
  posts="1"
  startdate="27 Sep 1999 00:00:00 -0800"
  enddate="27 Sep 1999 00:00:00 -0800"
>

<p>Matti Aarnio reported some troubles with the mailing list:</p>

<quote who="Matti Aarnio">

<p>Over the weekend we have
seen several weird email problems in MTA logs and reports.</p>

<ul>

<li>Some people use Web-browsers for their email, and have had problems
unsubscribing (or subscribing, even). Commonly the problem seems to be that
they send email with VCARD attachments, and/or have TEXT and HTML forms of
email text in the same message -- Majordomo understands only attachementless
TEXT/PLAIN messages, NOTHING ELSE.</li>

<li>

<p>People using services of  MAIL.COM/INAME.NET  "free email" are in danger
of loosing their Linux related feeds, unless they will get their service
provider to remove false static blacklisting entry for FUNET's new server
address I am using as their fanout:</p>

<pre>&lt;smtp email.com sbragion@email.com 60001&gt;: ...\
  &lt;&lt;- RCPT To:&lt;sbragion@email.com&gt; ORCPT=rfc822;sbragion@email.com
  -&gt;&gt; 523 &lt;sbragion@email.com&gt;... The IP address 128.214.248.46 is blacklisted.
Contact your ISP administrator for details.</pre>

<p>We are now doing extra tricks to redirect email to those people via other
servers than the one they have blocked, but that situation won't last
forever, and then those subscribers will likely be summarily DELETED. (That
provider doesn't seem to respond to my email about the issue..)</p>

</li>

<li>

<p>Some MTAs are doing email transport envelope address verifications, but
are having some local problems and falsely rejecting VGER's emails:</p>

<pre>&lt;smtp matrix.it mmeregalli@matrix.it 60001&gt;: ...\
  &lt;&lt;- MAIL From:&lt;owner-linux-kernel-outgoing@vger.rutgers.edu&gt; BODY=8BITMIME SIZE=2551
  -&gt;&gt; 501 &lt;owner-linux-kernel-outgoing@vger.rutgers.edu&gt;...
Sender domain must exist</pre>

<p>ANY five-hundred (5xx) series response leads very quickly to deletion of the
recipient for which it happens..</p>

<p>Any four-hundred (4xx) series response which are found in "delivery timed
out" type of reports is also likely to cause removal of the recipients.
(Right now lots of Taiwanese addresses have been removed after recent
earth-quakes in there have downed their machines...)</p>

</li>

<li>

<p>Some new software is around, possibly a SMTP "security" proxy/firewall:</p>

<pre>&lt;smtp ncd.com keithp@ncd.com 60001&gt;: ...\
   &lt;&lt;- HELO nic2.funet.fi
   -&gt;&gt; 500 Command unrecognized</pre>

<p>I would like to know what that is about ? No, not that one anymore -
currently SMTP/smap, which works.</p>

<pre>&lt;smtp mail.zhongxing.com Orient@mail.zhongxing.com 60001&gt;: ...\
   &lt;&lt;- HELO nic2.funet.fi
   -&gt;&gt; 500 Session already established.
   The domain name [nic2.funet.fi] passed in with HELO will be ignored.
The current domain name of sending SMTP is [web.china-insurance.com].</pre>

<p>but what is this ? (Telnet to their SMTP server - you see two spontaneous
reply codes, although they do take a bit to emerge out...)</p>

</li>

</ul>

<p>Thanks for help on any (sub-)issue you can provide.</p>

</quote>

</section>

<section
  title="Epox Moherboards"
  subject="Epox Motherboards"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9909_04/msg00758.html"
  posts="6"
  startdate="27 Sep 1999 00:00:00 -0800"
  enddate="27 Sep 1999 00:00:00 -0800"
>

<p>Pierfrancesco Caci asked if there were any known problems with Epox EP-BX3
motherboards, and Andrea Arcangeli replied, <quote who="Andrea Arcangeli">If
it has the VIA chipset then enable PCI_QUIRKS.</quote> Wakko Warner asked,
<quote who="Wakko Warner">If this isn't enabled, would this effect using
ide-scsi on via chipsets on cdroms?</quote> (his 2.2.10 box had locked up
when he tried this), and Alan Cox replied, <quote who="Alan Cox">The VIA
thing is basically only tickled by the ISA sound drivers in which case
QUIRKS works, and very rarely by the Z85230 driver, in which case it
doesnt.</quote> Sean Connor pointed out that the latest BIOS upgrade would
fix Wakko's UDMA lockup problems.</p>

</section>

</kc>
