<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="235" date="24 Oct 2003 00:00:00 -0800" />

<stats posts="1483" size="6699" contrib="435" multiples="205" lastweek="150">

<person posts="55" size="158" who="&quot;David S. Miller&quot;" />
<person posts="47" size="161" who="Geert Uytterhoeven" />
<person posts="32" size="97" who="Greg KH" />
<person posts="30" size="151" who="Vojtech Pavlik" />
<person posts="29" size="129" who="Jamie Lokier" />
<person posts="28" size="142" who="Adrian Bunk" />
<person posts="25" size="68" who="Linus Torvalds" />
<person posts="24" size="114" who="Andrea Arcangeli" />
<person posts="24" size="78" who="Andrew Morton" />
<person posts="23" size="139" who="Dave Jones" />
<person posts="23" size="89" who="Jeff Garzik" />
<person posts="20" size="55" who="Chris Wright" />
<person posts="19" size="100" who="Jens Axboe" />
<person posts="16" size="78" who="Matthew Wilcox" />
<person posts="16" size="67" who="Russell King" />
<person posts="16" size="48" who="Andi Kleen" />
<person posts="14" size="56" who="David Mosberger" />
<person posts="14" size="53" who="David Woodhouse" />
<person posts="14" size="48" who="(Andries.Brouwer)" />
<person posts="13" size="51" who="&quot;Randy.Dunlap&quot;" />
<person posts="13" size="51" who="Larry McVoy" />
<person posts="13" size="46" who="(Valdis.Kletnieks)" />
<person posts="12" size="83" who="Pavel Machek" />
<person posts="12" size="71" who="Dmitry Torokhov" />
<person posts="12" size="44" who="Bradley Chapman" />
<person posts="12" size="43" who="Steven Cole" />
<person posts="12" size="42" who="Nick Piggin" />
<person posts="12" size="28" who="&quot;Breno&quot;" />
<person posts="11" size="43" who="Andreas Schwarz" />
<person posts="11" size="37" who="Rik van Riel" />
<person posts="11" size="32" who="Ingo Molnar" />
<person posts="10" size="30" who=" (bill davidsen)" />
<person posts="10" size="26" who="(davej)" />
<person posts="9" size="79" who="Arnaldo Carvalho de Melo" />
<person posts="9" size="28" who="=?iso-8859-1?Q?J=F6rn?= Engel" />
<person posts="9" size="27" who="Sam Ravnborg" />
<person posts="9" size="27" who="Andries Brouwer" />
<person posts="8" size="83" who="=?iso-8859-1?q?B=F6rkur=20Ingi=20J=F3nsson?=" />
<person posts="8" size="28" who="Erik Andersen" />
<person posts="8" size="28" who="Peter Chubb" />
<person posts="8" size="25" who="Pavel Machek" />
<person posts="8" size="24" who="Marcelo Tosatti" />
<person posts="7" size="53" who="Peter Osterlund" />
<person posts="7" size="34" who="Willy Tarreau" />
<person posts="7" size="33" who="Len Brown" />
<person posts="7" size="28" who="Herbert Poetzl" />
<person posts="7" size="27" who="Rob Landley" />
<person posts="7" size="21" who="Alan Cox" />
<person posts="7" size="21" who="Mike Fedyk" />
<person posts="7" size="19" who="(viro)" />
<person posts="6" size="59" who="Zwane Mwaikambo" />
<person posts="6" size="56" who="&quot;Martin J. Bligh&quot;" />
<person posts="6" size="33" who="Tomas Szepe" />
<person posts="6" size="28" who="Joerg Schilling" />
<person posts="6" size="27" who="&quot;Nakajima, Jun&quot;" />
<person posts="6" size="24" who="Andi Kleen" />
<person posts="6" size="24" who="John Bradford" />
<person posts="6" size="22" who="&quot;Ihar 'Philips' Filipau&quot;" />
<person posts="6" size="21" who="Grant Grundler" />
<person posts="6" size="19" who="Benjamin Herrenschmidt" />
<person posts="6" size="19" who="Maciej Zenczykowski" />
<person posts="6" size="19" who="Mikael Pettersson" />
<person posts="6" size="18" who="Christoph Hellwig" />
<person posts="6" size="16" who="Felipe Alfaro Solana" />
<person posts="5" size="67" who="Samuel Flory" />
<person posts="5" size="57" who="Brian Gerst" />
<person posts="5" size="47" who="Michael Hunold" />
<person posts="5" size="23" who="&quot;Brown, Len&quot;" />
<person posts="5" size="21" who="&quot;Murray J. Root&quot;" />
<person posts="5" size="21" who=" (Eric W. Biederman)" />
<person posts="5" size="20" who="Muli Ben-Yehuda" />
<person posts="5" size="20" who="Mikulas Patocka" />
<person posts="5" size="19" who="&quot;Robert T. Johnson&quot;" />
<person posts="5" size="16" who="Benjamin LaHaise" />
<person posts="5" size="16" who="William Lee Irwin III" />
<person posts="5" size="16" who="Pau Aliagas" />
<person posts="5" size="15" who="John Cherry" />
<person posts="5" size="15" who="Derek Foreman" />
<person posts="5" size="14" who="&quot;Martin Schwidefsky&quot;" />
<person posts="5" size="13" who="&quot;Norris, Brent&quot;" />
<person posts="4" size="63" who="Nikola Knezevic" />
<person posts="4" size="21" who="Herbert Xu" />
<person posts="4" size="20" who="Andi Kleen" />
<person posts="4" size="16" who="&quot;Sebastian Piecha&quot;" />
<person posts="4" size="16" who="Malte =?iso-8859-1?q?Schr=F6der?=" />
<person posts="4" size="16" who="Matt Gibson" />
<person posts="4" size="15" who="Takashi Iwai" />
<person posts="4" size="14" who="&quot;Petr Vandrovec&quot;" />
<person posts="4" size="14" who="Arjan van de Ven" />
<person posts="4" size="14" who="Philippe Troin" />
<person posts="4" size="14" who="Nigel Cunningham" />
<person posts="4" size="14" who="Frank Cusack" />
<person posts="4" size="13" who="Andreas Schwab" />
<person posts="4" size="13" who="Roger Luethi" />
<person posts="4" size="12" who="Jean-Marc Spaggiari" />
<person posts="4" size="12" who="Patrick Mochel" />
<person posts="4" size="12" who="Boszormenyi Zoltan" />
<person posts="4" size="10" who="Karol Kozimor" />
<person posts="4" size="9" who="(noreply)" />
<person posts="3" size="47" who="Gabor MICSKO" />
<person posts="3" size="40" who="Henrik Christian Grove" />
<person posts="3" size="26" who="Bjorn Helgaas" />
<person posts="3" size="24" who="Arun Sharma" />
<person posts="3" size="21" who="Arkadiusz Miskiewicz" />
<person posts="3" size="21" who="Rusty Russell" />
<person posts="3" size="18" who="Martin Kacer" />
<person posts="3" size="17" who="Jan Evert van Grootheest" />
<person posts="3" size="15" who="Steven Dake" />
<person posts="3" size="15" who="Voicu Liviu" />
<person posts="3" size="14" who="Andreas Jellinghaus" />
<person posts="3" size="13" who="Simon Ask Ulsnes" />
<person posts="3" size="12" who="Tom Rini" />
<person posts="3" size="11" who="David =?iso-8859-1?Q?H=E4rdeman?=" />
<person posts="3" size="11" who="&quot;H. Peter Anvin&quot;" />
<person posts="3" size="11" who="Hugh Dickins" />
<person posts="3" size="10" who="Joshua Kwan" />
<person posts="3" size="10" who="Trond Myklebust" />
<person posts="3" size="10" who="Daniel Jacobowitz" />
<person posts="3" size="10" who="Ricardo Galli" />
<person posts="3" size="9" who="Artur Klauser" />
<person posts="3" size="9" who="Michael Frank" />
<person posts="3" size="9" who="Ruth Ivimey-Cook" />
<person posts="3" size="9" who="Dan" />
<person posts="3" size="8" who=" (Danny ter Haar)" />
<person posts="3" size="8" who="Matti Aarnio" />
<person posts="3" size="8" who="&quot;Kevin P. Fleming&quot;" />
<person posts="3" size="8" who="Kevin Breit" />
<person posts="3" size="8" who="Roman Zippel" />
<person posts="3" size="8" who="Bartlomiej Zolnierkiewicz" />
<person posts="3" size="8" who="Robert Love" />
<person posts="3" size="8" who="Frank v Waveren" />
<person posts="3" size="7" who="&quot;Michal Semler (volny.cz)&quot;" />
<person posts="3" size="7" who="Pete Zaitcev" />
<person posts="3" size="7" who="Bernd Eckenfels" />
<person posts="3" size="7" who="Marek Szyprowski" />
<person posts="2" size="56" who="Martin Schwidefsky" />
<person posts="2" size="52" who="Ricky Beam" />
<person posts="2" size="41" who="Martin Pitt" />
<person posts="2" size="39" who="Wim Van Sebroeck" />
<person posts="2" size="33" who="Jason Lewis" />
<person posts="2" size="25" who="Chris Sykes" />
<person posts="2" size="24" who="Marcello" />
<person posts="2" size="17" who="Whit Blauvelt" />
<person posts="2" size="15" who="Andrew Miklas" />
<person posts="2" size="15" who="Manfred Spraul" />
<person posts="2" size="14" who="Rick Lindsley" />
<person posts="2" size="12" who="devik" />
<person posts="2" size="12" who="Duncan Sands" />
<person posts="2" size="11" who="&quot;Daniel Blueman&quot;" />
<person posts="2" size="9" who="Dana Lacoste" />
<person posts="2" size="9" who="Ulrich Drepper" />
<person posts="2" size="9" who="Ed Sweetman" />
<person posts="2" size="9" who="(linas)" />
<person posts="2" size="9" who="Jaroslav Kysela" />
<person posts="2" size="8" who="Axel Siebenwirth" />
<person posts="2" size="8" who="Hans Reiser" />
<person posts="2" size="8" who="Cesar Eduardo Barros" />
<person posts="2" size="7" who="David Jez" />
<person posts="2" size="7" who="David Brownell" />
<person posts="2" size="7" who="Miles Bader" />
<person posts="2" size="7" who="Ian Hastie" />
<person posts="2" size="7" who="Pay Day Now" />
<person posts="2" size="7" who="Yaroslav Halchenko" />
<person posts="2" size="7" who="&quot;Luck, Tony&quot;" />
<person posts="2" size="7" who="Jan De Luyck" />
<person posts="2" size="7" who="Davide Libenzi" />
<person posts="2" size="7" who="(mail)" />
<person posts="2" size="7" who="Kronos" />
<person posts="2" size="7" who="Matthew Dharm" />
<person posts="2" size="7" who="=?iso-8859-1?B?bWFyaW8gY2FtdfFhcw==?=" />
<person posts="2" size="6" who="Erik Mouw" />
<person posts="2" size="6" who="Petr Vandrovec" />
<person posts="2" size="6" who="Paul Jakma" />
<person posts="2" size="6" who="Jean-Guillaume" />
<person posts="2" size="6" who="Chris Friesen" />
<person posts="2" size="6" who="Patrick Mau" />
<person posts="2" size="6" who="Paul Symons" />
<person posts="2" size="6" who="Erik Hensema" />
<person posts="2" size="6" who="Sunday Church" />
<person posts="2" size="6" who="Armin Schindler" />
<person posts="2" size="6" who="Kay Sievers" />
<person posts="2" size="6" who="(reg)" />
<person posts="2" size="6" who="Piotr =?iso-8859-2?q?Szyma=F1ski?=" />
<person posts="2" size="6" who="Ivan Kokshaysky" />
<person posts="2" size="6" who="Stephen Hemminger" />
<person posts="2" size="5" who="Xose Vazquez Perez" />
<person posts="2" size="5" who="Andreas Steinmetz" />
<person posts="2" size="5" who="Jan Dittmer" />
<person posts="2" size="5" who="Pekka Savola" />
<person posts="2" size="5" who="&quot;Alexey V. Yurchenko&quot;" />
<person posts="2" size="5" who="James Morris" />
<person posts="2" size="5" who="(Matt_Domsch)" />
<person posts="2" size="5" who="Michael Schierl" />
<person posts="2" size="5" who="&quot;Tomita, Haruo&quot;" />
<person posts="2" size="5" who="Indraneel Majumdar" />
<person posts="2" size="5" who="Hanna Linder" />
<person posts="2" size="5" who="Ian Molton" />
<person posts="2" size="5" who="&quot;Paul Rolland&quot;" />
<person posts="2" size="5" who=" (=?iso-8859-1?q?M=E5ns_Rullg=E5rd?=)" />
<person posts="2" size="5" who="Krzysztof Halasa" />
<person posts="2" size="5" who="(marcelo)" />
<person posts="2" size="5" who="&quot;syn uw&quot;" />
<person posts="2" size="4" who="Anton Blanchard" />
<person posts="2" size="4" who="Catalin BOIE" />
<person posts="2" size="4" who="ocsy" />
<person posts="1" size="75" who="long" />
<person posts="1" size="45" who="Boszormenyi Zoltan" />
<person posts="1" size="41" who="&quot;Anonymous Coward&quot;" />
<person posts="1" size="40" who="Stephen Lynch" />
<person posts="1" size="34" who="=?ISO-8859-2?B?Tmlrb2xhIEtuZb5ldmnm?=" />
<person posts="1" size="34" who="&quot;Detlef Schmicker \(Siebertz Electronic GmbH\)&quot;" />
<person posts="1" size="33" who="Pat Gefre" />
<person posts="1" size="25" who="Magnus Andersson" />
<person posts="1" size="21" who="Paolo Ornati" />
<person posts="1" size="20" who="Jeffrey Forman" />
<person posts="1" size="20" who="Andrejs Dubovskis" />
<person posts="1" size="19" who="&quot;Michael J. Cohen&quot;" />
<person posts="1" size="15" who="Tupshin Harper" />
<person posts="1" size="14" who="JaReK" />
<person posts="1" size="14" who="Meelis Roos" />
<person posts="1" size="12" who="Joe Perches" />
<person posts="1" size="12" who="Andy Lutomirski" />
<person posts="1" size="12" who="Steve Dickson" />
<person posts="1" size="12" who="Andreas Oberritter" />
<person posts="1" size="12" who="Steve Dickson" />
<person posts="1" size="9" who="Adam K Kirchhoff" />
<person posts="1" size="9" who="Jes Sorensen" />
<person posts="1" size="8" who="&quot;Nguyen, Tom L&quot;" />
<person posts="1" size="8" who="Lenar =?iso-8859-15?q?L=F5hmus?=" />
<person posts="1" size="7" who="Dave Hansen" />
<person posts="1" size="7" who="(linux)" />
<person posts="1" size="6" who="&quot;detach&quot;" />
<person posts="1" size="6" who="&quot;Eric Balsa&quot;" />
<person posts="1" size="6" who="&quot;[ATR]Dj-Death&quot;" />
<person posts="1" size="5" who="Theodore Ts'o" />
<person posts="1" size="5" who="=?ISO-8859-1?Q?Ram=F3n?= Rey Vicente" />
<person posts="1" size="5" who="&quot;srikrish&quot;" />
<person posts="1" size="5" who="=?ISO-8859-1?Q?S=E9bastien?= Villemot" />
<person posts="1" size="5" who="(markw)" />
<person posts="1" size="5" who="Jurriaan" />
<person posts="1" size="5" who="Bernardo Innocenti" />
<person posts="1" size="5" who="James Cleverdon" />
<person posts="1" size="5" who="(andrea)" />
<person posts="1" size="5" who="Thomas Schlichter" />
<person posts="1" size="5" who="Simon Kirby" />
<person posts="1" size="5" who="Yasunori Goto" />
<person posts="1" size="5" who="Mike Christie" />
<person posts="1" size="4" who="Frank Elsner" />
<person posts="1" size="4" who="David Turner" />
<person posts="1" size="4" who="Martin List-Petersen" />
<person posts="1" size="4" who="Tom Zanussi" />
<person posts="1" size="4" who="(kernel)" />
<person posts="1" size="4" who="&quot;Cathal A. Ferris&quot;" />
<person posts="1" size="4" who="Georgi Chorbadzhiyski" />
<person posts="1" size="4" who="Kimmo Sundqvist" />
<person posts="1" size="4" who="&quot;Ivo van Doorn&quot;" />
<person posts="1" size="4" who="&quot;Robert L. Harris&quot;" />
<person posts="1" size="4" who="(yodaiken)" />
<person posts="1" size="4" who="David Lang" />
<person posts="1" size="4" who="Enrico Scholz" />
<person posts="1" size="4" who="&quot;Mr. James W. Laferriere&quot;" />
<person posts="1" size="4" who="Orion Poplawski" />
<person posts="1" size="4" who=" (Klaus Dittrich)" />
<person posts="1" size="4" who="Stefan Winter" />
<person posts="1" size="4" who="Thomas Glanzmann" />
<person posts="1" size="4" who="Rogier Wolff" />
<person posts="1" size="4" who="Bob Gill" />
<person posts="1" size="4" who="Brett" />
<person posts="1" size="4" who="Albert Cahalan" />
<person posts="1" size="4" who="Oliver Tennert" />
<person posts="1" size="4" who="Stephen Clark" />
<person posts="1" size="4" who="Jules Colding" />
<person posts="1" size="4" who=" &lt;brigittoume@katamail.com&gt;" />
<person posts="1" size="3" who="Felipe W Damasio" />
<person posts="1" size="3" who="Jules Colding" />
<person posts="1" size="3" who="Michael Pyne" />
<person posts="1" size="3" who="Guennadi Liakhovetski" />
<person posts="1" size="3" who="Ian Wienand" />
<person posts="1" size="3" who="(dfages)" />
<person posts="1" size="3" who="David Ford" />
<person posts="1" size="3" who="Richard Greaney" />
<person posts="1" size="3" who="Kai Germaschewski" />
<person posts="1" size="3" who="(co-ord29)" />
<person posts="1" size="3" who="Olivier Galibert" />
<person posts="1" size="3" who="Santiago Garcia Mantinan" />
<person posts="1" size="3" who="(n0ano)" />
<person posts="1" size="3" who="Chris Rankin" />
<person posts="1" size="3" who="Richard Guy Briggs" />
<person posts="1" size="3" who="&quot;P. Christeas&quot;" />
<person posts="1" size="3" who="Ani Joshi" />
<person posts="1" size="3" who="=?ISO-8859-15?Q?Sven_K=F6hler?=" />
<person posts="1" size="3" who="Jan Rychter" />
<person posts="1" size="3" who="Lou Langholtz" />
<person posts="1" size="3" who="Corey Minyard" />
<person posts="1" size="3" who="Urban Widmark" />
<person posts="1" size="3" who="John Goerzen" />
<person posts="1" size="3" who="Martin Zwickel" />
<person posts="1" size="3" who="Justin Cormack" />
<person posts="1" size="3" who="Christopher Li" />
<person posts="1" size="3" who="Domen Puncer" />
<person posts="1" size="3" who="Pekka Pietikainen" />
<person posts="1" size="3" who="(Gary_Lerhaupt)" />
<person posts="1" size="3" who="Bill Davidsen" />
<person posts="1" size="3" who="(linuxmail)" />
<person posts="1" size="3" who="Jochen Hein" />
<person posts="1" size="3" who="Bas Mevissen" />
<person posts="1" size="3" who="Gustavo Guillermo" />
<person posts="1" size="3" who="Helmut Djurkin" />
<person posts="1" size="3" who="&quot;Jeroen Massar&quot;" />
<person posts="1" size="3" who="Jos Hulzink" />
<person posts="1" size="3" who="&quot;Christian Koch&quot;" />
<person posts="1" size="3" who="Kenneth Johansson" />
<person posts="1" size="3" who="Dimitris Michailidis" />
<person posts="1" size="3" who="Jan-Benedict Glaw" />
<person posts="1" size="3" who="Sander van Malssen" />
<person posts="1" size="3" who="&quot;Van Maren, Kevin&quot;" />
<person posts="1" size="3" who="(root)" />
<person posts="1" size="3" who="Ken Ryan" />
<person posts="1" size="3" who="=?iso-8859-1?q?Chris=20Rankin?=" />
<person posts="1" size="3" who="Oscar Peredo" />
<person posts="1" size="3" who="&quot;J.A. Magallon&quot;" />
<person posts="1" size="3" who="Samium Gromoff" />
<person posts="1" size="3" who="&quot;Mrs.Jumai Abdul Azad.&quot;" />
<person posts="1" size="3" who="Arnd Bergmann" />
<person posts="1" size="3" who="&quot;Gallery-a&quot;" />
<person posts="1" size="3" who="Michael Schierl" />
<person posts="1" size="3" who="Joe Korty" />
<person posts="1" size="3" who="Ian Hastie" />
<person posts="1" size="3" who="Peter Chubb" />
<person posts="1" size="3" who="Patrick McHardy" />
<person posts="1" size="3" who="&quot;Breno Silva&quot;" />
<person posts="1" size="3" who="Scott Robert Ladd" />
<person posts="1" size="3" who="(david)" />
<person posts="1" size="3" who="(beh)" />
<person posts="1" size="3" who="Jean-pierre Cartal" />
<person posts="1" size="3" who="Knezevic Nikola" />
<person posts="1" size="3" who="Eric Altendorf" />
<person posts="1" size="3" who="Charles Cazabon" />
<person posts="1" size="3" who="Christoph Klocker" />
<person posts="1" size="3" who="Matthias Urlichs" />
<person posts="1" size="3" who="Vanitha" />
<person posts="1" size="3" who="Gabriel Paubert" />
<person posts="1" size="3" who="&quot;Mudama, Eric&quot;" />
<person posts="1" size="3" who="Andreas Dilger" />
<person posts="1" size="3" who="Brandon Low" />
<person posts="1" size="2" who="Stephen Anthony" />
<person posts="1" size="2" who="Alex Riesen" />
<person posts="1" size="2" who="Stefan Smietanowski" />
<person posts="1" size="2" who="Gianni Tedesco" />
<person posts="1" size="2" who="Helge Hafting" />
<person posts="1" size="2" who="Benedikt Heinen" />
<person posts="1" size="2" who="Justin Piszcz" />
<person posts="1" size="2" who="Gerd Knorr" />
<person posts="1" size="2" who="Marc-Christian Petersen" />
<person posts="1" size="2" who="&quot;Mark W. Alexander&quot;" />
<person posts="1" size="2" who="Hong Feng" />
<person posts="1" size="2" who="Pontus Fuchs" />
<person posts="1" size="2" who="&quot;Barry K. Nathan&quot;" />
<person posts="1" size="2" who="&quot;Hua Zhong&quot;" />
<person posts="1" size="2" who="Thomas Molina" />
<person posts="1" size="2" who="Willie McKemie" />
<person posts="1" size="2" who="Piotr Roszatycki" />
<person posts="1" size="2" who="=?EUC-KR?B?waTFwr+1?=" />
<person posts="1" size="2" who="Rudo Thomas" />
<person posts="1" size="2" who="Shaya Potter" />
<person posts="1" size="2" who="Jes Sorensen" />
<person posts="1" size="2" who="Jakub Jelinek" />
<person posts="1" size="2" who="Andreas Mohr" />
<person posts="1" size="2" who="Matias Alejo Garcia" />
<person posts="1" size="2" who="johann lombardi" />
<person posts="1" size="2" who="Remi Colinet" />
<person posts="1" size="2" who="&quot;Dave Hatton&quot;" />
<person posts="1" size="2" who="Jack Bowling" />
<person posts="1" size="2" who="Michal Kochanowicz" />
<person posts="1" size="2" who="Smurf" />
<person posts="1" size="2" who="Anoop Rajendra" />
<person posts="1" size="2" who="Jose Luis Domingo Lopez" />
<person posts="1" size="2" who="Rogier Wolff" />
<person posts="1" size="2" who="Al Smith" />
<person posts="1" size="2" who="Erik Mouw" />
<person posts="1" size="2" who="Ookhoi" />
<person posts="1" size="2" who="&quot;Norman Diamond&quot;" />
<person posts="1" size="2" who="Mathieu LESNIAK" />
<person posts="1" size="2" who="Yifan Zhu" />
<person posts="1" size="2" who="&quot;Dave Gilbert (Home)&quot;" />
<person posts="1" size="2" who="Christian" />
<person posts="1" size="2" who="&quot;Larry Compton&quot;" />
<person posts="1" size="2" who="Joshua Weage" />
<person posts="1" size="2" who="Kenny Simpson" />
<person posts="1" size="2" who="Stef van der Made" />
<person posts="1" size="2" who="&quot;KALBAGILMATH, VISHWANATH&quot;" />
<person posts="1" size="2" who="George Anzinger" />
<person posts="1" size="2" who="&quot;Donna Slaughter&quot;" />
<person posts="1" size="2" who="Francois Romieu" />
<person posts="1" size="2" who="&quot;Sergey S. Kostyliov&quot;" />
<person posts="1" size="2" who="Jim Deas" />
<person posts="1" size="2" who="James Bottomley" />
<person posts="1" size="2" who="David Howells" />
<person posts="1" size="2" who="Vinay K Nallamothu" />
<person posts="1" size="2" who="Matt Heler" />
<person posts="1" size="2" who="=?ISO-8859-1?Q?Fr=E9d=E9ric_L=2E_W=2E_Meunier?=" />
<person posts="1" size="2" who="&quot;H.Rosmanith (Kernel Mailing List)&quot;" />
<person posts="1" size="2" who="Mario Lang" />
<person posts="1" size="2" who="Daniel McNeil" />
<person posts="1" size="2" who="Gawain Lynch" />
<person posts="1" size="2" who="David Ford" />
<person posts="1" size="2" who="ocsy" />
<person posts="1" size="2" who="&quot;Dennis Grant&quot;" />
<person posts="1" size="2" who="Marcel Sebek" />
<person posts="1" size="2" who="bert hubert" />
<person posts="1" size="2" who="&quot;Rivalino M. Jr.&quot;" />
<person posts="1" size="2" who="Stan Bubrouski" />
<person posts="1" size="2" who="insecure" />
<person posts="1" size="2" who="Kallol Biswas" />
<person posts="1" size="2" who="Brian Jackson" />
<person posts="1" size="2" who="Panos Christeas" />
<person posts="1" size="2" who="Norbert Fabritius" />
<person posts="1" size="2" who="Shine Mohamed" />
<person posts="1" size="2" who="Joe McClain" />
<person posts="1" size="2" who="Bob" />
<person posts="1" size="2" who="Sean Neakums" />
<person posts="1" size="2" who="Judith Lebzelter" />
<person posts="1" size="2" who="Jurgen Kramer" />
<person posts="1" size="2" who="Daniel Drake" />
<person posts="1" size="2" who="Wade" />
<person posts="1" size="2" who="(pavel)" />
<person posts="1" size="2" who="Aaron Lehmann" />
<person posts="1" size="2" who="Marcelo Tosatti" />
<person posts="1" size="2" who="=?iso-8859-1?Q?Maciej_G=F3rnicki?=" />
<person posts="1" size="2" who="&quot;M.S. Lucas&quot;" />
<person posts="1" size="2" who="Raj" />
<person posts="1" size="2" who="Luca Montecchiani" />
<person posts="1" size="2" who="Dan Hollis" />
<person posts="1" size="1" who="Jani Monoses" />

