<?xml version="1.0" ?>

<kc>

<title>Kernel Traffic</title>

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

<issue num="50" date="10 Jan 2000 00:00:00 -0800" />

<intro>

<p>Many thanks go out to Jan Evert van Grootheest, who found a serious bug in
my html templates, that would make unfollowed links and followed links the
same color for anyone who turns stylesheets off in their browser
preferences. Thanks, Jan!</p>

</intro>

<stats posts="693" size="3149" contrib="287" multiples="122" lastweek="103">

<person posts="31" size="106" who="Alan Cox " />
<person posts="19" size="75" who="Khimenko Victor " />
<person posts="16" size="86" who="Richard B. Johnson " />
<person posts="14" size="68" who="Keith Owens " />
<person posts="14" size="67" who="Tigran Aivazian " />
<person posts="13" size="45" who="Andrea Arcangeli " />
<person posts="11" size="40" who="Jesse Pollard " />
<person posts="11" size="38" who="Manfred Spraul " />
<person posts="10" size="30" who="Tigran Aivazian " />
<person posts="10" size="28" who="Matthew Wilcox " />
<person posts="9" size="39" who="Mike A. Harris " />
<person posts="9" size="32" who="Andi Kleen " />
<person posts="8" size="58" who="Sergey Kubushin " />
<person posts="8" size="22" who="Jeff Dike " />
<person posts="7" size="78" who="George R. Kasica " />
<person posts="7" size="30" who="Mike Coleman " />
<person posts="7" size="28" who="Ben Williamson " />
<person posts="7" size="26" who="Steve Dodd " />
<person posts="7" size="24" who="Adam J. Richter " />
<person posts="7" size="18" who="Jeff Garzik " />
<person posts="6" size="38" who="Dave Jones " />
<person posts="6" size="23" who="German Jose Gomez Garcia " />
<person posts="6" size="23" who="Martin Dalecki " />
<person posts="6" size="20" who="Pavel Machek " />
<person posts="6" size="20" who="David S. Miller " />
<person posts="5" size="85" who="Christoph Rohland " />
<person posts="5" size="53" who=" (david parsons)" />
<person posts="5" size="32" who="Miles Lane " />
<person posts="5" size="25" who="Robert Dinse " />
<person posts="5" size="20" who="Florian Weimer " />
<person posts="5" size="20" who="Homme R. Bitter " />
<person posts="5" size="16" who="Marcin Dalecki " />
<person posts="5" size="15" who="" />
<person posts="5" size="14" who="Andre Hedrick " />
<person posts="4" size="100" who="Agus Budy Wuysang " />
<person posts="4" size="30" who="Trever Adams " />
<person posts="4" size="20" who="Steve VanDevender " />
<person posts="4" size="15" who="Gregory Maxwell " />
<person posts="4" size="15" who="Abramo Bagnara " />
<person posts="4" size="14" who="Gabor Lenart " />
<person posts="4" size="13" who="Brandon S. Allbery KF8NH " />
<person posts="4" size="13" who="Rik van Riel " />
<person posts="4" size="12" who="David Schwartz " />
<person posts="4" size="12" who="Ted Sikora " />
<person posts="4" size="11" who="Richard Gooch " />
<person posts="4" size="11" who="Folkert van Heusden " />
<person posts="4" size="11" who="Ben Collins " />
<person posts="4" size="11" who="Elmer Joandi " />
<person posts="4" size="11" who="Philip Blundell " />
<person posts="3" size="89" who="jschlst " />
<person posts="3" size="25" who="Thomas Molina " />
<person posts="3" size="14" who="Simon Kirby " />
<person posts="3" size="12" who="Joe " />
<person posts="3" size="11" who=" (Rogier Wolff)" />
<person posts="3" size="11" who="Riley Williams " />
<person posts="3" size="11" who="James Simmons " />
<person posts="3" size="11" who=" (Linus Torvalds)" />
<person posts="3" size="10" who="Mark Mokryn " />
<person posts="3" size="10" who="Alex Holden " />
<person posts="3" size="9" who="Ryan C. Gordon " />
<person posts="3" size="9" who="Karsten Keil " />
<person posts="3" size="9" who="Ron Flory " />
<person posts="3" size="9" who="Wakko Warner " />
<person posts="3" size="9" who="Ralf Burger " />
<person posts="3" size="9" who="Rusty Russell " />
<person posts="3" size="9" who="Oliver Henning " />
<person posts="3" size="8" who="Chris Wedgwood " />
<person posts="3" size="8" who="Alex Buell " />
<person posts="3" size="8" who="VT/NH DMG " />
<person posts="3" size="8" who="Alan Cox " />
<person posts="3" size="7" who="nag " />
<person posts="2" size="16" who="Jean-Philippe GRIMALDI " />
<person posts="2" size="15" who="Alexandre Hautequest " />
<person posts="2" size="15" who="Keith Adams " />
<person posts="2" size="11" who="Boszormenyi Zoltan " />
<person posts="2" size="11" who="Theodore Y. Ts'o " />
<person posts="2" size="9" who="Lord Satanus of Acheron " />
<person posts="2" size="9" who="Eric Youngdale " />
<person posts="2" size="8" who="Frank v Waveren " />
<person posts="2" size="8" who="Roger Larsson " />
<person posts="2" size="8" who="Eric Youngdale " />
<person posts="2" size="7" who="Paul Slootman " />
<person posts="2" size="7" who="David Ford " />
<person posts="2" size="7" who="Keith Bottner " />
<person posts="2" size="7" who="Ryan Gordon " />
<person posts="2" size="7" who="Bill Schoolcraft " />
<person posts="2" size="7" who="Matti Aarnio " />
<person posts="2" size="7" who="Maciej W. Rozycki " />
<person posts="2" size="7" who="Geert Uytterhoeven " />
<person posts="2" size="7" who="Horst von Brand " />
<person posts="2" size="7" who="Wichert Akkerman " />
<person posts="2" size="7" who="Brian Parris " />
<person posts="2" size="7" who="Krzysztof Halasa " />
<person posts="2" size="6" who="Josef =?iso-8859-1?Q?H=F6=F6k?= " />
<person posts="2" size="6" who="Ulrich Drepper " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who="Jean-Luc Coulon " />
<person posts="2" size="6" who="lars brinkhoff " />
<person posts="2" size="6" who="Richard Zidlicky " />
<person posts="2" size="6" who="Bernd Eckenfels " />
<person posts="2" size="6" who="Manfred Spraul " />
<person posts="2" size="6" who="" />
<person posts="2" size="6" who=" (Miquel van Smoorenburg)" />
<person posts="2" size="6" who="Mr. Pauly " />
<person posts="2" size="6" who="Horst von Brand " />
<person posts="2" size="6" who="Jonathan Corbet " />
<person posts="2" size="6" who="David Weinehall " />
<person posts="2" size="6" who="Pauline Middelink " />
<person posts="2" size="5" who="Michael Meissner " />
<person posts="2" size="5" who="Bernard Wei " />
<person posts="2" size="5" who="Dieter Stueken " />
<person posts="2" size="5" who="Linus Torvalds " />
<person posts="2" size="5" who="=?ISO-8859-1?Q?Jerry_Lundstr=F6m?= " />
<person posts="2" size="5" who="Mike Sensney " />
<person posts="2" size="5" who=" (Dave Jones)" />
<person posts="2" size="5" who=" (Peter Benie)" />
<person posts="2" size="5" who="Q " />
<person posts="2" size="5" who="Matthew Clark " />
<person posts="2" size="5" who="Jamie Lokier " />
<person posts="2" size="5" who="Junichi Saito " />
<person posts="2" size="5" who="Clive Crous " />
<person posts="2" size="4" who="Bill Wendling " />
<person posts="1" size="75" who="James A Simmons " />
<person posts="1" size="74" who="Victor STANESCU " />
<person posts="1" size="43" who="Chuck Lever " />
<person posts="1" size="18" who="Chris Shutters " />
<person posts="1" size="12" who="imel... " />
<person posts="1" size="10" who="julio moreno " />
<person posts="1" size="7" who="Jan Kasprzak " />
<person posts="1" size="6" who="Erik Mouw " />
<person posts="1" size="6" who="Nicholas Waltham " />
<person posts="1" size="6" who="Joerg Pommnitz " />
<person posts="1" size="5" who="Dunlap, Randy " />
<person posts="1" size="5" who="Daniel Stone " />
<person posts="1" size="5" who="Peter Englmaier " />
<person posts="1" size="5" who="Juanjo Santamarta " />
<person posts="1" size="5" who="karsten " />
<person posts="1" size="5" who="Keidel " />
<person posts="1" size="5" who=" (Jim Gettys)" />
<person posts="1" size="5" who="" />
<person posts="1" size="5" who="Douglas Gilbert " />
<person posts="1" size="5" who="Moritz Franosch " />
<person posts="1" size="5" who=" (John Alvord)" />
<person posts="1" size="4" who="Gerald Haese " />
<person posts="1" size="4" who="Andrzej Krzysztofowicz " />
<person posts="1" size="4" who="Zdenek Kabelac " />
<person posts="1" size="4" who="Khimenko Victor " />
<person posts="1" size="4" who="Gerard Roudier " />
<person posts="1" size="4" who="Greg Ingram " />
<person posts="1" size="4" who="Stefan Mashkevich " />
<person posts="1" size="4" who="Gaurav Yadav " />
<person posts="1" size="4" who="Anton Ivanov " />
<person posts="1" size="4" who="Bill Unruh " />
<person posts="1" size="4" who="Bindinganavile, Vinuthananda (CTS) " />
<person posts="1" size="4" who="Hannu Koivisto " />
<person posts="1" size="4" who="George " />
<person posts="1" size="4" who="Jordan Russell " />
<person posts="1" size="4" who="Marc Lehmann " />
<person posts="1" size="4" who="Michael Meding " />
<person posts="1" size="4" who="Andrew McNabb " />
<person posts="1" size="4" who="Luca Montecchiani " />
<person posts="1" size="4" who="Steven N. Hirsch " />
<person posts="1" size="4" who="Gautam H Thaker " />
<person posts="1" size="4" who="Marc Mutz " />
<person posts="1" size="4" who="Chris Noe " />
<person posts="1" size="3" who="William Stearns " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="James R Bruce " />
<person posts="1" size="3" who="Rick Hohensee " />
<person posts="1" size="3" who="Jeff Garzik " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Sean McElroy " />
<person posts="1" size="3" who="Larry Woodman " />
<person posts="1" size="3" who="B. D. Elliott " />
<person posts="1" size="3" who="Larry McVoy " />
<person posts="1" size="3" who=" (Cedric ROUX)" />
<person posts="1" size="3" who="poke " />
<person posts="1" size="3" who="kofsa " />
<person posts="1" size="3" who="Michal Jaegermann " />
<person posts="1" size="3" who="Martin Maciaszek " />
<person posts="1" size="3" who="Borislav Deianov " />
<person posts="1" size="3" who="V Ganesh " />
<person posts="1" size="3" who="Jim Brown " />
<person posts="1" size="3" who="Florian Heinz " />
<person posts="1" size="3" who="Martin Mares " />
<person posts="1" size="3" who="Robert Johannes " />
<person posts="1" size="3" who="Mathijs Mohlmann " />
<person posts="1" size="3" who="Brent M. Smith " />
<person posts="1" size="3" who="Niels Kristian Bech Jensen " />
<person posts="1" size="3" who="Julian Anastasov " />
<person posts="1" size="3" who="Henning P. Schmiedehausen " />
<person posts="1" size="3" who="Jakma, Paul " />
<person posts="1" size="3" who="Michel Eyckmans (MCE) " />
<person posts="1" size="3" who="G. Allen Morris III " />
<person posts="1" size="3" who="Michael L. Welles " />
<person posts="1" size="3" who="Alexander Viro " />
<person posts="1" size="3" who="Adrian Bridgett " />
<person posts="1" size="3" who="Walter Reed " />
<person posts="1" size="3" who="Pete Wyckoff " />
<person posts="1" size="3" who="Mike Ricketts " />
<person posts="1" size="3" who="Sven LUTHER " />
<person posts="1" size="3" who="Lord Praetor Satanus of Acheron " />
<person posts="1" size="3" who="James Antill " />
<person posts="1" size="3" who="Brian Gerst " />
<person posts="1" size="3" who="Jeff Millar " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Zachary Amsden " />
<person posts="1" size="3" who="Tony Arkles " />
<person posts="1" size="3" who="Andreas Tobler " />
<person posts="1" size="3" who="Michael Alan Dorman " />
<person posts="1" size="3" who="Oliver Mai " />
<person posts="1" size="3" who="Manfred " />
<person posts="1" size="3" who="George Staikos " />
<person posts="1" size="3" who="Walter Hofmann " />
<person posts="1" size="3" who="Lee Mitchell " />
<person posts="1" size="3" who="Thomas Sailer " />
<person posts="1" size="3" who="Scott V. McGuire " />
<person posts="1" size="3" who="Mike Eldridge " />
<person posts="1" size="3" who="Bradley M Keryan " />
<person posts="1" size="3" who="Lorenzo Allegrucci " />
<person posts="1" size="3" who="VT/NH DMG " />
<person posts="1" size="3" who="Ulrik De Bie " />
<person posts="1" size="3" who="" />
<person posts="1" size="3" who="Armin Schindler " />
<person posts="1" size="3" who="Douglas F. Elznic " />
<person posts="1" size="3" who="Stephen Frost " />
<person posts="1" size="3" who="Lucca " />
<person posts="1" size="3" who="Samuel Hocevar " />
<person posts="1" size="2" who="Tom Leete " />
<person posts="1" size="2" who="Jim Troutman " />
<person posts="1" size="2" who="Richard Bouska " />
<person posts="1" size="2" who="Christian Laursen " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Robert L. Harris " />
<person posts="1" size="2" who="Torben Mathiasen " />
<person posts="1" size="2" who="Jeff Millar " />
<person posts="1" size="2" who="James Stevenson " />
<person posts="1" size="2" who="Willy Tarreau " />
<person posts="1" size="2" who="Mike Galbraith " />
<person posts="1" size="2" who="David Sauer " />
<person posts="1" size="2" who="Fernando Luiz Pereira " />
<person posts="1" size="2" who="Daniel Silverstone (Kinnison) " />
<person posts="1" size="2" who="Arthur Jerijian " />
<person posts="1" size="2" who="Rommel Rodriguez Rojas " />
<person posts="1" size="2" who="  (Florian Weimer)" />
<person posts="1" size="2" who="John Hayward-Warburton " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Philip Blundell " />
<person posts="1" size="2" who="Mark Hahn " />
<person posts="1" size="2" who="Jens Axboe " />
<person posts="1" size="2" who="Paul Gortmaker " />
<person posts="1" size="2" who="Leos Bitto " />
<person posts="1" size="2" who="Scott Marlowe " />
<person posts="1" size="2" who="Vikram " />
<person posts="1" size="2" who="Paul Fulghum " />
<person posts="1" size="2" who="Johnny Stenback " />
<person posts="1" size="2" who="CAMTP admin " />
<person posts="1" size="2" who="Sam Gendler " />
<person posts="1" size="2" who="Kevin George " />
<person posts="1" size="2" who="Charlie Baylis " />
<person posts="1" size="2" who="Diogo Zulli &lt;strfry&gt; " />
<person posts="1" size="2" who="Jean-Luc " />
<person posts="1" size="2" who="Ian Stirling " />
<person posts="1" size="2" who="Mike Karmyshev " />
<person posts="1" size="2" who="Rafael E. Herrera " />
<person posts="1" size="2" who="Ralf Gerbig " />
<person posts="1" size="2" who="Mario Vanoni " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="P.A.M. van Dam " />
<person posts="1" size="2" who="riq " />
<person posts="1" size="2" who="Nemeth Istvan " />
<person posts="1" size="2" who="Zach Brown " />
<person posts="1" size="2" who="Kevin Traas " />
<person posts="1" size="2" who="Tim Coleman " />
<person posts="1" size="2" who="Goran Gajic " />
<person posts="1" size="2" who="Lord Satanus of Acheron " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who=" (Doug Oleinik -- 1-414-527-0770 x 3305)" />
<person posts="1" size="2" who="Dan Hollis " />
<person posts="1" size="2" who="Chad Wagner " />
<person posts="1" size="2" who="Thomason's " />
<person posts="1" size="2" who="=?ISO-8859-1?Q?Pawe=B3?= Krawczyk " />
<person posts="1" size="2" who="" />
<person posts="1" size="2" who="Stephane Dudzinski " />
<person posts="1" size="2" who="inf " />

