Alan Cox [Fri, 23 Nov 2007 20:19:53 +0000 (15:19 -0500)]
Linux 2.2.13pre11
o Fix /dev/random scribble (Ted Tso)
o Multicast on token ring (Mike Phillips)
o Fix tty locking bug (Ted Tso)
o Alpha updates (fix udelay etc) (Jay Estabrook)
o Make NULL C++ friendly in kernel (Ben La Haise)
o pcwd watchdog bug fix (Marc Boucher)
o Fix dummycom bug on Alpha (Jay Estabrook)
Alan Cox [Fri, 23 Nov 2007 20:19:51 +0000 (15:19 -0500)]
2.2.13pre10
o Fix SA_SHIRQ handling bug (Andrea Arcangeli)
o SMP time locking (Andrea Arcangeli)
o Fix i386 tlb race (Andrea Arcangeli)
o Fix bh race on SMP (Andrea Arcangeli)
o SMP scheduler boot up race fix (Andrea Arcangeli)
o NFS fix (Trond)
o Clean up ntohl/htonl on 64bit boxes (Jakub Jelinek)
o Neomagic NM256 audio
Alan Cox [Fri, 23 Nov 2007 20:19:50 +0000 (15:19 -0500)]
Linux 2.2.13pre9
o Make shmall configurable (Henrik Nordstrom)
| + fixed a couple of bugs
o Amateur radio update (Tomi Manninen)
o Tlan unloads if it finds no cards (Christian Holtje)
o ISOfs fix (Todd Sabin)
o Fix Amiga RDSK parsing (Benny)
o Fix signal delivery hole (Alan Cox)
o Davicom D9102 driver (Sten Wang, Davicom)
o Strlen_user fix (Ivan Kokshaysky)
| I still strongly recommend you don't use gcc 2.95 to
| build 2.2.13 kernels. There are 3 or 4 reports now of 'random
| crash' that went away with older compilers.
o Hopefully fixed the 3c527 properly (Alan Cox)
Alan Cox [Fri, 23 Nov 2007 20:19:48 +0000 (15:19 -0500)]
Linux 2.2.13pre8
o Fix PCI/PCI_QUIRKS compile error (Alan Cox)
o I/O APIC update (Ingo Molnar)
o ISDN update (Karsten Keil)
o SyncLink update (Paul Fulghum)
o PPC Update (Paul Mackerras)
o QlogicISP fix (Dave Miller)
o Update ctime on rename (Chris Siebenmann)
o NFS generation ids (G. Allen Morris III)
o Fix /proc kstk values (Solar Designer)
o Updated multisound drivers (Andrew Veliath)
Alan Cox [Fri, 23 Nov 2007 20:19:46 +0000 (15:19 -0500)]
Linux 2.2.13pre7
o EEPro100 for Ultrasparc (Dave Miller)
o MediaGX audio bug workarounds (Alan Cox)
o Wavelan bug fixes (Jean Tourrilhes)
o SBNI driver (Yaroslav Polyakov)
o AHA1542 option fix (Chris Faulhaber)
o Fix possible sync_quota race (Jan Kara)
Alan Cox [Fri, 23 Nov 2007 20:19:43 +0000 (15:19 -0500)]
Linux 2.2.13pre5
o Fix 3c527 multicast crash (Alan Cox)
o VIA Apollo Pro needs DMA workaround (Takehiro TOMINAGA)
o bttv ADS data update (Karl Heinz Kremer)
o Clean potential kernel->user data leak (Rpbert de Vries)
o Advansys driver update (Bob Frey, Advansys)
o Optimise the memory zoning changes (Ben LaHaise)
o Fix memory tracking bug in sk_buffs (Henner Eisen)
o strnlen_user/exec fixes (Solar Designer)
| sparc,ppc fixes to follow
o Always defragment is now a sysctl
o Documentation update for SG (Doug Gilbert)
o Module parameters for tlan (spotted by Keith Owens)
o Fix qnx memory corruption (Andries Brouwer)
o Masquerade list fixes (Julian Anastasov)
o CD-ROM update (Jens Axboe)
o Fix task counting race (Curtis Regentin)
Alan Cox [Fri, 23 Nov 2007 20:19:41 +0000 (15:19 -0500)]
Linux 2.2.13pre4
o Fix ATP delay loop (Alan Cox)
o Fix tioccons tests (Miquel van Smoorenburg)
o VIA 82Cxxx audio (Jeff Garzik)
o Trust radio driver (Eric Lammerts)
o IBM ServeRAID driver (Keith Mitchell, IBM)
o C-Media CMI 8338 PCI audio driver (Chen-Li Tien)
Alan Cox [Fri, 23 Nov 2007 20:19:38 +0000 (15:19 -0500)]
Linux 2.2.13pre2
o Fix mm warning (Pascal Dupuis)
o Improved execve fix (Solar Designer)
o Fix SiS900 compile bug (Bill Nottingham)
o Fix bttv tuner breakages (Pauline Middelink)
o Don't print confusing reports on
3c529 probes with io/irq forced (Me)
o Support multiple eepro cards (Pascal Dupuis)
o New home for watchdog tools (Michael Meskes)
o IP masquerade mfw fix (Julian Anastasov)
o Name check fix in /proc/pid (Solar Designer)
o Make chown match tighter 2.0 behaviour (Solar Designer)
| Both behaviours are spec compliant btw
o Disallow non root use of clone_pid (Solar/Alan Cox)
o PPC sync up (Paul Gortmaker)
o Sparc sync up (Dave Miller)
Alan Cox [Fri, 23 Nov 2007 20:19:37 +0000 (15:19 -0500)]
Linux 2.2.13pre1
o execve() fix - based on one by (Tymm Twillman)
p ext2fs flag fixes (Matthias Riese)
o i2c tuner update (from Pauline Middelink)
o bttv schedule on irq fix
o Console race fixes/klogd (Andrea Arcangeli)
o Ensure version is up to date (David Woodhouse)
o QlogicFC fixes (Chris Loveland)
o Fix memory leaks in the serial layer (Armin Groesslinger)
o ARM sound fixes (Phil Blundell)
o Assorted warning cleanups (Riley Williams)
o Fix arcnet bug in 2.2.12 (Riley Williams)
o Small NFS fixes (Trond Myklebust)
o Updated sb1000 docs (Clemmitt Sigler)
o Fix IPX packet handling (Kelly French)
o PCI multifunction fixes (Martin Mares)
o Back out mmap resource change (Dick Streefland)
o Minor cleanups (Mikael Pettersson)
o Fix vt console print (Andrea Arcangeli)
o Rate limit a.out binfmt errors (Alan Cox)
o Generate different ksyms for 1G/2G (Alan Cox)
o Small cleanups (David Weinehall)
o Munmap, vm cache fix (Stephen Tweedie)
Alan Cox [Fri, 23 Nov 2007 20:19:35 +0000 (15:19 -0500)]
Linux 2.2.12
Platforms:Alpha (see notes), PowerPC, Sparc, X86
Introduction
Linux 2.2.12 is the latest update to the Linux kernel tree. It fixes the memory
leak bug in the 2.2.11 kernel. In addition it updates various drivers and the
platform specific support. The out of the box tree supports the Alpha, PPC,
Sparc and X86 platforms. MIPS is mostly merged but you should obtain the
platform specific tree. It is hoped MIPS and PowerPC will soon be fully merged.
ARM and M680x0 users should get their platform specific tree.
Known Bugs
On the Alpha platform we know the new maths code currently fails some glibc
maths checks. The Alpha port people are looking into this. Expect patches soon.
Compilers
This code is intended to build with gcc 2.7.2 and egcs 1.1.2. It is known that
not all of it builds validly on the x86 CPU's with gcc 2.95. As far as we know
these are Linux not gcc issues. Fixes for gcc 2.95 to gcc 3.0 may go into Linux
2.2 in time. You should therefore not use gcc 2.95 to build stable kernels for
the moment.
Binary Compatibility
Linux 2.2.12 changes a few internal system structures. You may need to rebuild
a few third party modules such as pcmcia-cs when upgrading from older kernels
to this one.
Security Notes
The TCP fixes in the 2.2.12 kernel for the memory leak and Solaris food fight
are the only security updates. You can obtain them seperately to 2.2.12 from
the 2.2.11 release notes. Linux 2.2.11 with the errata is believed to be as
secure as 2.2.12 unless you are trying to use strictly enforced capability
sets. In which case you may wish to apply the fs/proc/array.c patch from 2.2.12
to get precisely the same security.
Architecture Updates
Alpha
Further changes have been made to the maths emulation support.
A bug where the floppy drive may be unusable for alternating periods of
49.7 days has been fixed.
The Symbios cache test should now pass and the SCSI work properly.
i386
Optimisations for the IDT Winchip.
Identify and report the AMD Athlon.
Fix a crash on boot with the AMD Athlon.
MIPS
Fix a timeout scheduling error in the dz driver.
PowerPC
All the PPC changes should now be merged.
Sparc
A problem with the viking MMU code has been fixed.
A small Sparc64 kernel_thread change.
Core Updates
File Handles
The kernel now supports large numbers of file handles per process.
The default remains unchanged but can be raised by processes.
Memory Limits
Certain parts of the kernel didn't correctly interpret RLIM_INFINITY
and enforced 2Gig limits.
Mlock
Munlock was checking for CAP_IPC_LOCK when it should only be required
to lock memory.
Quota
Fixed a pair of accounting errors in the quota code.
Driver Updates
Computone Intelliport 2
A driver for this card under Linux has been included.
DAC960
The DAC960 driver has been updated.
ESS Solo
An experimental driver for this PCI sound card is now included.
Iomega Buz
A Zoran ZR36067 driver for video capture including MJPEG capture is
now included.
This works with the Iomega buz but does not yet support the LML33.
ISDN
The ISDN fax patches have been merged.
The hisax driver now passes certification with some ELSA cards.
Fix a buffer headroom issue with compression and ISDN ppp.
MAD16
The MAD16 driver now defaults to not enabling its on board CD port.
This avoids problems with users not being aware the default may
interfere with other drivers.
Multitech ISI driver
Support for PCI interrupt sharing is now included.
PCWD Watchdog
Revision A boards reported their status incorrectly.
Soundblaster
A case where IRQ 0 may be erroneously freed has been fixed.
VisWs Sound
The SGI visual workstation onboard audio is now supported.
VisWs Video
The SGI visual workstation onboard video driver has been improved.
File System Updates
Welsh Language
ISO 8859-14 (The Celtic languages) is now supported for UTF8 translations.
Miscellaneous Updates
ChangeLog
The Changelog has been updated to reflect newer tools.
Documentation
Various documents have been updated.
Network Updates
Alteon AceNIC
Small changes have been made to reduce its interrupt load and increase
performance further.
Interphase 5526
This fibre channel chipset is now supported under Linux
RTL8139
A sign handling bug has been fixed that might have caused memory leakage.
SB1000
The errata patch for the SB1000 has been folded into the 2.2.12 kernel.
This driver is now functional.
SiS900
This driver has been updated further.
SCSI Updates
PAS-16
The module now allows you to set the I/O and IRQ.
Symbios controller
The symbios 53C876 revision 32 is now supported.
Security Updates
/proc/kcore
The RAWIO capability is now needed to access /proc/kcore.
Memory leak from TCP
This is the nasty bug fixed in the 2.2.11 errata. The fix is also in 2.2.12.
Solaris food fight
This TCP fringe case has been fixed.
Tightened capabilities
We have tightened the capabilities needed for setting frame buffer bases
to include RAWIO.
Alan Cox [Fri, 23 Nov 2007 20:19:24 +0000 (15:19 -0500)]
Linux 2.2.12pre1
Fix
o Fix the TCP memory leak (Dave Miller)
o Fix the 6Mb kernel bug on PPC (Paul Mackerras)
o Fix shared IRQ on ISI serial (Alan Cox)
| Still not SMP safe it seems
o Sb1000 compiles built in (Alan Cox)
o Sb1000 works (Alan Cox)
o Fix warning in eth16i driver
o Sis900 driver update (Jim Huang SIS)
o PAS16 takes module arguments (Bob Tracey)
o 53C875 model 37 detection (Pekka Pietikanen)
o Autofs deadlock with nfs
o Require RAWIO cap for kcore (Matthew Kirkwood)
o munlock isnt priviledged (Matthew Kirkwood)
o RLIM_INFINITY handling (Kanoj Sarcar)
Add
o Enhanced Raid (Ingo Molnar)
o Computone Serial Driver (Computone)
o Minor documentation update
o IP virtual server masquerade (Wensong Zhang and others)
o Iomega Buz capture driver (Rainer Johanni, Dave Perks, et al)
o Large file array support (Stephen Tweedie)
o FPU emulation enhancements for
Alpha (Richard Henderson)
o Universal Serial Bus (Assorted, backport by Paul Mackerras)
o Detect AMD Athlon and report (Alan Cox)
o Honour Bios EBDA (??)
o PPC updates
o Celtic language NLS (Rhys Jones)
o IPH5526 FC Driver (Vineet M Abraham)
Alan Cox [Fri, 23 Nov 2007 20:19:22 +0000 (15:19 -0500)]
Linux 2.2.11
Platforms:Alpha, Sparc, X86
Introduction
Linux 2.2.11 is the latest major update to the Linux kernel tree. It fixes
security holes in the kernel so should seriously be considered as an important
update for all Linux 2.2 systems. The out of the box tree supports the Alpha
the Sparc and X86 platforms. PowerPC and MIPS are mostly merged but you should
obtain the platform specific tree. It is hoped MIPS and PowerPC will soon be
fully merged. ARM and M680x0 users should get their platform specific tree.
Binary Compatibility
Linux 2.2.11 changes internal system structures. You should therefore rebuild
third party kernel modules such as pcmcia-cs when upgrading from older kernels
to this one.
Security Notes
If you have local users on the machine there are no workarounds for some of
the fixed bugs. If you are concerned only with remotely exploitable bugs then
the only concern is the firewall bug. This can be worked around by
1. Applying just the patch to net/ipv4/ip_fw.c or
2. Building a kernel with CONFIG_ALWAYS_DEFRAGMENT.
This is the recommended configuration for a firewall except where there
are multiple ingres paths. Using this option also screens clients behind
the firewall from fragment attacks.
It is possible the socket binding bug can be exploited remotely by requesting
the right things from a server. We are not aware of any ways to do this.
Architecture Updates
Alpha
Extensive updates to the Alpha platform support have been merged from the
Alpha maintainers. Significant changes have been made to the maths
emulation support.
i386
Support is now available for machines with 2Gig of RAM.
The interrupt handling has been modified for better SMP performance.
An SMP race when freeing an interrupt has been cured.
The interrupt return path has been optimised for modern CPU's with a
hardware call stack.
ioremap now allows mapping to the top of memory.
Mips
Most of the mips port has been merged with the main tree.
The work is not totally complete.
PowerPC
Some changes have been merged.
Sparc
The master kernel should now be up to date with the Sparc tree.
A problem with the Sun4m SMP has been fixed.
Sparc64 support for TV capture cards has been added.
A race condition on core dumping has been fixed.
Core Updates
Coloured Zero Page
The kernel core supports a colouring of zero pages.
Currently only the MIPS port uses this facility.
Fork
Fork set the processor id to NO_PROC_ID. This could cause crashes.
Kupdated
The update task now runs in kernel space instead of user space.
Memory allocation
The memory allocator has been updated so that it tries a lot harder to
keep ISA DMA memory pools available.
PCI bus
If the machine ran out of memory during boot up scanning of the PCI bus
it would crash.
Request Length Limit
The block device layer can now do merging of non memory-contiguous
requests for some drivers and can also limit the number of segments
per merge.
Signal Handling
Queued RT signals had atomicity problems that could eventually cause them
to stop working.
Swapping
An off by one error that could cause system deadlocks when you ran out of
memory has been fixed.
Driver Updates
BTTV TV capture
The capture driver now supports the ultrasparc platform.
The LifeView FlyKit card is now supported.
Cadet Radio Driver
A bug has been fixed which could cause RDS data corruption.
CDROM driver
A procfs handling bug where the cdrom layer could hand back more data
than was requested has been fixed.
Compaq SMART2
The Compaq SMART2 now has a Linux driver.
Cyclades multiport serial
Interrupt mode is supported on the Cyclom-Z>br>Several minor bugs were fixed.
Gemtek Radio
The I/O address for the onboard GemTek card is now recognized.
IDE CDROM
Several small bugs have been fixed.
IDE Floppy
The ZIP disk corruption problem should be dead.
IDE Tape
An SMP race condition has been fixed. A case where it used memory after
freeing it has been fixed.
ISDN4Linux
Significant updates have been made to the ISDN layer in the kernel.
Several more cards are now supported.
Multitech ISI series multiport adapters
Support has been added for the PCI bus ISI cards.
Mylex DAC-960
The DAC-960 raid controller card is now supported by Linux.
Network Block Device
The network block device mis-set the size of larger network block devices
(those over about 2Gig).
Parallel Port
ECP Parallel ports are now dropped into a PS/2 like mode.
Radiotrack 2
This driver previously only worked as a module.
It now works compiled into the kernel.
Sound Layer
The DMAsound driver has several small bug fixes.
Allocation bugs were fixed on the ES1370/ES1371 and SonicVibes drivers.
The S/PDIF output is now supported on newer ES1371 chips.
A configuration bug on the Opti C924 has been fixed.
The OPL3/SA2 driver has been improved.
ES1869+ ESS chips should now play at the right speed.
3DSE enable/disable is supported by OSS.
The joystick on the trix card is now runtime configurable.
Specialix SX/SI multiport
These cards are now supported by a new specialix serial driver.
Quick Cam
A memory allocation bug that could cause crashes in both the quickcam
drivers has been fixed.
Serial
A bug that prevent shared interrupt mode working on the PC serial driver
has been fixed.
TGAfb
A frame buffer for the DECChip 21030 frame buffers.
These are found in many of the Alpha based machines.
VGA Frame Buffer Console
Linux 2.2.11 adds a native EGA/VGA 16 colour console to the frame buffer
console support. This is primarily aimed at GUI installers but can be
used for other things too.
File System Updates
CODA
Coda now supports pipe devices. Several other cleanups/changes.
EFS
SGI EFS is now supported read only.
Ext2fs
"Too large" error andling errors on very large files have been fixed.
The immutability rules have been updated.
FAT
FAT now caches by starting cluster.
FAT knows FAT32 is really only 28bit.
Now generates inode numbers differently.
FIBMAP
The FIBMAP ioctl now requires RAWIO capability.
ISOfs
A case where the ISO fs could crash the machine when it ran out of memory
has been resolved.
Lockd
A list mishandling bug in the lock daemon has been fixed.
2.0.x compatible 'local only' locking is supported.
Loop Device
The loopback driver for mounting file systems onto files now checks the
underlying layer supportd bmap().
Nextstep CD-ROM supported
The UFS file system can now handle NextStep CD-ROM format.
NCP fs
A null pointer crash case has been fixed.
NFS client
A stale handle case has been fixed.
Pipes
A technical violation of the SuSv2 specification when preading 0 bytes
from a pipe has been fixed.
Procfs
The kernel memory image now reports the correct offset for its base.
A memory handling bug has been fixed.
QNX fs
A crash when bad blocks are read has been fixed.
Quota
A whole pile of races, especially SMP races, in the Quota subsystem
have been fixed.
UFS
Crashes when a block cannot be read have been cured.
Ultrix Partition Tables
Ultrix partition tables are now supported.
This is needed for the MIPS port in particular.
Miscellaneous Updates
ChangeLog
The Changelog has been updated to reflect newer tools.
Network Updates
Alteon AceNIC
The driver now recognizes the Farallon PN9000SX and the SGI variants
of the board.
Appletalk
Now allows larger net ranges as 2.0 did. Fixed a crash on route changes.
ARCnet
Several cases where an out of memory could crash the machine have been
fixed. The irq probe delay has been increased to resolve a problem on
some SMP boxes using ARCnet cards.
Arlan
The ISA bus Arlan radio interfaces are now supported.
Bridge
The bridge layer handled BPDU time values wrongly.
Comtrol Hostess SV-11
A case where a DMA channel could be freed twice has been cured.
COSA
The COSA driver has several bugs fixed including a firmware bug workaround
and a deadlock bugfix.
CS89x0
Underrun handling on the DMA was faulty. This update should fix it.
DEPCA
Bridging did not work with the DEPCA driver due to an error in the
packet length computation.
General Instruments Surfboard 1000
A driver supporting the internal SB1000 ISA card has been added to the
kernel. For more information see http://home.adelphia.net/~siglercm/sb1000.html.
IBM 'Olympic' PCI token ring adapters
Support has been added for most of the IBM PCI token ring adapters.
The Lanstreamer is not yet supported however.
IP layer
Fixed routing bug, socket hashing bug, crash with MTU below 68 bytes.
An IGMP protocol handling error has been fixed.
IP version 6
The firewall code could oops if it ran out of memory.
IPX
IPX packet routing could oops if the machine ran out of memory.
Lance
The Lance driver could oops if there was no memory free.
Masquerade
Masquerading made a poor choice of hashes for some operations.
The IRC masquerade did not understand the extended DCC commands.
Multicast Routing
PIM2 checksumming was incorrect and broke with old peers.
NE2000/PCI Driver
This now supports the PowerPC and also the differently broken Holtek chips.
NetROM
The NetROM layer could oops during loading if it ran out of memory.
Packet Schedulers
Several bugs were fixed in the packet scheduling.
PCNet 32
Now supports the 79cc973/5 chips.
Some PCI scanning changes have been made.
A bug with manual MII selection has been fixed.
Realtek 8129/8139
This driver has been updated.
ROSE
The ROSE layer could oops during loading if it ran out of memory.
Sealevel Systems 4021
A driver for this Z85230 based card has been added.
Seeq 8005
This driver may now be built as a module.
SiS900
An experimental driver for this new chipset is now included.
sk_mca
Minor MCA bus fixes
Synchronous PPP
A bug where the synchronous PPP driver would drop connections under high
load due to keepalive lossage has been fixed.
TCP Protocol
Fixed a race condition with two writers and partial writes.
Update workarounds for bugs in the PAWS protocol (RFC1323)
Fix crash in socket binding.
Tulip Driver
A fix for a race where the Tulip driver would hang has been added.
VIA Rhine
This driver has been updated.
Wavelan
The frequency handling for the wavelan has been updated for the newer
modem revision.
YAM FPGA Radio Modem
This is now supported under Linux in 1200 and 9600 baud mode.
Yellowfin
The yellowfin driver has been updated to correctly handle non x86 platforms.
Z85230
Several non fatal bugs in the Z85230 synchronous driver have been fixed.
SCSI Updates
The general SCSI layer has been updated to fix a couple of read only reuses of
freed memory and to fix oopses when loading modules and running out of memory.
A problem where the scsi error thread stopped initrd unloading has also been
fixed.
AHA152x
Driver is now SMP safe. Abominable responsiveness under heavy load should
also be cured.
AHA154x
Supports loadtime options as a module for configuration.
Supports AHA1542CFP geometry translation modes.
AIC7xxx
Updated to fix various reported bugs.
AMI Megaraid
Fixed a bug with manager control commands causing false SCSI layer errors.
Increased SCSI command timeouts.
ATP870U
This driver is now SMP safe.
Constants
The SCSI layer will now name SCSI 2 commands in verbose error reports.
EATA
The driver will set a device to master mode if need be.
EATA-DMA
This driver is now SMP safe.
IDE SCSI
When scsi generic was used the IDE SCSI layer could get confused.
IDE SCSI generic transform couldn't be disabled once enabled.
IN2000
The assembly part of this did not compile with the latest compilers.
Initio SCSI
On non X86 platforms some delays were incorrect by a factor of ten.
NCR 53c8xx
Fix misdetection of 53C875E and other minor fixes.
NCR 53C9x
Driver is now SMP safe.
QlogicFC
Now supports the isp2200 card.
Qlogic ISP
Geometry handling corrected for larger than 8Gig disks.
Symbios 53c416
This driver is now SMP safe.
Symbios 53c8xx
Fix misdetection of the 53C875E. Added support for the 53C895A.
Updated scripts.
Security Updates
AX.25
The AX.25 layer had a bug allowing arbitrary scribbling into kernel space
by an application. The area hit is hard to control so the exploit is
probably limited, but still dangerous.
Capabilities
There is now a bounding capability set that can only be increased by
process 1. This provides securelevel equivalence.
Firewall
A carefully constructed packet sequence could rewrite the port numbers on
a packet potentially allowing frames that should be screened through the
firewall.
Mremap
Mremap called zap_page_range with incorrect arguments.
A large realloc() under glibc could do all sorts of nasty things.
Sysrq
It is now possible to build a kernel with debugging sysrq support and
enable/disable the option at runtime.
TCP
Some unusual patterns of socket binding could cause a crash.
A user could deliberately trigger this. Now fixed.
/dev/port
The RawIO capability is now required to open /dev/port, /dev/mem
and /dev/kmem.
Alan Cox [Fri, 23 Nov 2007 20:19:12 +0000 (15:19 -0500)]
Linux 2.2.11pre2
Core Changes
o Crashes and other problems caused by atomicity errors in signal
delivery are cured.
o Fixed bug in mremap
o Try to preserve DMA pages
o Swapfile miscalculation deadlock fix
o Fix the free_irq race on x86 SMP
o Zero page colouring is supported. Only Mips uses it. The changes for
other architectures are macro no-ops
o ll_rw_blk supports segment limiting on mergeing for scatter gather
o Move to 128 requests outstanding (needed for big end raid kit)
o Fixed out of memory checks in pci scan
o Try to handle out of memory right for scsi
o Fix initrd busy/disk busy problem with scsi_eh thread
o Fix scsi cmd_len bug
o Switch to a kernel side updated
o Add a panic time notifier chain
o A global capability limit is now available akin to securelevel but
fine grained
Network Changes
o Socket hash crashes are fixed
o Appletalk large net ranges allowed as per 2.0.x
o Fix oops in appletalk
o Fix exploitable buffer overrun in AX.25
o Disallow inet devices with < 68 mtu
o Fix masquerade hash keys
o IRC masquerade allows extended commands
o Kernel nfs root bootp fix
o PIMv2 fixes for multicasting
o Fix TCP/UDP address returns on 0 length read
o IPv6 address config fixes
o IPv6 out of memory firewall crash
o IPX oops on out of memory fix
o Netrom/ROSE out of memory fixes
o Remove escaped printk in traffic scheduler
o Various small af_unix changes
FS Changes
o Changes to partition code for names for new raid drivers
o Changes to partition code - added EFS/Ultrix
o Changes to partition code - buffer leak fixes
o Changes to partition code - endian bug fixes
o EFS file system
o Small coda update
o Fix races in quota handling
o Fix ext2fs errors when writing past 2Gig boundary
o FAT now uses cluster numbering for inode info
o Fix the fact FAT32 is really FAT28
o Optimise fat directory scanning
o Stop FIBMAP being used without rawio capability
o Stop crash on out of memory in isofs
o Support 2.0.x compatible local locking over NFS
o Fix NULL pointer crash in NCPfs
o Fix SUS compliance bug in pipes
o Fix out of memory crash in procfs
o Fix disk read error crashes in Qnx and UFS
o Support Nextstep UFS cdroms
Driver Changes
o Sysrq key is runtime enable/disable
o PC keyboard changed to use macros (needed for MIPS and will be
needed for PA-RISC shortly)
o Updated ISDN layer (The patch from SuSE)
o BT848 supports ultrasparc
o Added DAC960 raid driver
o Added Compaq SMART2 raid driver
o IDE CDROM toc/readraw fix
o IDE ZIP fix
o IDE tape updates
o Loopback driver fix some minor flaws
o nbd - fixed a problem where very large nbds reported wrong disk size
o ramdisk - fixed compile warning
o Fixed /proc overrun in cdrom
o bttv - fixed zoltrix tv max, sparc support, added lifeview fly
o bw-qcam/cqcam - fixed kmalloc check missing
o Cyclades. Updated driver from vendor.
o ISI driver update. Now supports PCI cards too.
o Cadet radio driver update
o Tweak gemtek radio to support radio/sound combo card
o Fix IRQ sharing on serial ports
o Radiotrack2 only worked as a module. Fixed
o Added ARLAN radio-lan driver
o Added Olympic chipset driver (IBM PCI token ring)
o Added YAM FPGA amateur radio modem driver
o Fixed memory allocation bugs in arcnet
o Fixed SMP irq detect bug in arcnet
o Clean up copy_*_user stuff in various net drivers
o Correct packet length bug in depca
o Cache align rings for eepro100
o Fix erroneous DMA free in Comtrol driver if run in single DMA mode
o Fix egcs warnings in irda
o Add out of memory check to lance
o Update Ne2K-pci driver. Adds Holtek support
o Fix memory allocation checks in net_init
o Support network stats on shapers
o Updated RTL8139 driver
o Add Sealevel systems sync driver
o Support module built version of Seeq8005 driver
o Fix link drop under load bug in syncppp
o Fix DescOwned race in tulip driver
o Updated VIA Rhine driver
o Alignment fixes for yellowfin driver
o Fix bugs in Z85230
o SMP safety fix for NCR539x
o Clean up and fix several aha152x bugs.
o Fix module options and geometry on aha154x
o AIC7xxx update
o ATP870u SMP safety fixes
o Add SCSI-2 names to scsi debug/verbose info
o SMP safety fixes for eata-dma
o IDE-scsi sg-transform fix
o in2000 asm fixed to work with recent tools
o Megaraid update
o Qlogic FC driver update
o Qlogic ISP geometry fixes
o Clean up OPL3SA sound
o Fix overrun in dmasound
o ES1370/ES1371/Sonicvibes allocation bug fixes
o Opti 924 PnP mode fix
o ESS ISA fixes
o Support AWE32 AWSE device
o Allow joystick selection in trix module
o 16 colour EGA/VGA frame buffer console support
o Enhanced TGA frame buffer
Architecture Changes
o Synchronized with Alpha updates from Richard Henderson
o 2Gig support for i386
o i386 boot up crash on keyboard timeout fix
o Cache align i386 irq structures for performance on SMP
o Fix the ix86 unbalanced call stack performance problem
o Fix the ix86 ioremap to top of memory bug
o Big mips merge with the main mips tree
o Fix missing sparc core dump locks
o Fix semaphore race on x86
o Remove cyrix COMA thing. Use set6x86
Minor Stuff
o Updates CREDITS, MAINTAINERS
o A lot of documentation updates
o Makefile changes for MIPS cross compiling
o Makefile checks genksyms version
o Makefile clean ups
o Fix offset on /proc/kcore
o Added generic memchr
Linus Torvalds [Fri, 23 Nov 2007 20:18:57 +0000 (15:18 -0500)]
Linux 2.2.8
Most of 2.2.8 by far is just architecture updates: arm, ppc and m68k stand
out as having been pretty much synchronized to their respective devel
trees, but there are some fixes to alpha and x86 too.
The one major fix in 2.2.8 is the SMP fix for disable_irq(), courtesy of
Andrea Arcangeli (I disagreed in details and did it differently in the
end, but all the heavy lifting was done by Andrea). This is the thing that
caused silenth deaths for some people with certain network adapters (3c509
and 8390-based cards in particular: the latter covers ne2000 clones which
are fairly common).
There are lots of smaller things (driver updates, filesystem cleanups and
some networking fixes), but the SMP irq thing is the one to kill for if
you happened to have any of the affected cards.
Linus Torvalds [Fri, 23 Nov 2007 20:18:41 +0000 (15:18 -0500)]
There's a pre-3 patch on ftp.kernel.org in the kernel/testing directory,
and I'd really like people to give it a good testing: especially if you've
seen slow network connections to some clients (ie Windows). David worked
in the compatibility patches to work around some of the Windows TCP stack
"features" (and Apple too, for that matter), and we want to get this well
tested. It's all fairly straightforward, but let's be careful out there..
Linus Torvalds [Fri, 23 Nov 2007 20:18:31 +0000 (15:18 -0500)]
Linux 2.2.5 - and a vacation
I made Linux-2.2.5 yesterday (as some people already have noticed: due to
popular demand I try to delay the announcement for some time in order to
let the thing percolate to mirror sites, in case anybody wondered).
The 2.2.5 release is meant to be a final cleanup release before I leave
for a two-week vacation. So please take these release notes to also mean
that it is probably a good idea to hold off emailing me stuff directly,
unless it is a major bug that you really think I should look at
immediately. I would suggest people discuss problems on the mailing list
and on the newsgroups, where other competent people are, rather than
expecting me to do much about it.
Also, note that there have been various indications that egcs potentially
miscompiles the kernel, or at least makes some problems worse. We don't
know whether that is due to one or more kernel bugs, compiler problems, or
just combinations of "features" in both. I would suggest that if you have
problems you at least verify whether the problems still exist with
gcc-2.7.2.
That said, I bet that both the kernel people and the egcs people would be
really happy the more people look into this - if somebody feels motivated
enough and sees problems with egcs, it would be extremely powerful to try
to pinpoint the particular file that seems to bring on the problems. I'm
afraid it needs a known failure mode and lots of legwork to find out what
triggers it, though.
- compiles with accounting.
- add support for Microgate SyncLink and Synchronous HDLC
- stallion driver update
- alpha EV6 and SMP fix for bootup with newer compilers
- ptrace fix for sparc/i386
- small sparc updates
- floppy driver could oops at bootup under certain setups
- random driver updates (bw-qcam, sound driver error codes, etc oneliners)
- FIOASYNC ioctl fix
- network locking fixes
- SMP "struct user" and signal sending fixes
Linus Torvalds [Fri, 23 Nov 2007 20:18:26 +0000 (15:18 -0500)]
Linux 2.2.4
As of 2.2.4, I should be synchronized with the Sparc[64] and PPC ports,
which is the major reason why the patch is pretty huge. Apart from the
architecture synchronizations, 2.2.4 does:
- dumping core over NFS could do bad things. Core-dumping cleaned up and
fixed.
- various small TCP/IP buglets fixed. Linux got confused by hosts that
didn't report any mss, and had problems with zero-sized fragments, etc.
Linus Torvalds [Fri, 23 Nov 2007 20:18:20 +0000 (15:18 -0500)]
Linux 2.2.3pre3
There's a new pre-patch for 2.2.3, one that I was already going to make
the final 2.2.3, but I decided that I'm chicken after all, and that I
might as well let some people check that it's sane.
This pre-2.2.3 does:
- Fix some silly NFS problems. Some of them can be quite bad: lost error
notification of asynchronous writes, which can result in horrible
problems (including lost email etc). Most people wouldn't ever notice,
so don't panic, but forgetting about the error notification certainly
counts as a brown paper bag.
- Alpha should compile and work again
- Various driver updates. This is actually the bulk of the patch, with
IRDA updates, some scsi, video and sound driver updates etc.
- The "mmap forgets about the file that was mapped" bug that has been
discussed here. Only affected certain drivers.
- shaper atomicity fixes
- various minor TCP fixes
- buffer growth fix and recursive IO memory reclaim fix from Andrea
- network filter compiles ;)
- unix gc fixes
Tell me if you see problems, because I'm going to release it as 2.2.3
unless people tell me otherwise..
Linus Torvalds [Fri, 23 Nov 2007 20:18:12 +0000 (15:18 -0500)]
Linux 2.2.2pre4
In a superhuman effort to not get killed by my wife, I delayed the latest
release for a day. And in fact, it's still just a pre-release, because I
wanted to check with Ingo that I have his latest IO-APIC code with the
proper handling of ExtINT. Ingo?
Anyway, the "not quite valentine days release" (also known as the "horny
greased weasel", aka "presidents day" release ;), is right now a pre-patch
on ftp.kernel.org: /pub/linux/kernel/testing/pre-patch-2.2.2-4.gz.
Happily, I haven't heard of any new real show-stoppers, which is good
(especially considering the fact that I gave it an extra week just to hear
if somebody could come up with some new problems). The things fixed
relative to 2.2.1 are:
- the inode thing. If you don't know, don't worry.
- config scripts updated
- IO-APIC cleanups and fixes, so that people with strange motherboards
should be able to reboot cleanly and not get unexpected interrupts.
- 2kB sector media (ie mostly MO) fixes. See all the warnings on the
lists about fdisk confusion etc if you have one of these things.
- IDE disk cleanups/fixes (geometry and autodetection)
- PS/2 mouse hides ACK's again
- pty crash fix
- some network driver fixes (out-of-memory and shared interrupts)
- some sound and video updates.
- lockd cookie fixes
- nfsd readdir reply cache fix
- filesystem/VM deadlock avoidance (new deamon: kpiod)
- SMP scheduler race condition (which nobody has probably ever seen)
- TCP socket locking fix
Most of the above are really hard to see in the first place, and not
something most people would ever hit (with the possible exception of the
inode thang). But it would be good to have a really rock solid 2.2.2, so
if people could just bother to check that it works for them, and I'll make
this official tomorrow.
Linus Torvalds [Fri, 23 Nov 2007 20:18:11 +0000 (15:18 -0500)]
Linux 2.2.2-pre2
this one contains various small documentation updates and updates to xconfig,
but the important parts (and the smallest part of the actual patch) are:
- shared file lockup fix by Stephen Tweedie
- my fix for the TCP bug that Ingo found
- Ingo's io-apic setup fixes, which should finally get rid of the
spurious apic interrupts with some motherboards and the ExtINT setup.
- inode leak thing
- SMP scheduler potential race condition fix
- sound driver updates
- partition and disk fixes (2kB blocksize media and some IDE disk
geometry and irq detection issues).
None of the fixes are critical to most people, but all of them _can_ be
critical to people who have seen vulnerabilities in the area. As such, if
you're happy with 2.2.1 there is no pressing reason to test this patch
out, but I hope to have the pre-patches so that the final 2.2.2 can be
left around for a while (CD-ROM manufacturers etc would certainly prefer
to not see lots of releases).
Linus Torvalds [Fri, 23 Nov 2007 20:18:08 +0000 (15:18 -0500)]
Linux 2.2.1 - the Brown Paper Bag release
The subject says it all. We did have a few paper-bag-inducing bugs in
2.2.0, so there's a 2.2.1 out there now, just a few days after 2.2.0.
Oh, well. These things happen,
Linus
- the stupid off-by-one bug 'execute a coredump' crash found by Ingo
- __down_interruptible on alpha
- move "esstype" to outside a #ifdef MODULE
- NFSD rename/rmdir fixes
- revert to old array.c
- change comment about __PAGE_OFFSET
- missing "vma = NULL" case for avl find_vma()
Linus Torvalds [Fri, 23 Nov 2007 20:18:06 +0000 (15:18 -0500)]
Linux 2.2.0
> Compile this code
>
> ---- cut here ----
> #include <fcntlbits.h>
> void main( int argc, char *argv[] ) {
> open( argv[ 1 ], O_WRONLY|O_CREAT|O_TRUNC, 0666 );
> }
> ---- and here ----
>
> and run it like this
>
> strace ./a.out >(cat - )
>
> with 2.0.36 & 2.2.0-pre[67] you get:
>
> open("/dev/fd/63", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
>
> with 2.2.0-pre[89] you get:
>
> open("/dev/fd/63", O_WRONLY|O_CREAT|O_TRUNC, 0666) = -1 ENOENT (No
> such file or directory)
Ok, this seems to be due to pre9 removing some rather bogus code that
happened to hide another problem in open_namei().
I haven't actually tested this, but it looks really obvious, so does this
patch fix it for you? (This should also fix a potential performance
bogosity - there's absolutely no reason why we should get the directory
lock when we don't need to for a normal open of an existing file).
Linus Torvalds [Fri, 23 Nov 2007 20:18:05 +0000 (15:18 -0500)]
2.2.0-final
Hoya,
there's now a 2.2.0-pre9 on ftp.kernel.org, and when you compile it it
will call itself 2.2.0-final. The reason is fairly obvious: enough is
enough, and I can't make pre-kernels forever, it just dilutes the whole
idea. The only reason the tar-file is not called 2.2.0 is that I want to
avoid having any embarrassing typos that cause it to not compile under
reasonable configurations or something like that. Unreasonable
configurations I no longer care about.
Every program has bugs, and I'm sure there are still bugs in this. Get
over it - we've done our best, and nobody ever believed that there
wouldn't be 2.2.x kernels to fix problems as they come up, and delaying
2.2.0 forever is not an option.
I have a wedding anniversary and a company party coming up, so I'm taking
a few days off - when I get back I expect to take this current 2.2.0-final
and just remove the "-final" from the Makefile, and that will be it. I
suspect somebody _will_ find something embarrassing enough that I would
fix it too, but let's basically avoid planning on that.
In short, before you post a bug-report about 2.2.0-final, I'd like you to
have the following simple guidelines:
"Is this something Linus would be embarrassed enough about that he would
wear a brown paper bag over his head for a month?"
and
"Is this something that normal people would ever really care deeply
about?"
If the answer to either question is "probably not", then please consider
just politely discussing it as a curiosity on the kernel mailing lists
rather than even sending email about it to me: I've been too busy the last
few weeks, and I'd really appreciate it if I could just forget the worries
of a release for a few days..
But if you find something hilariously stupid I did, feel free to share it
with me, and we'll laugh about it together (and I'll avoid wearing the
brown paper bag on my head during the month of February). Do we have a
deal?
I've seen people working on a 2.2.0 announcement, and I'm happy - I've
been too busy to think straight, much less worry about details like that.
If everything turns out ok, I'll have a few memorable bloopers in my
mailbox but nothing worse than that, and I can sit down and actually read
the announcement texts that people have been discussing.
ObFeatures:
- m68k sync
- various minor driver fixes (irda, net drivers, scsi, video, isdn)
- SGI Visual Workstation support
- adjtimex update to the latest standards
- vfat silly buglet fix
- semaphores work on alpha again
- drop the inline strstr() that gcc got wrong whatever we did
- kswapd needed to be a bit more aggressive
- minor TCP retransmission and delack fixes
Until Monday,
Linus
Linus Torvalds [Fri, 23 Nov 2007 20:18:01 +0000 (15:18 -0500)]
Linux 2.2.0pre7
Ok, I think I now know why pre-6 looks so unbalanced. It's two issues.
Basically, trying to swap out a large number of pages from one process
context is just doomed. It bascially sucks, because
- it has bad latency. This is further excerberated by the per-process
"thrashing_memory" flag, which means that if we were unlucky enough to
be selected to be the process that frees up memory, we'll probably be
stuck with it for a long time. That can make it extremely unfair under
some circumstances - other processes may allocate the pages we free'd
up, so that we keep on being counted as a memory trasher even if we
really aren't.
Note that this shows most under "moderate" load - the problem doesn't
tend to show itself if you have some process that is _really_
allocating a lot of pages, because then that process will be correctly
found by the trashing logic. But if you have lots of "normal load"
processes, some of those can get really badly hurt by this.
In particular, the worst case you have a number of processes that all
allocate memory, but not very quickly - certainly not more quickly than
we can page things out. What happens is that under these circumstances
one of them gets marked as a "scapegoat", and once that happens all the
others will just live off the pages that the scapegoat frees up, while
the scapegoat itself doesn't make much progress at all because it is
always just freeing memory for others.
The really bad behaviour tends to go away reasonably quickly, but while
it happens it's _really_ unfair.
- try_to_free_pages() just goes overboard, and starts paging stuff out
without getting back to the nice balanced behaviour. This is what
Andrea noticed.
Essentially, once it starts failing the shrink_mmap() tests, it will
just page things out crazily. Normally this is avoided by just always
starting from shrink_mmap(), but if you ask try_to_free_pages() to try
to free up a ton of pages, the balancing that it does is basically
bypassed.
So basically pre-6 works _really_ well for the kind of stress-me stuff
that it was designed for: a few processes that are extremely memory
hungry. It gets close to perfect swap-out behaviour, simply because it is
optimized for getting into a paging rut.
That makes for nice benchmarks, but it also explains why (a) sometimes
it's just not very nice for interactive behaviour and (b) why it under
normal load can easily swap much too eagerly.
Anyway, the first problem is fixed by making "trashing" be a global flag
rather than a per-process flag. Being per-process is really nice when it
finds the right process, but it's really unfair under a lot of other
circumstances. I'd rather be fair than get the best possible page-out
speed.
Note that even a global flag helps: it still clusters the write-outs, and
means that processes that allocate more pages tend to be more likely to be
hit by it, so it still does a large part of what the per-process flag did
- without the unfairness (but admittedly being unfair sometimes gets you
better performance - you just have to be _very_ careful whom you target
with the unfairness, and that's the hard part).
The second problem actually goes away by simply just not asking
try_to_free_pages() to free too many pages - and having the global
trashing flag makes it unnecessary to do so anyway because the flag will
essentially cluster the page-outs even without asking for them to be all
done in one large chunk (and now it's not just one process that gets hit
any more).
There's a "pre-7.gz" on ftp.kernel.org in testing, anybody interested?
It's not the real thing, as I haven't done the write semaphore deadlock
thing yet, but that one will not affect normal users anyway so for
performance testing this should be equivalent.
Linus Torvalds [Fri, 23 Nov 2007 20:17:58 +0000 (15:17 -0500)]
Linux 2.2.0pre5
Oh, well.. Based on what the arca-[678] patches did, there's now a pre-5
out there. Not very similar, but it should incorporate the basic idea:
namely much more aggressively asynchronous swap-outs from a process
context.
Comment away,
Linus
Linus Torvalds [Fri, 23 Nov 2007 20:17:56 +0000 (15:17 -0500)]
Linux 2.2.0pre4
Ok, you know the drill by now. This fixes:
- yes, people told me about the new and improved ksymoops. Much better,
no need for C++, and this one actually seems to compile and work
reliably.
- ntfs fixes
- the vfat thing _really_ works now
- NFS fix for deleting files while writebacks active.
- ppa/imm driver updated
- minor mm balancing patches
- Alan took the gauntlet and cleaned up some CONFIG_PROC_FS stuff.
More on Monday,
Linus Torvalds [Fri, 23 Nov 2007 20:17:48 +0000 (15:17 -0500)]
Linux 2.2.0pre2 (December 31 1998)
Well, some people obviously had problems with the first 2.2.0pre, so
there's a second one there. Most of it is almost purely syntactic sugar:
configuration issues and jiffies wraparound, but there were a few problems
wrt some IDE disk geometry stuff in particular that made 2.2.0pre1 not
boot for some people.
Other real changes:
- nfsd updated, and we have an official maintainer for knfsd (and I was
happy by how many people were ready to stand up for it. Good show,
guys!)
- network driver updates (tulip/eepro)
- some TCP fixes for occasional but nasty performance problems.
- fix for an attack where you could cause a complete and utter lockup of
the kernel as a normal user. Thanks to Michael Chastain for keeping the
faith on this one and reminding me to fix it.
If you haven't had problems with pre1, there should be no major cause to
look at pre2. But if you haven't even looked at pre1 yet, please consider
looking at the pre-2.2.0 kernels before it's too late. I'm going to be
extremely rude to people who knew better but didn't test out the pre-
kernels and then send me bug-reports on the released 2.2.0.
Linus Torvalds [Fri, 23 Nov 2007 20:17:46 +0000 (15:17 -0500)]
Linux 2.2.0 (pre1) (28 Dec 1998)
we're in the pre-2.2.0 series now, I'm all synched up with Alan, and I
don't have anything pending any more. Over the internet nobody can hear
you all scream in pain over all your favourite features that didn't make
it.
Linus "another year older and wise as hell by now" Torvalds
Linus Torvalds [Fri, 23 Nov 2007 20:17:38 +0000 (15:17 -0500)]
pre-2.1.132-4..
There's a new pre-patch on ftp.kernel.org. I've been waiting for a few
other things, but the pre-patches are getting to be so big that it's
getting unwieldly, so I'll probably make a real 2.1.132 real soon now. In
the meantime, there's a pre-patch that people can verify for sanity (this
one should have coda-fs back to working order, for example - patch
craziness corrupted a simple update in pre-3).
Linus Torvalds [Fri, 23 Nov 2007 20:17:35 +0000 (15:17 -0500)]
pre-2.1.132-2..
..is out there, and has everybodys favourite fix, ie the version number
has been bumped this time. In addition, compared to pre-1, it has:
- autofs fix (uninitialized inode number could lead to "interesting"
problems)
- some more NFS fixes (file truncation with pending write-backs this time)
- disable_irq()/enable_irq() now nests properly, as Alan convinced me
(quite rightly) that they have to nest in order to work sanely with
shared interrupt and multiple CPU's and various other schenarios.
- more merges from Alan, we're getting closer to being synched up.
Most of the bulk of the thing is the irda stuff, that most people can
ignore.
Linus Torvalds [Fri, 23 Nov 2007 20:17:33 +0000 (15:17 -0500)]
Linux 2.1.132pre1
There's a new pre-patch out there. I'm back from Finland, and have caught
up with just about half the email that I got during the stay. However,
even the part I caught up with I may have partly missed something in,
because (for obvious reasons) I didn't read them as carefully (*) as I
usually do.
This should fix at least part of the NFS problems people have reported:
there was code to completely incorrectly invalidate quite valid write
requests under some circumstances. The pre-patch also contains the first
batch of patches merged in from Alan, and the "rmdir" problems should be
fixed (mostly thanks to Al Viro).
This pre-patch also gets rid of some imho completely unnecessary
complexity in some of the VM memory freeing routines. There have been
patches floating around that added more heuristics on when to do
something, and this tries to get the same result by just removing old
heuristics that didn't make much sense.
Linus
(*) Even my usual "careful" is not very careful by other peoples
standards. So when _I_ say that I wasn't very careful, you should just
assume that I was reading my email about as carefully as a hyper-active
hedgehog on some serious uppers. Can you say "ignored email" three times
quickly while chewing on an apple?
Linus Torvalds [Fri, 23 Nov 2007 20:17:31 +0000 (15:17 -0500)]
Linux 2.1.131
2.1.131 is out there now - and will be the last kernel release for a
while. I'm going to Finland for a week and a half, and will be back mid
December. During that time I hope people will beat on this. I'll be able
to read email when I'm gone, but as I haven't been back in over a year,
I'm not very likely to.
Alan, I have got any replies (positive or negative) about the VFS fixes in
pre-2.1.131-3 (which are obviously in the real 131 too), so I hope that
means that I successfully fixed all filesystems. The chance of that being
true is remote, but hey, I can hope. If not, I assume you'll be doing
your ac patches anyway (any bugs wrt rmdir() should be fairly obvious once
seen), and people might as well consider those official..
Linus Torvalds [Fri, 23 Nov 2007 20:17:30 +0000 (15:17 -0500)]
pre-patch-2.1.131-3
Ok,
I've made a new pre-patch-2.1.131-3.
The basic problem (that Alexander Viro correctly diagnosed) is that the
inode locking was horribly and subtly wrong for the case of a "rmdir()"
call. What rmdir() did was essentially something like
- VFS: lock the directory that contains the directory to remove
(this is normal and required to make sure that the name updates are
completely atomic - so removing or adding anything requires you to hold
the lock on the directory that contains the removee/addee)
- low-level filesystem: lock the directory you're going to remove, in
order to atomically check that it's empty.
So far so good, the above makes tons of sense. HOWEVER, the problem is
fairly obvious if anybody before Alexander had actually bothered to think
about it: when we hold two locks, we had better make sure that we get the
locks in the right order, or we may end up deadlocked with two (or more)
processes getting the locks in the wrong order and waiting on each other.
Now, if it was only rmdir(), things would be fine, because the directory
hierarchy itself imposes a lock order for rmdir(). But we have another
case that needs to lock two directories: "rename()". And that one doesn't
have the same kind of obvious order, and uses a different way to order the
two locks it gets. BOOM.
As far as I can tell, this is a problem in 2.0.x too, but while it's a
potential really nasty DoS-opening, it does have the saving grace that the
window to trigger it is really really small. I don't know if you can
actually make an exploit for it that has any real chance of hitting it,
but it's at least conceptually possible.
Now, the only sane fix was to actually make the VFS layer do all the
locking for rmdir(), and thus let the VFS layer make sure the order is
correct, so that low-level filesystems don't need to worry their pretty
heads. I tried to do that in the previous pre-patch, and it worked well
for ext2, but not all that much else. The problem was that too many
filesystems "knew" what the rmdir() downcall used to do. Oh, well.
Anyway, I've fixed the low-level filesystems as far as I can tell, and the
end result is a much cleaner interface (and one less bug). But it's an
interface change at a fairly late date, and while the fixes to smbfs etc
looked for the most part obvious, I haven't been able to test them, so
I've done most of them "blind".
Sadly, this bug couldn't just be glossed over, because a normal user could
(by knowing the exact right incantation) force tons of unkillable
processes that held critical filesystem resources (any lookup on a
directory that was locked would in turn also lock up). So I'd ask people
who have done filesystems for Linux to look over my changes, and if the
filesystems are not part of the standard distribution please look over
your own locally maintained fs code. I think we can ignore 2.0.x by virtue
of it probably being virtually impossible to trigger. I'll leave the
decision up to Alan.
Most specially, I'd like to have people who use/maintain vfat and umsdos
filesystems to test out that I actually made those filesystems happy with
my changes. The other filesystems were more straightforward.
Oh, and thanks to Alexander. Not that I really needed another bug to fix,
but it feels good to plug holes.
Linus
The change is basically:
- the VFS layer locks the directory to be removed for you (as opposed to
just the directory that contains the directory to be removed as it used
to). A lot of filesystems didn't actually do this, and it is required,
because otherwise the test for an empty directory may be subverted by a
clever hacker.
- the VFS layer will have done a dcache "prune" operation on the
directory, and if there were no other uses for that dcache entry, it
will have done a "d_drop()" on it too.
- the above essentially means that any filesystem can do a
if (!list_empty(&dentry->d_hash))
return -EBUSY;
to test whether there are other users of this directory. No need to do
any extra pruning etc - if it's been dropped there won't be any new
users of the dentry afterwards, so there are no races. So after doing
the above test you know that you'll have exclusive access to the dentry
forever.
Most notably, the low-level filesystem should _not_ look at the
dentry->d_count member to see how many users there are. The VFS layer
currently artificially raises the dentry count to make sure
"d_delete()" doesn't get rid of the inode early.
- however: traditional local UNIX-type filesystems tend to want to allow
removing of the directory even if it is in use by something else. This
requires that the inode be accessible even after the rmdir() - even
though it doesn't necessarily need to actually _do_ anything.
For a normal UNIX-like filesystem this tends to be trivial and quite
automatic behaviour, but you need to think about whether your
filesystem is of the kind where the inode stays around even after the
delete until we locally do the final "iput()". For example, on
networked filesystems this is generally not true, simply because the
server will have de-allocated the inode even if we still have a
reference to it locally.
Linus Torvalds [Fri, 23 Nov 2007 20:17:29 +0000 (15:17 -0500)]
Linux 2.1.131pre2
There's a pre-131-2 patch there on ftp.kernel.org in the testing
directory. This should have the NFS locking issues worked out (please
test), and also has a rather subtle but potentially very nasty deadlock
due to incorrect semaphore ordering with rmdir() hopefully fixed for good.
Alan, the regparm patches are also there.
Linus
nfs: write back everything whenever some lock is changed (not just for
unlock), and always invalidates the caches.
Linus Torvalds [Fri, 23 Nov 2007 20:17:27 +0000 (15:17 -0500)]
The Basted Turkey Release (aka 2.1.130)
Following hot on the heels of the greased weasel, the basted turkey rears
its handsome head.
The basted turkey release fixes some problems that our dear weasel had,
namely:
- NFS reference counting was wrong. It had been wrong for a long time,
but apparently the more aggressively asynchronous code was more easily
able to show the resultant random memory corruption. That should be
gone.
- The UP flu fixed officially (this has been in most of the 2.1.129
patches)
- kernel_thread() used to be able to cause bad things in init-routines at
bootup. Fixed.
- itimers could lead to bad things in SMP under heavy itimer load.
- various mm tweaks to make it behave better under load. Things for dirty
buffers still under consideration.
- IP masqerading check fixes.
- acenic gigabit ethernet driver
- some drunken revelers fixed some MCA issues.
- alpha PCI setup updates and video drivers
- hfs and minix filesystem fixes.
On the whole, an excellent thing to do this evening, and goes together
remarkably well with some good red wine. Amaze your friends and relatives
by completely ignoring them, sitting in a corner with your own basted
turkey, and getting wasted on red wine. Much more fun than your average
thanksgiving dinner,
Linus Torvalds [Fri, 23 Nov 2007 20:17:26 +0000 (15:17 -0500)]
pre-2.1.130-3
There's a new pre-patch for people who want to test these things out: I'll
probably make a real 2.1.130 soon just to make sure all the silly problems
in 2.1.129 are left behind (ie the UP flu in particular that people are
still discussing even though there's a known cure).
The pre-patch fixes a rather serious problem with wall-clock itimer
functions, that admittedly was very very hard to trigger in real life (the
only reason we found it was due to the diligent help from John Taves that
saw sporadic problems under some very specific circumstances - thanks
John).
It also fixes a very silly NFS path revalidation issue: when we
revalidated a cached NFS path component, we didn't update the revalidation
time, so we ended up doing a lookup over the wire every time after the
first time - essentially making the dcache useless for path component
caching of NFS. If you use NFS heavily, you _will_ notice this change (it
also fixes some rather ugly uses of dentries and inodes in the NFS code
where we didn't update the counter so the inode wasn't guaranteed to even
be there any more!).
Also, thanks to Richard Gooch &co, who found the rather nasty race
condition when a kernel thread was started from an init-region. The
trivial fix was to not have the kernel thread function be inlined, but
while fixing it was trivial, it wasn't trivial to notice in the first
place. Good debugging.
And the UP flu is obviously fixed here (as it was in earlier pre-patches
and in various other patches floating around).
Linus Torvalds [Fri, 23 Nov 2007 20:17:23 +0000 (15:17 -0500)]
Linux 2.1.129
To a large degree is more merges for PPC and Sparc (and
somehow I must have missed ARM _again_, so I'll have to find that).
But there's a few other things in there:
- ncr53c8xx tag fix
- more sound fixes.
- NFS fixed
- some subtle TCP issues fixed
- and lots of mm smoothness tweaks (most of those have been floating
around for some time - like getting rid of the last vestiges of page
ages which just complicated and hurt the code)
Have fun with it, and tell me if it breaks. But it won't. I'm finally
getting the old "greased weasel" feeling back. In short, this is the much
awaited perfect and bug-free release, and the only reason I don't call it
2.2 is that I'm chicken.
Linus Torvalds [Fri, 23 Nov 2007 20:17:18 +0000 (15:17 -0500)]
Linux 2.1.129-pre3
I don't know how I made an old pre-patch available: I've made a pre-3 that
has the proper proc thing so that it compiles (it is otherwise identical
to pre-2, so if you got pre-2 to compile by patching by hand, then there's
no reason to get pre-3).