</stats>

<section
  title="Setuid Bug In Recent 2.6-test Kernels"
  subject="suid bit behaviour modification in 2.6.0-test5"
  posts="6"
  startdate="20 Sep 2003 16:45:05 -0800"
  enddate="28 Sep 2003 19:05:03 -0800"
>
<topic>FS: XFS</topic>

<mention>Andries Brouwer</mention>
<mention>Bill Davidsen</mention>

<p>Jean-pierre Cartal noticed that the 2.6-test behavior had changed relative
to 2.4, in that <quote who="Jean-pierre Cartal">suid root files don't loose
their suid bit when they get overwritten by a normal user.</quote> He asked
if this was intended, or a bug. Ian Hastie confirmed the bahavior, saying,
<quote who="Ian Hastie">it seems the bug is something to do with a directory
listing cache somewhere.  If you sync after copying over the file the suid
bit is shown as having been cleared.</quote> Bill Davidsen asked what would
happen if someone attempted to execute the program before the sync was done.
Would it run with setuid powers?</p>

<p>At this point Andries Brouwer said that he'd already made a fix for this,
and asked if it wasn't working. Ian replied that on his XFS filesystem,
Andries' fix did <i>not</i> work. End Of Thread.</p>

</section>

<section
  title="Hyperthreading Configuration Questions For 2.4"
  subject="HT not working by default since 2.4.22"
  posts="20"
  startdate="22 Sep 2003 01:00:32 -0800"
  enddate="29 Sep 2003 21:27:32 -0800"