</stats>

<section
  title="Intel Clams Up On Ether Express Pro (i960) Spec"
  subject="Intel Ether Express Pro (i960) in 2.2.x??"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_04/msg00117.html"
  posts="4"
  startdate="23 Dec 1999 00:00:00 -0800"
  enddate="27 Dec 1999 00:00:00 -0800"
>

<p>Matthew Clark had an Intel Ether Express Pro 10/100 (based on the i960
chip), and wanted to use it under 2.2.x; Victor Khimenko replied, <quote
who="Victor Khimenko">AFAIK such driver simple does not exist. All versions
of EEpro 100 are supported except high end ones with i960. It's just really
different card with [almost] same name as normal EEPro 100 :-/</quote> and
Alan Cox added, <quote who="Alan Cox">All attempts to get info out of Intel
failed, and given their obfuscated gige card driver I dont expect this to
change.</quote></p>

</section>

<section
  title="Writing To NTFS Partitions"
  subject="NTFS Write Code ?"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_04/msg00018.html"
  posts="4"
  startdate="22 Dec 1999 00:00:00 -0800"
  enddate="28 Dec 1999 00:00:00 -0800"
>
<topic>BSD</topic>
<topic>FS: NTFS</topic>

<p>Stephane Dudzinski asked when the code for writing to NTFS partitions would
be integrated into the stable tree, and someone replied that the code had
not been developed during 2.3.x, so would probably not make it into 2.4;
Daniel Silverstone replied that Steve Dodd had been working on it, but had
been busy with his money job. Steve replied:</p>

<quote who="Steve Dodd">

<p>Yes, the (just about) paid job is sucking all of my
time away at the moment. Martin von L. is still officially the NTFS
maintainer, but I've heard virtually nothing of/from him for months. If I do
anything, it'll probably a complete rewrite, or perhaps a port of the
Free(?)BSD driver. I'll also need to have a rummage around and find out
what's changed in the VFS/mm systems since I last looked. Anyone want to pay
me to hack filesystems? &lt;g&gt;</p>

<p>Whether NTFS {should,will have to} be dropped from 2.4 is a decision for
somebody else. If I find time I'll poke at it and see what needs
doing.</p>

</quote>

<p>End Of Thread.</p>

</section>

<section
  title="Kernel-Based Windowing For Embedded Systems; License Debate"
  posts="43"
  subject="Announce: DinX windowing system 0.2.0"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_04/msg00062.html"
  startdate="23 Dec 1999 00:00:00 -0800"
  enddate="30 Dec 1999 00:00:00 -0800"
>
<topic>Framebuffer</topic>
<topic>Small Systems</topic>

<mention>Alex Buell</mention>
<mention>Pavel Machek</mention>
<mention>James Simmons</mention>

<p>Ben Williamson announced version 0.2.0 of the DinX ("DinX is not X")
graphical windowing kernel module. The license was "MPL with GPL option". He
gave a pointer to the <a href="http://dinx.sourceforge.net/">homepage</a> and
a <a href="http://sourceforge.net/project/filelist.php?form_grp=637">download
site</a>. He described DinX:</p>