>
<topic>Hyperthreading</topic>
<topic>Power Management: ACPI</topic>

<mention>Jun Nakajima</mention>
<mention>Jeff Garzik</mention>

<p>Marcelo Tosatti pointed out:</p>

<quote who="Marcelo Tosatti">

<p>Ive received a few complaints that HT, starting from 2.4.22, needs
ACPI enabled. Users who had HT working now have to use ACPI and they didnt
before.</p>

<p>We should have HT working AUTOMATICALLY without ACPI enabled and WITHOUT
any special boot option, as before.</p>

</quote>

<p>He asked Len Brown to take a look at it; and Jun Nakajima confirmed that
Len was working on it. Len replied, <quote who="Len Brown">CONFIG_ACPI_HT_ONLY
"CPU Enumeration Only" is under the CONFIG_ACPI menu at the request of Red
Hat, who wanted to be able to disable anything to do with ACPI with a single
option (CONFIG_ACPI).  HT depends on this part of ACPI b/c the logical HT
processors are enumerated using the ACPI MADT LAPIC entries.</quote> A couple
posts down the line he proposed:</p>

<quote who="Len Brown">

<p>what to do?</p>

<p>We could make 2.4.23 like 2.4.21 where ACPI code for HT is included in
the kernel even when CONFIG_ACPI is not set.</p>