<quote who="Ben Williamson">

<p>DinX is an experimental windowing system that
performs clipping and drawing inside Linux kernel modules. This eliminates
much context switching between clients and the server, and makes the code
small, simple and fast. It is aimed at small systems like Linux handhelds.</p>

<p>The first public release includes draggable windows and a simple image
viewer. All clipping and drawing operations are working properly. The window
server program is under development, to provide a more complete set of
events.</p>

</quote>

<p>He asked for feedback, adding that since it was his first kernel module,
he'd like to hear if he made any horrible design mistakes, etc.</p>

<p>James Simmons said this would be great for embedded systems, and Pavel
Machek asked about possible performance gain, and the impact on kernel size.
Alex Buell reassured him that it was very small. He added that X apps could
be compiled directly for DinX without any source modifications.</p>

<p>Someone else also replied to Pavel, saying that the compiled module ran
about 14K. He or she went on:</p>

<quote who="nofirstname nolastname">

<p>Performance currently resembles the old manual etch-a-sketch
devices, but that is being worked on. Ultimately performance should be
virtually the same as using a framebuffer directly.</p>

<p>It doesn't add a "window manager" to the frame buffer or anything like that.
Think of it instead as a framebuffer multiplexer; if written to use dinx,
multiple framebuffer apps can coexist happily. Dinx does not provide goodies
like internal windows, sprites, transparency/translucency, etc. Those have
to be done in userspace.</p>

</quote>

<p>Ben replied:</p>

<quote who="Ben Williamson">

<p>Just to clarify, performance is currently
horrible on PC hardware because we read (memmove) from the framebuffer a lot
when dragging windows around. And it seems PC hardware does this really
slowly.</p>

<p>DinX is designed with small systems in mind, many of which have the video
buffer in main DRAM, and no 2D accel. (I'm thinking of my favourite ARM
parts, like the ARM7500, CL-PS7110, EP7211 etc.) On these, reading the
buffer is as fast as any other memory, so DinX should work fine the way it
is now.</p>

</quote>

<p>Regarding DinX as a framebuffer multiplexer, Ben went on:</p>

<quote who="Ben Williamson">

<p>Right.  The idea is just to take clipping and
blitting out of the server process and put them in the kernel, to avoid lots
of context switches and big complex buffering code.</p>

<p>Something else I should mention:  The clipping code performs no memory
allocations, so drawing keeps off the heap. When an obscuring window splits
a rectangular blit into two rectangles, the routine recurses for each, so
the complexity of the visible area goes on the stack. Now, how much stack
space does the kernel have? :)</p>

</quote>

<p>Ben had apparently thought that the stack was large under Linux. Victor
Khimenko pointed out, <quote who="Victor Khimenko">Kernel stack is TINY. On
iX86 it's only 7KiB or so. And when you'll overflow if you'll corrupt you
system badly, BTW.</quote></p>