<p>Or we could leave 2.4.23 like 2.4.22 where disabling CONFIG_ACPI really
does remove all ACPI code in the kernel; and when CONFIG_ACPI is set,
CONFIG_ACPI_HT_ONLY is available to limit ACPI to just the tables part needed
for HT.</p>

<p>I'd prefer the later (doing nothing) because CONFIG_ACPI really should
exclude all of ACPI.  If we start including bits of ACPI without CONFIG_ACPI,
where do we stop?</p>

<p>I'm not sure how to address "compatibility" and "regression" concepts in the
face of changing config files.  Make oldconfig will ask you about CONFIG_ACPI
-- perhaps I should update the help text to emphasize that it is necessary
for HT, and that if selected, CONFIG_ACPI_HT_ONLY is then available?</p>

<p>Is defconfig used?  Does it define "compatibility"?  If so, we could
define CONFIG_ACPI &amp;&amp; CONFIG_ACPI_HT_ONLY in defconfig to get the
2.4.21 behavior -- then could have our cake and eat it too.</p>

<p>I don't feel strongly about which way to go, but I will want to keep 2.4
and 2.6 as similar as possible in this area.</p>

</quote>

<p>Marcelo affirmed that <quote who="Marcelo Tosatti">CONFIG_ACPI_HT should
be not dependant on CONFIG_ACPI.</quote> He asked Len to make it clear
in the configuration that this dependency did not exist, and to move the
CONFIG_ACPI_HT item out of the ACPI section. Jeff Garzik suggested that
it might be confusing to see "ACPI" in the name of a configuration option
that was outside of the ACPI section, and proposed "CONFIG_HYPERTHREAD" or
"CONFIG_HT" as alternatives. But Len opposed the change, on the grounds that
the current name accurately described the true situation. Jeff again said
that "CONFIG_HT" would be much clearer to the reader; but Len insisted,
<quote who="Len Brown">The problem is that "!CONFIG_HT" is meaningless.
It implies that you can have CONFIG_ACPI but still "config-out" HT, which
you can't.</quote> Len stood firm, but said he did implement Marcelo's
requirements; and the thread ended.</p>

</section>

<section
  title="More BitKeeper Debate; 'Arch' A Potential Replacement"
  subject="log-buf-len dynamic"
  posts="97"
  startdate="22 Sep 2003 11:48:33 -0800"
  enddate="29 Sep 2003 10:21:14 -0800"
>
<topic>Version Control</topic>
<topic>Virtual Memory</topic>

<mention>Marcelo Tosatti</mention>
<mention>Jeff Garzik</mention>
<mention>Pau Aliagas</mention>

<p>In the course of discussion, Andrea Arcangeli remarked that if Marcelo
Tosatti used an open source tool instead of BitKeeper for development,
it would be possible to modify the tool to solve a particular changelog
feature that seemed desirable. Linus Torvalds replied:</p>

<quote who="Linus Torvalds">

<p>Andrea - please just shut up.</p>

<p>Until you can point to anything even _remotely_ as good as BitKeeper,
there's no point in just continually trying to start a flame-war.</p>

<p>I agree that Larry ends up being a jerk about it too, but I can well see
that he reacts negatively to your totally unproductive comments.</p>

<p>BK has the email in the meta-data already, and a lot of tools to extract
all the necessary data from mailboxes etc.</p>

<p>In other words, your argument is nonexistant, and your whole posting is
pointless - except as flame-bait. And yes, Larry likely _will_ eat your bait,
something I've berated him for in private emails several times.</p>

<p>So shut up or put up. Go off and write your own tool. In the meantime,
stop complaining about people who wrote _their_ tools and selected a license
that you wouldn't choose.</p>