<p>Ben hit himself on the head and started studying furiously. After some
further discussion, including private email, Ben said, <quote who="Ben
Williamson">fixed in the new version, the clipping algorithm now uses a
stack structure allocated with kmalloc. Thanks to everyone who provided
advice on this. I now understand very clearly why a dynamically growing
stack area would make dealing with races awful tough.
:)</quote></p>

<p>Pavel, in his original reply to Ben's announcement, also pointed out that
the "MPL with GPL option" meant that the code could not be compiled into the
kernel, which was what most embedded systems would want. Victor asked why
this would be the case, since the user could optionally use the GPL as the
license. Mike A. Harris replied that users could compile the code into the
kernel if and only if they chose to use the GPL option. If they chose the
MPL, they wouldn't be able to link the code into the kernel in any way.
Victor replied that they'd be able to use it as a loadable module, but Mike
replied, <quote who="Mike A. Harris">If it modifies ANY existing kernel
source, it would be in violation of GPL regardless of if it is linked
monolithically or modularly.</quote> Several folks pointed out that as DinX
was a module, it didn't modify existing kernel source, and could thus be
used as a loadable module under non-GPL-compatible licenses.</p>

<p>There was a bit of debate, and at a certain point, Ben explained:</p>

<quote who="Ben Williamson">

<p>The intention of using the MPL with GPL option
is that anyone making a Linux kernel distribution can take whatever files
they need from DinX, replace the MPL notice with the GPL notice, and put
them in the distribution, perhaps to be statically linked. This is my
understanding of what the Netscape lawyers meant when they wrote:</p>

<blockquote>

<p>Alternatively, the contents of this file may be used under the terms of the
GNU General Public license (the "[GPL] License"), in which case the
provisions of [GPL] License are applicable instead of those above. If you
wish to allow use of your version of this file only under the terms of the
[GPL] License and not to allow others to use your version of this file under
the MPL, indicate your decision by deleting the provisions above and replace
them with the notice and other provisions required by the [GPL] License. If
you do not delete the provisions above, a recipient may use your version of
this file under either the MPL or the [GPL] License.</p>

</blockquote>

<p>I'm sorry you seem to be annoyed by my choice of the MPL.  I did read it
carefully and gave it plenty of thought before making that choice. I chose
the MPL because it says what I want to say better than I could have said it.</p>

<p>If folks on the linux-kernel list are of the general opinion that I'm
completely wrong and that the MPL/GPL would prohibit the DinX kernel modules
from ever becoming part of a statically linked kernel distribution, please
let me know asap so that we can resolve this while the contributor list is
still short. Thanks.</p>

</quote>

<p>This made sense to Alan Cox, who replied:</p>

<quote who="Alan Cox">

<p>It seems completely sane to me. The only advice I
would give is to ask people to always provide their modifications clearly
under the dual license to avoid any questions/mess.</p>

<p>Using the MPL makes it easier for people to use the driver in non Linux
OS's, and if thats what you want and intend its very cool.</p>

</quote>

</section>

<section
  title="Recoding Floating Point Emulation Routines"
  posts="4"
  subject="Linux Kernel Floating Point Emulation and CORDIC"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_04/msg00251.html"
  startdate="23 Dec 1999 00:00:00 -0800"
  enddate="24 Dec 1999 00:00:00 -0800"
>

<mention>Brian Gerst</mention>

<p>Arthur Jerijian gave a link to <a
href="http://www.ezcomm.com/%7Ecyliax/Articles/RobNav/sidebar.html">CORDIC
(COordinate Rotation DIgital Computer)</a> by Ingo Cyliax, and said, <quote
who="Arthur Jerijian">I have taken a look at the source code of the Linux
Kernel floating point emulation engine for i386 (as of 2.2.12, don't know if
it changed in 2.3.x). I noticed that it uses Taylor/Maclaurin polynomials to
approximate the sine, cosine, tangent, and inverse tangent functions.
Wouldn't CORDIC be a better algorithm for computing trigonometric and
exponential functions instead? CORDIC is a method for calculating
mathematical functions using only addition, shifting, and looking up entries
in a table.</quote> Brian Gerst replied that he didn't think it was worth it
to recode all the floating point routines, since they were only needed on
386s and some 486s, and no one was likely to be doing serious
number-crunching on such old machines. Matthew Wilcox replied that there
were many non-Intel machines that would benefit from better FP routines. But
he added, <quote who="Matthew Wilcox">However, I seem to remember someone
analysing the FP emulator (on ARM) and concluding that the cost of emulating
FP instructions was dominated by the trap handler and instruction decode. So
there's not much point in replacing the algorithms with more efficient
algorithms when it's not going to make much difference.</quote></p>