<p>When you write some code of your own, you get to choose the license. And
I haven't seen you make CVS usable - I've only seen you bitch, moan, and
complain..</p>

</quote>

<p>Andrea replied, <quote who="Andrea Arcangeli">if I would know that you
will eventually get interested into anything not bitkeeper I would be glad
to hack in this area (I can use some spare time too) to provide a service
to the community. The main reason I will never use  b*tkeeper is because I
want to retain the freedom to do that, something that you and many others
won't be able to do anymore.</quote> He suggested that CVSPS and Subversion
might be adequate for kernel development. Linus replied:</p>

<quote who="Linus Torvalds">

<p>Neither of those are anywhere close to bk.</p>

<p>In particular, they don't support any kind of distributed development.
They aren't even trying to, I'm sad to say. And to me, distributed development
is the only thing that matters.</p>

<p>And I realise it isn't to you. You don't much care about merging, you
only have your tree you need to worry about.</p>

<p>And you know what? You shouldn't have to care. I'm not berating you for
using CVS/SVN/whatever. I'm berating you for complaining when _others_
have come to the conclusion that CVS/SVN/whatever really doesn't cut it
for them.</p>

<p>Use CVS and be happy. But don't complain to others that have needs that
CVS simply can't fill.</p>

</quote>

<p>In the same post, he added:</p>

<quote who="Linus Torvalds">

<p>I don't care about source control software, so I'm not likely to start
coding one any time soon (like "ever") - but if I did, I'd be totally _ashamed_
to push lower-quality stuff on users. I'd make excuses for it, and I'd 'fess
up when they didn't work. And I'd try my best to make it better. Even if it
took me a decade.</p>

<p>In contrast, what you're doing is saying "ignore the good stuff: use
this crap, because I'm buddies with the people developing it. We aren't
even trying to compete on technical terms, but we'll push our version on you
because we've got religion, and this doesn't contain any cow-meat". That's
bad - especially if others DON'T share the religion.</p>

<p>I'm ok with other people using NT. When it's better for them, that's
their choice. I work hard to make sure that the Linux kernel is technically
superior, and if I feel it isn't I want to fix it. Because I do _not_ want
people using Linux for religious reasons. I want people to use Linux because
it is _better_ for them, of because they truly believe that they can make
it so (or at least have fun trying).</p>

<p>Take pride in what you do. But don't make that pride blind you to what
is good technology, and what isn't. Don't get religion. It's a science.</p>

</quote>

<p>At this point, Pau Aliagas suggested that <a
href="http://savannah.gnu.org/projects/gnu-arch">arch</a> would do everything
Linus needed and more. But there was no discussion about this.</p>

<p>Close by, Larry McVoy asked Andrea to stop <quote who="Larry McVoy">biting
the hand that is held out to you.</quote> A couple posts later, Larry
remarked that Andrea was not doing significant work in the kernel, and so
did not deserve respect. Andrea pointed out that he had played a major role
in the development of the Linux Virtual Memory subsystem, which he said was
probably running on Larry's own systems. Larry said a Virtual Memory subsystem
was child's play compared with his own accomplishments, particularly the VM
subsystem he worked on for SunOS. At around this point Linus said:</p>

<quote who="Linus Torvalds">

<p>Larry, I think you remember the good old days of SunOS, when 16MB of
RAM was a lot, and people expected less of their hardware. In particular,
interactive programs used to have a _tiny_ footprint. Often even under X.</p>

<p>Then we put Solaris, Motif and CDE on those suckers, and it was
horrible.</p>

<p>Yeah, SunOS was nice. But I really think it's the access patterns that
changed.</p>

</quote>

<p>Elsewhere but close by, Linus said to Andrea, <quote who="Linus
Torvalds">your lack of interest in BK does _not_ explain why you whine about
it, and try to goad Larry, and just generally are nasty about it.</quote>
He said that a person had the right to choose the license under which they
released their own code, and that no one had the right to get mad about
it. Elsewhere he reiterated that Andrea's comments were impolite and even
offensive; but Roman Zippel came in with, <quote who="Roman Zippel">You
think this is impolite? I've been quiet lately in these flame wars, because
I couldn't have staid that polite to an arrogant asshole, but I won't stay
quiet when Larry can now insult other developers and gets away with it. If
someone is whining around here, then it's only Larry. A lot of people
are contributing to the kernel, but he is the only one constantly whining
around that he should be treated special and makes silly threats.  Can we
please get cause and effect right here? Of course Larry is completely free to
choose whatever license he wants, but advertising a stupid license in a free
software environment will of course cause disagreement and complaints. There
is _nothing_ anyone but Larry can do anything about it, but amazingly enough
Larry manages to take every single complaint as personal insult and makes
all of the bk flame wars worse than they already are.</quote></p>