</section>

<section
  title="Strace Hole"
  posts="10"
  subject="strace can lie"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_04/msg00456.html"
  startdate="25 Dec 1999 00:00:00 -0800"
  enddate="31 Dec 1999 00:00:00 -0800"
>

<p>Pavel Machek reported:</p>

<quote who="Pavel Machek">

<p>When you see snippet from strace, that says:</p>

<code>

<blockquote>

open("/etc/passwd", O_RDONLY)           = 3

</blockquote>

</code>

<p>Do you trust it? You should not. Malicious program could open _any_ file on
filesystem with this syscall.</p>

</quote>

<p>He posted some code to do just that:</p>

<code>
<blockquote>
void<br />
main(void)<br />
{<br />
<blockquote>
  char *c = 0x94000000;<br />
  open( "/tmp/delme", O_RDWR );<br />
  mmap( c, 4096, PROT_READ | PROT_WRITE, MAP_FIXED | MAP_SHARED, 3, 0);<br />
  *c = 0;<br />
  if (fork()) {<br />
  <blockquote>
    while(1) {<br />
    <blockquote>
      strcpy( c, "/public" );<br />
      strcpy( c, "/secret" );<br />
    </blockquote>
    }<br />
  </blockquote>
  } else<br />
  <blockquote>
    while (1)<br />
    <blockquote>
      open( c, 0 );<br />
    </blockquote>
  </blockquote>
</blockquote>
}
</blockquote>
</code>

<p>He added:</p>

<quote who="Pavel Machek">

<p>Depending on races, /public or /secret is printed
with strace. This can be reproduced even on UP and easiest way to do so is
to make /public file readable, and then look if you get</p>

<code>

<blockquote>

[pid   224] open("/public", O_RDONLY)  = 718<br />
[pid   224] open("/secret", O_RDONLY)  = 719<br />
[pid   224] open("/public", O_RDONLY)  = 720

</blockquote>

</code>

<p>snippet like this. It is impossible for kernel to open non-existent file;
that means that strace printed something that did not actually happen.</p>

<p>Any ideas how to get rid of this problem? It is nasty. It is very nasty and
makes strace unusable for anything security-sensitive.</p>

</quote>