<p>Elsewhere, Eric W. Biederman said, <quote who="Eric W. Biederman">There
are subprojects that are currently using BK that you can't even get the code
without BK.  And the only reason they are using BK is they are attempting
to following how Linux is managed.  So having the Linux kernel development
use BK does have some down sides.</quote> Linus replied, <quote who="Linus
Torvalds">That's actually a pretty good point. I end up releasing "sparse"
only as a BK archive, simply because I'm too lazy to care and there aren't
enough people involved (and those that _are_ involved do actually end up
re-exporting it as non-BK, but that doesn't invalidate your point).  I don't
know what the solution to it might be - but I don't think the reason they are
using BK is that they are trying to emulate "the great kernel project". I
know it wasn't for me - it's just that once you get used to BK, there's no
way you'll ever go back to CVS willingly.</quote> Jeff Garzik affirmed that
all his new projects used BitKeeper, because it was so much better than
CVS. Linus also said, <quote who="Linus Torvalds">As Larry will tell you,
the technical problems are bigger than you imagine.  So a BK killer won't
be coming any time soon, methinks.</quote></p>

<p>Elsehwere, Eric remarked that the arch tool did not handle distributed
repositories or repo-to-repo merges very well, and Miles Bader replied,
<quote who="Miles Bader">Are you are kidding?  Arch is _insanely_ good at
handling both distributed repositories and merging -- those are if anything
its greatest strengths.  Everyday development of tla (the latest/greatest arch
implementation) involves many people with their own repositories, merging back
and forth.</quote> And Davide Libenzi added, <quote who="Davide Libenzi">I
definitely agree. It's about a couple of months that I'm playing with it and I
have to say that it works great with distributed development. It basically born
with that as the very first design rule. It also look very stable AFAICS. And,
the old collection of shell scripts (that I didn't like in the beginning)
is shaping out toward C code. In three words, I like it. I cannot compare
it to bk because I never used it (not because of the license, and not even
for political/personal reasons, but because I haven't had any time to do
it in the past), and I am sure it still lacks of some useful features when
matched with bk, but the fundamentals are definitely there.</quote></p>

</section>

<section
  title="Full-Time Developer For Software Suspend"
  subject="Announce/Thanks: Nigel Cunningham to work full-time on Swsusp for a while."
  posts="4"
  startdate="25 Sep 2003 11:27:09 -0800"
  enddate="26 Sep 2003 03:03:17 -0800"
>
<topic>Software Suspend</topic>

<p>Nigel Cunningham announced:</p>

<quote who="Nigel Cunningham">

<p>This is to announce that LinuxFund.org (<a
href="http://www.linuxfund.org">http://www.linuxfund.org</a>) have kindly
agreed to support me while I work on Software Suspend full time for a while,
beginning 1 October.</p>

<p>This development should lead to a faster completion of the 2.4 version,
and a faster release of the port to 2.6. Lord willing, a test version of
Software Suspend for the 2.6 kernel that has all the features of the 2.4
version will be available within a couple of weeks.</p>

</quote>

<p>Several folks offered their congratulations.</p>

</section>

<section
  title="Using VMWare Under 2.6 Kernels"
  subject="vmware in Linux 2.6"
  posts="9"
  startdate="26 Sep 2003 01:46:01 -0800"
  enddate="26 Sep 2003 12:46:12 -0800"
>
<topic>Networking</topic>
<topic>Power Management: ACPI</topic>

<mention>Mans Rullgard</mention>

<p>Mans Rullgard asked about VMWare under Linux 2.6, as the kernel modules
would no longer compile with recent kernels. The vmmon module in particular
gave big errors, and Mans could find nothing about it on google. Martin
Zwickel and Petr Vandrovec said that the problems were probably addressed
in 'vmware-any-any-update40'. Petr added, <quote who="Petr Vandrovec">And
except that this patch makes thing compilable, it also makes driver a bit
friendlier to the MM subsystem, it allows you to use VMware on 4G/4G host,
and it properly handles bridged networking on adapters using hardware (or
pseudohardware...) Tx checksumming (although only for IPv4 due to features of
dev_queue_xmit_nit).</quote> Jan Rychter added, <quote who="Jan Rychter">For
those who run VMware on notebooks with ACPI, another patch is necessary,
otherwise ACPI C-states handling doesn't notice VMware and as a result
the guest system is unbearably slow.</quote> Petr asked, <quote who="Petr
Vandrovec">If this patch is for vmmon, can you share it with VMware (or
with me and I'll then share it with VMware) ? I cannot explain why ACPI
does not notice that kernel is spending about 99% of time in the kernel,
being very busy with hard work...</quote> Jan didn't reply on the list, but
in his earlier post he'd also asked if VMWare rolled patches like this back
into their own sources, for public release, and Petr said, <quote who="Petr
Vandrovec">Yes. Currently VMware's &amp; mine code is identical except that
mine vmmon supports all released products since VMware 2.0.0 through VMware
express, GSX &amp; so on up to the VMware 4.0.2, while VMware's code supports
only product it is shipped with. And you need C++ (for templates which are
used for generating code for different product versions) with mine code,
while you get one unwind template instance from VMware.</quote></p>

</section>

<section
  title="Updated exec-shield Patch Released For Several Kernel Trees"
  subject="[patch] updated exec-shield patch, 2.4/2.6 -G3"
  posts="3"
  startdate="26 Sep 2003 04:28:54 -0800"
  enddate="26 Sep 2003 09:24:49 -0800"
>
<topic>FS: sysfs</topic>

<p>Ingo Molnar announced:</p>

<quote who="Ingo Molnar">

<p>in the recent boom of buffer-overflow bugs in various open-source packages
i got lots of requests for exec-shield being ported to various popular
kernel trees. Here's the latest update of exec-shield:</p>

<p>against vanilla 2.6.0-test5:</p>

<p>        <a href="http://redhat.com/~mingo/exec-shield/exec-shield-2.6.0-test5-G2">redhat.com/~mingo/exec-shield/exec-shield-2.6.0-test5-G2</a></p>

<p>against vanilla 2.4.22:</p>

<p>        <a href="http://redhat.com/~mingo/exec-shield/exec-shield-2.4.22-G2">redhat.com/~mingo/exec-shield/exec-shield-2.4.22-G2</a></p>

<p>against 2.4.22-ac + NPTL:</p>

<p>        [ redhat.com/~mingo/nptl-patches/nptl-2.4.22-ac1-A2 ]</p>

<p>        redhat.com/~mingo/exec-shield/exec-shield-2.4.22-ac1-nptl-G2</p>

<p>Changes in this exec-shield version:</p>

<p>

<ul>

<li>more refined support for PIE binaries (Position Independent Executables

<ul><li>a feature of latest binutils)</li></ul>

</li>

<li>complete randomization of the whole address space [except the static
   binary mappings for non-PIE binaries]. Randomized executable mappings,
   heap, data mappings, stack, env/argv/aux spaces. With PIE binaries
   there's not a single constant address left.</li>

<li>ability to turn off exec-shield without changing the binary.
   (try 'setarch i386 /bin/cat /proc/self/maps'.)</li>

<li>various compatibility features and fixes.</li>

<li>randomization can be turned off via
/proc/sys/kernel/exec-shield-randomize.</li>

</ul>

</p>

<p>valid /proc/sys/kernel/exec-shield levels are:</p>

<p>   = 0   exec-shield disabled<br />
   = 1   exec-shield on PT_GNU_STACK executables [ie. binaries compiled
                                                  with newest gcc]<br />
   = 2   (default) exec-shield on all executables</p>

<p>value 1 is recommended with glibc and gcc versions that support
PT_GNU_STACK all across the spectrum. (Fedora Core test2 [released
yesterday] includes all of this and all applications were recompiled to
have valid PT_GNU_STACK settings.) On other systems the value of '2' is
recommended, use setarch for those binaries that cannot take exec-shield
[eg. Loki games].</p>

</quote>

<p>Valdis Kletnieks was really happy to see this, saying, <quote who="Valdis
Kletnieks">I'm using a fairly current Rawhide here (within last 2 weeks
or so).  Applied with 2 or 3 minor conflicts and a few fuzz/delta messages
against -test5-mm4 (I have a refactored patch if anybody is interested).
It booted OK, seems to be working well enough that e-mail and XFree (even with
the evil binary NVidia driver) are functional.</quote> Ingo remarked, <quote
who="Ingo Molnar">btw., i have a patch against Linus' latest, -bk12 too: <a
href="http://redhat.com/~mingo/exec-shield/exec-shield-2.6.0-test5-bk12-G2">redhat.com/~mingo/exec-shield/exec-shield-2.6.0-test5-bk12-G2</a></quote></p>

</section>

<section
  title="Restricting Untrusted Binaries"
  subject="Syscall security"
  posts="13"
  startdate="26 Sep 2003 06:05:50 -0800"
  enddate="28 Sep 2003 03:38:54 -0800"
>

<mention>Muli</mention>

<p>Maciej Zenczykowski requested:</p>

<quote who="Maciej Zenczykowski">

<p>I'm wondering if there is any way to provide per process bitmasks of
available/illegal syscalls.  Obviously this should most likely be inherited
through exec/fork.</p>

<p>For example specyfying that pid N should return -ENOSYS on all syscalls
except read/write/exit.</p>

<p>The reason I'm asking is because I want to run totally untrusted statically
linked binary code (automatically compiled from user submitted untrusted
sources) which only needs read/write access to stdio which means it only
requires syscalls read/write/exit + a few more for memory alloc/free (like brk)
+ a few more generated before main is called (execve and uname I believe).</p>

<p>Currently I'm running the code in a chroot'ed environment (to an empty
dir) under a 'nobody' uid/gid with no open fd's except for std in/out/err
with limits for mem, processor usage, open files, processes (to 1), etc.
Obviously this still allows calling code like 'time', 'getuid', etc and
the like.  Modifying the compiler (or removing the headers) won't help since
at worst I can code it in asm in the source or even in a plain byte table.</p>

<p>I have a working (very much a hack) patch which turns of all but 7 (or so)
of the syscalls (via pseudo-bitmaps).</p>

<p>Basically my question is: has this been done before (if so where/when?),
what would be considered 'the right' way to do this, would this be a feature
to include in the main kernel source?</p>

</quote>

<p>Joe McClain recommended <a
href="http://www.citi.umich.edu/u/provos/systrace/">Systrace</a>. Chris Wright
also said to Maciej, <quote who="Chris Wright">A simple LSM module can do this
for you.  It will have a little more overhead than denying at the syscall entry
point, but it's certainly going to be more flexible.</quote> Muli Ben-Yehuda
also replied to Maciej, saying, <quote who="Muli Ben-Yehuda">syscalltrack
can do it, per executable / user / syscall parameters / whatever, but
it's per syscall. Writing a perl script or C program to iterate over the
supplied syscall list and write the allow/deny rules is pretty simple. Also,
syscalltrack is meant for debugging, not security, so if you want something
that's 100% tight you'd better go with one of the Linux security modules
based on the LSM framework.</quote></p>

</section>

<section
  title="Possible Linksys GPL Violations: The Saga Continues"
  subject="Linksys WRT54G: Part 2"
  posts="9"
  startdate="28 Sep 2003 15:14:24 -0800"
  enddate="29 Sep 2003 14:15:37 -0800"
>
<topic>FS: CIFS</topic>
<topic>FS: ramfs</topic>
<topic>Networking</topic>
<topic>Samba</topic>

<mention>Alan Cox</mention>
<mention>Jeremy Allison</mention>

<p>For earlier discussions of this, see <kcref subject="Linksys WRT54G and
the GPL" startdate="07 Jun 2003 18:41:23 -0800"/>, and <kcref subject="GPL
violations by wireless manufacturers" startdate="24 Jun 2003 02:10:23 -0800"/>. This time, Andrew Miklas began the current thread with:</p>

<quote who="Andrew Miklas">

<p>A few months ago, I wrote to the kernel list describing the relationship
between Linksys (now business unit of Cisco Systems), their WRT54G 802.11g
wireless home gateway, and Linux.  At the time, we had recently discovered
that the WRT54G was using a great deal of software made available under the
GPL, but was not giving credit to the authors, or providing the source as
required by the GPL.</p>

<p>After a bit of public pressure, Linksys posted their "GPL Code Center"
[1], where they claim that "the GPL source code contained in this product is
available for free download" [2].  Shortly after the code center was made
available, a group of developers pointed out to Linksys that their source
code, particularly their Linux kernel code, was incomplete.</p>

<p>Previously, it was thought that the WRT54G source releases had only
neglected to include the source code for the various kernel modules used to
run the ethernet and wireless interfaces.  However, at this time, it is clear
that the kernel proper of the WRT54G itself has had functionality added to it.
This functionality is not present in the kernel code that Linksys has provided
at their "GPL Code Center".</p>

<p>That is to say, there is code STATICALLY LINKED with the Linux kernel
running this device that is not present in the source download.  This code
seems to be shared between the Broadcom ethernet and wireless chips.
It appears to be primarily responsible for configuring the Sonics'
SiliconBackplane and handling DMA transactions for both devices.</p>

<p>==========================================</p>

<p>The incompleteness of the kernel source can be demonstrated as follows:</p>

<p>Method 1<br />
------------------------------------------</p>

<p>

<ol>

<li>

<p>Download the kernel source provided by Linksys from:</p>

<p><a href="http://www.linksys.com/support/opensourcecode/wrt54g/1.30.7/kernel-2.4.5.tgz">http://www.linksys.com/support/opensourcecode/wrt54g/1.30.7/kernel-2.4.5.tgz</a><br />
   MD5SUM: 51a8b64c3ab674350a8830f21ddec817</p>

<p>   (Note: at this time, the kernel source provided for firmware versions
   1.30.1, 1.30.7, and 1.41.2 are identical, so it doesn't actually
   matter which one you download.)</p>

</li>

<li>Untar the archive and run:<br />
   make xconfig</li>

<li>Notice it fails:<br />
   drivers/net/Config.in: 5: unable to open drivers/net/hnd/Config.in<br />
   make[1]: *** [kconfig.tk] Error 1<br />
   make[1]: Leaving directory `/home/andrew/linux-kernel/linux/scripts'<br />
   make: *** [xconfig] Error 2</li>

<li>Run:<br />
   make config</li>

<li>When it asks:<br />
   Network device support (CONFIG_NETDEVICES) [Y/n/?]<br />
   Answer "Y"</li>

<li>Notice it fails:<br />
   scripts/Configure: line 5: drivers/net/hnd/Config.in: No such file or directory<br />
   make: *** [config] Error 1</li>

<li>As you can see, it is not possible to compile a kernel with the
   provided build utilities with networking support.</li>

</ol>

</p>

<p>Method 2<br />
------------------------------------------</p>

<p>

<ol>

<li>Download a copy of the firmware image for the 1.30.7 firmware from:<br />
   <a href="ftp://ftp.linksys.com/pub/network/WRT54G_1.30.7_US_code.bin">ftp://ftp.linksys.com/pub/network/WRT54G_1.30.7_US_code.bin</a><br />
   MD5SUM: cc39c85f4c9fd065543fa2fd0a14be29</li>

<li>Extract the CramFS filesystem and kernel image:<br />
   dd if=WRT54G_1.30.7_US_code.bin of=cramfs.image bs=786464 skip=1<br />
   dd if=WRT54G_1.30.7_US_code.bin bs=60 skip=1 | zcat > kernel</li>

<li>

<p>Mount the filesystem, and run "nm" against the wireless driver:<br />
   (You'll need to have CramFS compiled in or available as a module.)<br />
   mount cramfs.image /mnt/rom -o loop<br />
   nm /mnt/rom/lib/modules/2.4.5/kernel/drivers/net/wl/wl.o > wl_syms.txt</p>

<p>   For convenience, a copy of the output of this command is available at:<br />
   <a href="http://www.busybox.net/linksys/wl_syms.txt">http://www.busybox.net/linksys/wl_syms.txt</a><br />
   MD5SUM: 08cd2f02d91dd63a0d61a45154adedeb</p>

</li>

<li>Notice that the driver wl.o makes several imports from the kernel
   that are not included in a stock 2.4.5 kernel.  In particular, note
   that the symbols bcm_*, pkt*, dma_*, sb_*, osl_*, and srom_* are
   imported by the module, but not included in the kernel source.</li>

<li>Verify that the symbols aren't provided by another module by
   running "nm" on them.</li>

<li>

<p>Download a copy of ksyms_sorted.txt:<br />
   <a href="http://www.busybox.net/linksys/ksyms_sorted.txt">http://www.busybox.net/linksys/ksyms_sorted.txt</a><br />
   MD5SUM: a42b8d97176b95706480301f245bc52b</p>

<p>   This is a copy of the /proc/ksyms file from a running WRT54G
   (firmware 1.30.7).  The entries have been sorted by address to make
   reading it a bit more convenient.</p>

<p>   The raw, unsorted output is also available:<br />
   <a href="http://www.busybox.net/linksys/ksyms.txt">http://www.busybox.net/linksys/ksyms.txt</a><br />
   MD5SUM: 90ce734d11a6a26205cb5d29f12541d9</p>

</li>

</ol>

</p>

<p>Find the symbols that were missing from the kernel image:</p>

<pre>80094f18        bcm_strtoul
800950a4        bcm_atoi
80095100        deadbeef
80095140        prhex
80095258        prpkt
800952bc        pktcopy
800953a4        pkttotlen
800953c4        bcm_ether_ntoa
80095420        bcm_ether_atoe
800954a4        bcm_parse_tlvs
800954f4        pktqinit
80095508        pktenq
8009554c        pktdeq
8009558c        getvar
8009563c        getintvar
80095674        bcm_mdelay
800956b4        crc8
800956f4        crc16
8009574c        crc32
800958c0        dma_attach
80095a64        dma_detach
80095ad0        dma_txreset
80095be0        dma_rxreset
80095c40        dma_txinit
80095ca4        dma_txenabled
80095ccc        dma_txsuspend
80095ce0        dma_txresume
80095cf8        dma_txsuspended
80095d28        dma_txstopped
80095d40        dma_rxstopped
80095d58        dma_fifoloopbackenable
80095d6c        dma_rxinit
80095dc4        dma_rxenable
80095ddc        dma_rxenabled
80095e04        dma_txfast
80095ff4        dma_tx
8009629c        dma_rx
80096380        dma_rxfill
800964e0        dma_txreclaim
80096530        dma_getnexttxp
80096604        dma_rxreclaim
80096648        dma_getnextrxp
800966cc        dma_dumptx
80096760        dma_dumprx
800967f4        dma_dump
80096824        dma_getvar
80096870        osl_pktget
80096934        osl_pktfree
80096a98        osl_pci_read_config
80096ad0        osl_pci_write_config
80096b00        osl_pcmcia_read_attr
80096b08        osl_pcmcia_write_attr
80096b10        osl_assert
80096bb8        sb_attach
80096c38        sb_kattach
80096f30        sb_coreid
80096f48        sb_coreidx
80097028        sb_corevendor
8009703c        sb_corerev
80097050        sb_coreflags
800970b8        sb_coreflagshi
80097120        sb_iscoreup
8009736c        sb_detach
80097504        sb_setcoreidx
8009761c        sb_setcore
80097660        sb_chip
80097668        sb_chiprev
80097670        sb_boardvendor
80097678        sb_boardtype
800979a0        sb_boardstyle
80097a48        sb_bus
80097a50        sb_corelist
80097a88        sb_coreregs
80097a90        sb_taclear
80097b04        sb_commit
80097b8c        sb_core_reset
80097d04        sb_core_tofixup
80097dc0        sb_core_disable
80097f34        sb_watchdog
80097f98        sb_pcmcia_init
8009803c        sb_pci_setup
80098198        sb_base
800981e0        sb_size
8009823c        sb_coreunit
800982b0        sb_clock_rate
80098548        sb_clock
800985f4        sb_gpiosetcore
80098614        sb_gpiocontrol
80098680        sb_gpioouten
800986e4        sb_gpioout
80098748        sb_gpioin
800987a8        sb_gpiointpolarity
8009880c        sb_gpiointmask
80098870        sb_dump
80098990        srom_var_init
80098a10        srom_read
80098b08        srom_write
80098d7c        srom_parsecis

8014ba80        bcm_ctype</pre>

<p>You can also find the symbol names in the kernel by grepping through
the output of "strings" on the kernel image produced in step two.</p>

<p>Note that the addresses at which these symbols are located are used by
the kernel proper.  Kernel modules get loaded to a different address
range.  Also note that these symbols are surrounded by other symbols
included in a stock Linux kernel.</p>

<p>==========================================</p>

<p>The above analysis shows that the kernel source provided by Linksys
cannot be compiled in a configuration that would be of use on the
WRT54G.  Even if it could, functions necessary for the networking
subsystem would be missing, making the loading of the ethernet and
wireless drivers impossible.  Clearly, the kernel source that Linksys
provided cannot be used to recreate the kernel that they are shipping
with their product.  Therefore, they have been, and still remain in
violation of the GPL.</p>

<p>Until now, we have held off highlighting this fact in the hopes that
Linksys would realize their omission and correct it.  Unfortunately,
after three releases of their firmware (1.30.1, 1.30.7, 1.41.2), and
numerous notices from many individuals explaining this oversight, it
seems that Linksys has no intention of correcting this problem.</p>

<p>The lack of complete source code for the kernel present on the WRT54G
is hindering a number of very interesting development efforts.  The
SeattleWireless WRT54G group [3] is working toward creating completely
new firmware images for the WRT54G.  However, they are unable to
create a kernel for this device, largely because any kernel they
compile will be unable to load the modules necessary to support the
ethernet and wireless devices.  This limits the functionality that
they can add to their project.</p>

<p>The Linux Broadcom 4301 project [4] is attempting to create a driver
to support the Broadcom 43xx series of wireless devices on generic
hardware.  Their work would be greatly lessened if they could at least
be sent the source code for the parts of the wireless driver
implemented in the kernel proper.</p>

<p>It is also worth noting that this is not the only Linksys device that
uses Linux and other software licensed under the GPL without adhering
to the license.  For example, the Samba team has expressed some
concern over the use of Samba in the Linksys EFG80 network accessible
storage device [5].</p>

<p>Also, the following products seem to be based on the same general
design as the WRT54G, and therefore suffer from the same problem
described above.  However, at this time, no source for either device
is available from the "GPL Code Center".  - Linksys WRT55AG Dual-Band
Wireless Router [6] - Linksys WAP54G Wireless-G Access Point [7]</p>

<p>Unfortunately, neither group knows how to proceed in obtaining this
code.  While Linksys has shown some interest in releasing the source
for software licensed under the GPL, they have not responded to the
issues outlined in this post.</p>

<p>If anyone wishes to contact Linksys concerning this matter, we'd
recommend you try the following address: [opensource () linksys !
com].  However, since we have never received a response to messages
directed at this box, you may want to CC any messages to [pr ()
linksys ! com] or perhaps [mailroom () linksys ! com] as well.  With
any luck, we will eventually sort out this issue.</p>

<p>The data contained in this post were produced by many individuals
working on a variety of Linksys products.  Therefore, while every
effort has been made to ensure that the information contained in this
post is accurate, it is entirely possible that we've made some errors.
If that is the case, please let us know and we will correct the
mistake.</p>

<p>Signatories:<br />
(in alphabetical order)</p>

<p>Jeremy Allison<br />
jra () samba ! org<br />
Samba Co-Author</p>

<p>Erik Andersen<br />
andersen () codepoet ! org<br />
Busybox Maintainer</p>

<p>Kendall Blake<br />
kendallb () eden ! rutgers ! edu<br />
Linux Broadcom 4301 Driver Project</p>

<p>Jim Buzbee<br />
Jim () Buzbee ! net<br />
WRT54G Hacker</p>

<p>Alan Cox<br />
alan () lxorguk ! ukuu ! org ! uk<br />
Linux Kernel</p>

<p>Rob Flickenger<br />
rob () oreillynet ! com<br />
SeattleWireless WRT54G Project</p>

<p>Christopher R. Hertel<br />
crh () samba ! org<br />
Samba Team and jCIFS Team Member</p>

<p>Imre Kaloz<br />
kaloz () dune ! hu</p>

<p>Andrew Miklas<br />
public () mikl ! as<br />
Linux Broadcom 4301 Driver Project</p>

<p>Brett Wooldridge<br />
brettw () riseup ! com<br />
Linux Broadcom 4301 Driver Project</p>

<p>===========================================</p>

<p>[1] Linksys GPL Code Center<br />
<a href="http://www.linksys.com/support/gpl.asp">http://www.linksys.com/support/gpl.asp</a></p>

<p>[2] WRT54G firmware download page<br />
<a href="http://linksys.com/download/firmware.asp?fwid=178">http://linksys.com/download/firmware.asp?fwid=178</a></p>

<p>[3] SeattleWireless<br />
<a href="http://seattlewireless.net/index.cgi/LinksysWrt54g">http://seattlewireless.net/index.cgi/LinksysWrt54g</a></p>

<p>[4] Linux Broadcom 4301 Driver Project<br />
<a href="http://linux-bcom4301.sourceforge.net/">http://linux-bcom4301.sourceforge.net/</a></p>

<p>[5] Linksys EFG80 Network Attachable Storage Product Page<br />
<a href="http://linksys.com/products/product.asp?prid=447&amp;grid=">http://linksys.com/products/product.asp?prid=447&amp;grid=</a></p>

<p>[6] WRT55AG Dual-Band Wireless A+G Broadband Router<br />
<a href="http://linksys.com/products/product.asp?prid=537&amp;grid=">http://linksys.com/products/product.asp?prid=537&amp;grid=</a></p>

<p>[7] WAP54G Wireless-G Access Point<br />
<a href="http://linksys.com/products/product.asp?prid=575&amp;grid=">http://linksys.com/products/product.asp?prid=575&amp;grid=</a><br />
For some reason, there doesn't appear to be a link to the
firmware from this page, but it can be downloaded from
the following address:<br />
<a href="ftp://ftp.linksys.com/pub/network/wap54g_1.08_fw.zip">ftp://ftp.linksys.com/pub/network/wap54g_1.08_fw.zip</a><br />
MD5SUM: 26751b70480b3762eb382c7ccaace138</p>

</quote>

<p>Rob Landley suggested that probably Linksys itself was unaware of the
problem, or why would they create a GPL Code Center for incomplete code? He
guessed that probably the technical guys who knew all the relevant details
might have left the project or the company, leaving only management or an
outsource company to deal with it. He suggested, <quote who="Rob Landley">Keep
the pressure up, but be nice and give them some time to audit their codebase.
Firmware development was probably outsourced to india or taiwan or something,
and Linksys (nee Cisco) is quite possibly furious at whoever they outsourced
this to for putting them in this position in the first place...</quote></p>

<p>Erik Andersen replied:</p>

<quote who="Erik Andersen">

<p>Nope.  It is absolute certainty they know about it.  I had my
lawyer contact them months ago, and the cisco Legal department
was made aware of this and other problems, and responded that</p>

<blockquote>

<p>    "the Linksys technical folks are digging into your questions -
    all the the software in question is from Linksys' suppliers
    (Linksys doesn't have the source code to this software), so we
    have to work with these suppliers to address any concerns."</p>

</blockquote>

<p>but that was July 15 and I have heard nothing substantive from
them since that time.</p>

</quote>

<p>He also said:</p>

<quote who="Erik Andersen">

<p>How much niceness do they need?  I had my lawyer send the first
of several letters (nice and polite) on 8 May...  After several
additional letters (increasingly less polite) my lawyer and I
were finally contacted by Cisco on June 20.  They stated at that
time "We are in the process of determining what code is subject
to the distribution obligation; once we have done so, all such
code will be made available under the terms of the GPL."</p>

<p>On July 10 they informed us they were setting up their GPL Code
Center.  We informed them on that data that (at least) the
WRT55AG, and WAP54G products also contain Linux and need to have
the GPL'd sources published.  We also informed the Cisco legal
dept on July 10 that they have have not provided source code for
'libnetconf' (which staticly includes iptables/netfilter code),
and since they have shippied zillions of these things, they are
obligated to release source not just libnetconf, but also all
applications linked with libnetconf.</p>

<p>They have not yet addressed that issue despite 2.5 months passing
since their legal department was informed.  When combined with
the issue of the broken kernel they distribute, it is hard to
argue they have acted in good faith at complying.</p>

</quote>

<p>Rik van Riel replied:</p>

<quote who="Rik van Riel">

<p>I have no idea who their supplier is, but it's not
unthinkable that the supplier is trying to take
advantage of the situation by asking extraordinary
amounts of money from Cisco and/or Linksys in order
to give them the source code.</p>

<p>Hell, their contractor could even have removed the
source code from their systems already ("mmm, the
disk is full, lets remove some old projects").</p>

<p>Personally I'd like to treat Cisco and Linksys nicely
for the time being, since the full extent of the nasty
situation they're in could well be covered in an NDA
with their contractor, making them unable to tell us
the reasons for the way things are going.</p>

</quote>

</section>

</kc>