<p>Mike Coleman replied, <quote who="Mike Coleman">Yes, this is a problem if
you're trying to be secure. Anything that allows memory contents to change
while a process is stopped is trouble.</quote> He suggested some possible
solutions, but added, <quote who="Mike Coleman">One subtle problem with
eliminating the problem race is that it potentially provides a method for
the program to discover that it is being traced ("No races? I must be being
traced."). Ideally there would be no way for the program to tell.</quote></p>

</section>

<section
  title="Unexecutable Stack"
  posts="55"
  subject="Unexecutable stack"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_04/msg00445.html"
  startdate="27 Dec 1999 00:00:00 -0800"
  enddate="30 Dec 1999 00:00:00 -0800"
>

<p>Mike Karmyshev asked if Solar Designer's patch would make it into the
standard kernel as a security feature, since it appeared to have no
overhead. In particular he asked about the "secure stack" feature, that
would prevent any code in the stack from being executed. Victor Khimenko
replied, <quote who="Victor Khimenko">Last time when this question was
raised was more then year ago (if I recall correctly) and Linus said that
his feeling about unexecutable stack is that it does not make exploits
impossible but insted give you false sense of safety.</quote></p>

<p>A long discussion ensued. As some folks pointed out, the subject of a secure
stack has come up many times before. At one point, Richard B. Johnson said,
<quote who="Richard B. Johnson">The notion of a secure stack implies that
you get some kind of security by making the stack non-executable. This
theory has, to the best on my knowledge, never been shown to have merit,
much less proof.</quote></p>

<p>In the course of discussion, it was pointed out that the unexecutable stack
was not fully secure, though it did have security benefits against
buffer-overrun attacks. However, it also either broke or made more
difficult, existing "trampoline" code. Trampoline code, according to the
Free Online Dictionary of Computing, is:</p>

<blockquote>

<p>An incredibly hairy technique, found in some HLL and program-overlay
implementations (e.g. on the Macintosh), that involves on-the-fly generation
of small executable (and, likely as not, self-modifying) code objects to do
indirection between code sections. These pieces of live data are called
"trampolines". Trampolines are notoriously difficult to understand in
action; in fact, it is said by those who use this term that the trampoline
that doesn't bend your brain is not the true trampoline.</p>

</blockquote>

<p>At one point, John Alvord pointed out, <quote who="John Alvord">Linus was
talking about methods of eliminating the need for trampolining a few weeks
ago. That would make a non-executible stack trivial to implement.</quote></p>

</section>

<section
  title="'strace' Anomoly"
  posts="14"
  subject="strace security &lt;feature&gt;"
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_05/msg00061.html"
  startdate="29 Dec 1999 00:00:00 -0800"
  enddate="30 Dec 1999 00:00:00 -0800"
>

<p>Richard B. Johnson found that any user could do an 'strace cp somefile
/etc/passwd' to overwrite the system passwd file on systems that had their
'strace' binary setuid. A lot of folks were confused, because strace did not
seem to be setuid on their machines, and Alan Cox added, <quote who="Alan
Cox">strace is not meant to be installed setuid root.</quote> But Peter
Benie replied, <quote who="Peter Benie">That's not entirely true - see the
'setuid installation' section of the manpage. If you've ever needed to trace
a setuid program, it's obvious why this feature exists. The manpage does
give a clear explanation of the security implications, so the 'bug' is still
an installation error.</quote></p>

<p>Richard couldn't explain how 'strace' had come to be setuid on his system,
but pointed out that <quote who="Richard B. Johnson">Certainly `cp` never
attempted to obtain root privilege so the suid-root bit set in its parent's
file should have done nothing.</quote></p>

<p>Amidst other replies, Peter Benie said:</p>

<quote who="Peter Benie">

<p>That's not true. The reasons have been hashed out
by others in the thread, but they are missing the point that strace is
expecting that it might be installed setuid and so should demote privilege
before running cp.</p>

<p>Failure to demote privilege means that strace has failed to provide cp with
its normal environment so the behaviour of a traced cp could be different
from a untraced cp. This _is_ a bug in strace, however, it is _not_ a
security bug since anyone who can run a setuid-root strace is trusted
anyway.</p>

</quote>

</section>

<section
  title="memcpy() Benchmarks For Winchip"
  posts="11"
  subject="3DNow! patches on Winchip."
  archive="http://kernelnotes.org/lnxlists/linux-kernel/lk_9912_05/msg00089.html"
  startdate="30 Dec 1999 00:00:00 -0800"
  enddate="20 Dec 1999 00:00:00 -0800"
>

<p>Dave Jones reported that with the Winchip 2A-233, 3dNow/MMX memcpy() was
around 7 or 8 times faster than a normal memcpy(), according to his
benchmarks. He added, <quote who="Dave Jones">This is however running on a
66Mhz bus, and the chip is designed for running on a 100Mhz bus, so the real
gain is probably much higher. (I don't have a 100Mhz board to test
this).</quote> He suggested adding a IDT Winchip option of the CPU selection
menu of the kernel configuration, which would then set CONFIG_X86_USE_3DNOW.
Alan Cox replied that if his benchmarks were correct, the kernel should use the
faster memcpy() if available. But he admonished, <quote who="Alan Cox">Make
sure you benchmark both the cached and uncached cases,</quote> and added:</p>

<quote who="Alan Cox">

<p>Note that there is some stuff pending (hopefully for
2.4.0) that allows you to plug in multiple memcpy routines and handle the
choice per cpu. That will also allow you to do finer tuning for the winchip.
Right now with the current draft of that code it has support for</p>

<blockquote>

<table border="0">

<tr><td>                Integer copies</td><td>          (rep movs etc)</td></tr>
<tr><td>                MMX + 3Dnow!</td><td>            (mmx with prefetch)</td></tr>
<tr><td>                MMX no 3dnow</td><td>            (older mmx cpus)</td></tr>
<tr><td>                FPU trick</td><td>               (earlier preventiums)</td></tr>

</table>

</blockquote>

<p>and more can be added (eg the K6-2 seems to be fastest using integer
operations unrolled, and with prefetch stuff)</p>

</quote>

<p>Dave did some more benchmarks with cached and uncached copies, and initially
found a huge gain for the Winchip. But it turned out he had misunderstood
what Alan had asked for. Instead of testing uncached data, he'd turned the
cache off entirely, skewing the results. Finally he posted a much smaller
(though still significant) win for the Winchip. A difference of seconds
rather than minutes. No final word was heard from Alan on whether this
smaller gain would be worth a patch.</p>

</section>

</kc>
