diff -Naurp linux-2.4.20-wolk4.11-fullkernel/2.4-WOLK-CHANGELOG linux-2.4.20-wolk4.12-fullkernel/2.4-WOLK-CHANGELOG --- linux-2.4.20-wolk4.11-fullkernel/2.4-WOLK-CHANGELOG 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.4.20-wolk4.12-fullkernel/2.4-WOLK-CHANGELOG 2004-04-02 00:10:09.000000000 +0200 @@ -0,0 +1,1123 @@ +Changelog from v4.11s -> v4.12s +------------------------------- +o added: support for ELF executables which use an a.out format + interpreter (dynamic linker) moved into a separate + configuration option and disabled by default +o fixed: when CONFIG_IP_NMAP_FREAK was not set, the kernel + did not reply to any icmp echo requests :( +o fixed: RMAP: only initialise under_rsslimit to 0 if there are ptes + to check +o fixed: RMAP: bug in page_referenced() where unmapped pages were + always seen as over the rss limit, in effect disabling + page aging and the referenced bit counting for page and + buffer cache pages. +o fixed: vmalloc error handling (4 fixes ;) +o fixed: hopefully this time for real: XFS oopsen +o updated: new Medley software RAID driver from 2.4.26-bk +o updated: vmap error handling +o updated: grsecurity v1.9.14 from CVS (important PaX fixes) + + + +Changelog from v4.10s -> v4.11s +------------------------------- +o updated: CIFS v1.0.2b +o updated: HostAP driver v0.1.3 +o fixed: CAN-2004-0003: issues in r128 DRI (Direct Render Infrastructure) +o fixed: CAN-2004-0010: a flaw in ncp_lookup() in ncpfs. +o fixed: CAN-2004-0075: the Vicam USB driver in Linux before 2.4.25 does + not use the copy_from_user function when copying data from + userspace to kernel space, which crosses security boundaries + and allows local users to cause a denial of service. +o fixed: user/kernel copying in DRI GAMMA driver + + + +Changelog from v4.9s -> v4.10s +------------------------------ +o added: Promise PDC ULTRA SATA support v1.00.0.10 +o added: Emulex LP8000/9000/9002L/9002DC/9402DC/9802 FC support v1.23a +o added: Quick Sort support (qsort) +o added: ignore unrecognized mount options +o added: ATI IGP chipset support +o added: S3 Savage support +o added: VIA CLE266 support +o added: full XAPIC support (vanilla has half of this :p) +o added: rICMP support +o added: libata (S-ATA support via SCSI layer) + same as 2.6 kernel version (2004-02-18) +o fixed: broken 2.4.x rt_sigprocmask error handling +o fixed: IDE timeout race fix +o fixed: CAN-2004-0077: return proper do_munmap() error code +o fixed: CAN-2003-0984: /dev/rtc can leak parts of kernel memory to + unpriviledged users +o fixed: CAN-2003-0985: malicious users of mremap() syscall can gain + priviledges +o fixed: check bounds in do_brk (recently used to exploit Debian Servers) +o fixed: full modular IDE build problems +o fixed: Support for processor throttling when VMware runs +o fixed: overflow on unaligned checksum buffers +o fixed: handle unreachable IO-APICs in ACPI without panic +o fixed: problem where every user who can open /dev/cdrom can crash kernel +o fixed: boot code overflow with more CPUs than CONFIG_NR_CPUS +o fixed: missing brackets in agpgart +o fixed: SCSI: never ever merge requests if we exceed the maximum number + of scatter-gather segments that fit into a page. +o fixed: another potential procfs memory leak +o fixed: PAX' SEGMEXEC did not work with HIGHMEM vs. SMP +o fixed: years outstanding bug with P3/P4 Hyperthreading :-( +o fixed: problem with set_ioapic_affinity() +o fixed: SMP kernel dummy APIC emulation in smpboot for x86: + the process timer must be driven from the 8253 in this case. +o fixed: mpparse for default MP systems +o fixed: missing memory barrier in get_request_wait_wakeup() +o fixed: Data region of memory output was negative +o fixed: more irq/bh races (smp_mb()'s) +o fixed: nvidia-kernel-1.0.4496 didn't compile +o fixed: race in the O(1) scheduler +o fixed: memory leak in kernel module loader +o fixed: possible SMP deadlock on reboot +o fixed: log_buf_len boot parameter +o fixed: too few characters for boot parameters +o fixed: ipc_init() SMP crash +o fixed: route SMIs through IOAPIC +o fixed: RCU helpers for PREEMPT +o fixed: reduce bkl contention caused by blkdev_put +o fixed: missing symbol 'console_printk' for IDE modularization +o fixed: disable the anti-DoS fix tested on some embedded + platforms, to avoid regressions due softirq delays +o fixed: mmap on /dev/mem wrt to uncached accesses +o fixed: wrong APIC handling for SMP/HT +o fixed: ieee1394 locking bug in nodemgr +o fixed: memory leak in user space communication with USB devices +o fixed: memory leaks in LVM v1.0.7 +o fixed: IPVS: ip_vs_tunnel_xmit to return NF_DROP when no memory available +o fixed: IPVS: add strict boundary check in parsing FTP commands +o updated: LSI MegaRAID (driver series v1.18k) +o updated: LSI MegaRAID (driver series v2.10.1) + IRQ disabled bugfix +o updated: Intel e100 driver v2.3.38 +o updated: Intel e1000 driver v5.2.20 +o updated: DRBD v0.6.11 +o updated: AIC7xxx v6.3.4 / AIC79xx v2.0.5 (v2004-02-09) +o updated: PPP Microsoft encryption/compression (MPPE/MPPC) v0.98 +o updated: SysKonnect SK-98xx driver v6.21 +o updated: Device Mapper (LVM2) v4.0.4-ioctl (2003-08-30) +o updated: EVMS v2.1.1 +o updated: LVM v1.0.8 +o updated: replaced Super FreeS/WAN with OpenS/WAN v1.0.1 +o updated: CryptoAPI from 2.4.22/2.4.23/2.4.24/2.4.25 +o updated: CryptoLOOP (jari edition) +o updated: rmap VM v15l +o updated: grsecurity v1.9.14 Final +o updated: tons of ACPI fixes for UP/SMP/HT and better Notebook support. +o updated: convert /proc/interrupts to use seq_file +o updated: shfs v0.32-pre2 +o updated: Intel VTune Support +o updated: RFCOMM protocol support v12 +o updated: FireWire IEEE1394 rev1050 +o updated: USB: tons of fixes and updates +o updated: Broadcom BCM5700 driver v7.0.0 +o updated: Broadcom Tigon3 v2.6 +o updated: Compressed Loop (cloop) v1.02 +o updated: DAC960 RAID Driver v2.4.20 of 1 May 2003 + (Vanilla still has the driver from kernel 2.4.11!!) +o updated: Intel/ICP RAID Controller support v2.06a +o updated: AACRAID v1.1-3 +o updated: Qlogic QLA 2x00 v6 FC SCSI support v6.06.00 +o updated: 3ware Driver v1.02.00.037 +o updated: CPU Frequency scaling v2.4.22 2003-09-01 +o updated: XFS v1.3.1 Final (SCO: go and fuck yourself!) +o removed: RMAP: OOM killer braindamage fix fix fix fix: BROKEN! +o removed: Option 'PS/2 keyboard support': broke too much stuff +o changed: CPU - Cap Processor Usage: Make it a config option + + + +Changelog from v4.8s -> v4.9s +----------------------------- +o added: Dazuko v1.2.1 +o added: missing iSCSI Configure help entries and informations +o added: sysctl to control ipfrag_secret_interval +o added: WEB-DAV Linux File System support (davfs2) v0.2.4 +o added: Application Layer 7 Packet Classifier v0.1.4 +o fixed: hfsplus unresolved symbols +o fixed: rsbac v1.2.2 compilation errors :-( +o fixed: Mhwahahhaha! A missing 'generic_unplug_device' in IDE code +o fixed: irq/bh races +o fixed: two missing Intel x86 cache defines (now Pentium-M should be ok) +o fixed: use Jenkins hash for fragment reassembly handling +o fixed: lru queue for ip_fragment evictor +o fixed: hardcoded vmalloc reserve size: now we have a boot parameter + See: Documentation/kernel-parameters.txt : vm_reserve +o fixed: RMAP: zeromap_pmd_range +o fixed: RMAP: treat database shared memory segments with the + same swapout priority as anonymous pages, this helps + database performance under some loads +o fixed: RMAP: do all page->flags updates atomically, to avoid + race conditions +o fixed: some bogus 'file->f_flags' +o fixed: more unshare_files() fixes +o fixed: speedup 'make dep' again a bit +o fixed: loop handling of sector size ioctl +o fixed: asm constraint bug in arch/i386/kernel/pci-pc.c +o updated: IBM ServeRAID v6.10.24 +o updated: Broadcom BCM4400 driver v2.0.5 +o updated: Broadcom BCM5700 driver v6.2.17 +o updated: SysKonnect SK-98xx driver v6.17 +o updated: iSCSI support (SCSI-over-Network) v3.4.0.3 +o updated: XFS v1.3.0 Final + + + +Changelog from v4.7s -> v4.8s +----------------------------- +o fixed: new i2c merge broke matroxfb, tvmixer, bttv and DXR3 +o fixed: wrong assumption in set_bh_page() +o fixed: max_addr_len() for InfiniBand support +o fixed: aic7xxx/aic79xx -Werror makefile error +o fixed: 'no_idt' usage in reboot code, noticed by better asm + typechecking in gcc-3.3.1. +o updated: zlib v1.1.4 + + + +Changelog from v4.6s -> v4.7s +----------------------------- ++ added: shfs v0.32-pre1 (Michael Gebetsroither) +o added: new CPU capabilites for recent cpu's +o added: Intel/AMD/VIA HW Random Number Generator support +o added: Deny promiscuous mode for interfaces +o added: WRR packet scheduler +o fixed: ptrace swap race +o fixed: steal_locks: we should be in full LSB compliance now +o fixed: nbd: multiple race conditions +o fixed: nbd: race conditions and various other deadlocks +o fixed: beyond_eof check in generic_direct_IO +o fixed: reiserfs: some issues with extended inode attributes +o fixed: ext3fs: ext3_read_inode() race fix +o fixed: ext3fs: missing TASK_RUNNING in jbd transaction code +o fixed: ext3fs: handle aborted journals +o fixed: v4l2: wrong poll_table usage. We have epoll too. +o fixed: RMAP: OOM killer braindamage fix fix fix fix + (yes, it's the 4th fix fix ;) and it _works_ now! +o updated: IPVS v1.0.10 +o updated: rsbac v1.2.2 +o updated: DRBD v0.6.6 +o updated: grsec: tons of PaX updates/fixes +o updated: XFS v1.3.0-pre5 +o updated: kdb v4.3 +o updated: EVMS v2.1.0 +o updated: q->full revision 2 +o updated: i2c v2.8.0 Final +o updated: lmsensors v2.8.0 Final +o updated: CIFS v0.8.7 +o removed: EVMS v1.x code +o changed: Make 'PS/2 keyboard support' an option + + + +Changelog from v4.5s -> v4.6s +----------------------------- +o fixed: BUG() while booting (missing brackets :pp) +o fixed: correct 64-bit write system call assignment +o fixed: select() with an xoffed tty +o fixed: compile error when EVFS is selected +o fixed: undefined reference to touch_nmi_watchdog +o fixed: mainline pagecache is slow and scales _bad_. Make it better :p +o fixed: SAK: printk killed processes only if grsecurity's proc restrictions + are enabled. ++ fixed: some bogus EXPORT_SYMBOL_GPL (Michael Gebetsroither) +o updated: HostAP driver v0.0.4 +o removed: 3com 3c59x v0.99Za (it works great for many people and also works + very bad for many people. Revert this until Donald Becker fixed + it up. + + + +Changelog from v4.4s -> v4.5s +----------------------------- +o added: ikconfig support (will be merged soon into 2.4-BK, finally!) +o added: kernel compilattion support for IBM's propolice gcc extension +o added: HP CISS: support for failover in multipath environments using + the md driver. For more informations, please read: + Documentation/cciss.txt: Monitor Threads +o fixed: CAN-2003-0464: A recent change in the RPC code set the reuse + flag on newly-created sockets. Olaf Kirch noticed that his + could allow normal users to bind to UDP ports used for + services such as nfsd. +o fixed: CAN-2003-0187: A vulnerability was reported in Netfilter in the + connection tracking function. On certain versions of the Linux + kernel, a remote user can cause denial of service conditions + on the target system. +o fixed: CAN-2003-0467: A vulnerability was reported in the network + address translation (NAT) implementation in Netfilter. A + remote user may be able to cause the target system to crash. ++ fixed: 3com 3c59x: static compile issue (Mike Bethune) ++ fixed: 3com 3c59x: module license missing (Michael Michael Gebetsroither) +o fixed: Error out if no I/O elevator is selected and tell the user about +o fixed: AGPGART problem with 4GB RAM +o fixed: slab cache usage (it's broken in 2.4 mainline, too much wastage) +o fixed: irq handling of IO-APIC edge IRQs on UP +o updated: 3ware Driver v1.02.00.036 +o updated: LSI MegaRAID (driver series v1.18j) +o updated: LSI MegaRAID (driver series v2.00.7) + + + +Changelog from v4.3s -> v4.4s +----------------------------- +o added: High Performance Packet Classification (nf-hipac) v0.8 rev2 +o added: boost the copy-user asm. +o added: merged IO-Stall fixes from 2.4.22-pre3/4/5/6/7 +o added: q->full, defaults to off and keeps the elvtune changes. + So to turn on the q->full low latency fixes, you need to: + "elvtune -b 1 /dev/xxxx" . Note that for lvm and md, you need + to elvtune each underlying device. Running it on an lvm/md + device doesn't do anything. +o added: low latency / normal / max throughput - I/O elevator selection. +o fixed: CAN-2003-0461: /proc/tty/driver/serial reveals the exact + character counts for serial links. This could be used by a + local attacker to infer password lengths and inter-keystroke + timings during password entry. +o fixed: CAN-2003-0462: Paul Starzetz discovered a file read race + condition existing in the execve() system call, which could + cause a local crash. +o fixed: CAN-2003-0476: The execve system call in Linux 2.4.x records + the file descriptor of the executable process in the file + table of the calling process, allowing local users to gain + read access to restricted file descriptors. +o fixed: CAN-2003-0501: The /proc filesystem in Linux allows local users + to obtain sensitive information by opening various entries in + /proc/self before executing a setuid program. This causes the + program to fail to change the ownership and permissions of + already opened entries. +o fixed: CAN-2003-0550: The STP protocol is known to have no security, + which could allow attackers to alter the bridge topology. + STP is now turned off by default. +o fixed: CAN-2003-0551: STP input processing was lax in its length + checking, which could lead to a denial of service. +o fixed: CAN-2003-0552: Jerry Kreuscher discovered that the Forwarding + table could be spoofed by sending forged packets with bogus + source addresses the same as the local host. +o fixed: reduced the number of requests during seeks (the latency times + increased slightly during seeks with pre5/pre6). +o fixed: reserved some spare request for reads. This is been measured + to avoid some waiting for reads and it's beneficial in the + common case +o fixed: copy-namespace +o fixed: RMAP: refill free list in batches, in fixup_freespace +o fixed: RMAP: only wake up kswapd when low on free+clean pages +o fixed: RMAP: in __alloc_pages_limit, first do rmqueue (to use per-cpu + freelist) and fall back to direct_reclaim when needed +o fixed: RMAP: make sure the first stage of page allocation doesn't + upset the zone balancing +o fixed: RANDOM: another SMP deadlock. I really wonder how many (read: + tons * 2^99) deadlocks we have in the Linux kernel! + I am _shouting_ out for a lock free kernel!! ;) +o updated: Oracle Cluster FileSystem (OCFS) v1.0.9-pre Jul 17 2003 +o updated: AIO: allow aio on blkdevices too +o updated: smp-timers: merged an anti deadlock fix from lcm, 2.5 probably + needs it too. In short the theory that mod_timer is the only + thing that can run in parallel was wrong, add_timer and + del_timer/del_timer_sync can too. Having already fixed + mod_timer in a backwards compatible way before merging the + smp-timers in -aa, made it easy to fix those further windows + too. +o updated: ksoftirqd: merged a fix from Philip Craig to be sure to make + the anti-DoS logic effective. He wrote and verified the code. + It makes perfect sense so it's applied. Normal usages + shouldn't notice the difference, especially with the + max-loop logic. +o updated: Intel e100 driver v2.3.18-k1 + bugfixes from .22-BK +o updated: Intel e1000 driver v5.1.11-k1 + bugfixes from .22-BK +o updated: Broadcom BCM5700 driver v6.2.11 +o updated: Broadcom Tigon3 v1.6 +o updated: SysKonnect SK-98xx driver v6.12 +o updated: HP CISS Driver v2.4.47 +o updated: Compaq SMART2 Driver v2.4.25 +o updated: raw vary-io 21, including more SCSI driver support +o updated: Super FreeS/WAN v1.99.8 Final +o updated: Qlogic QLA 2x00 v6 FC SCSI support v6.05.60 +o updated: 3com 3c59x v0.99Za (vanilla ones is over 2 years old) +o removed: LUFS: braindamaged, non-working. Get rid of that shit. +o changed: DRM v4.3 is now seperate from DRM 4.0/4.1/4.2 + + + +Changelog from v4.2s -> v4.3s +----------------------------- +o added: allows O_DIRECT writes I/O to run in parallel (not serialized + anymore by the i_sem). +o added: extended OOM killer functions via /proc + Max childs per parent oom-killed before we kill the parent + tunable via "/proc/sys/vm/oom_parent_expire" + Min numbers of seconds before we forget about parents + tunable via "/proc/sys/vm/oom_parent_max" +o added: workaround for annoying "APIC error on CPUx" error messages +o fixed: large routing table problems with new hash algo (jenkins) +o fixed: unexpected IO-APIC +o fixed: ext3fs htree sets the index too early +o fixed: dmesg cleanup: printf CPU inconsistency +o fixed: dnotify read/writev +o fixed: buffer_insert_list should use list_add_tail +o fixed: cleanup kmem_cache_reap() +o fixed: smp race condition in submit_bh (though nearly impossible to + trigger) and put some BUG_ON to verify nobody calls writepage + w/o a reference on the page (SetPageUptodate needs it too) +o fixed: grsec: pci bios problem on smp w/ kernexec +o fixed: grsec: oops on init if we're out of memory +o fixed: RMAP: sequential writeout performance tuning +o fixed: RMAP: rate limit slab cache pruning, to reduce IPI load + on SMP systems +o fixed: RMAP: don't cache-align buffer heads, in order to save space +o fixed: RMAP: shrink kiobuf slab when reclaiming buffer heads +o fixed: RMAP: if we reset the zone size due to highmem being + all IO space, we shouldn't BUG() when we see such + zones in the page allocator +o fixed: RMAP: corner case where all highmem pages are in an + IO window and not released into the free list + at bootup time +o fixed: RMAP: compile warnings +o fixed: RMAP: call oom killer only when allocations fail +o fixed: RMAP: only count the real freeing of pages for the + OOM killer +o fixed: RMAP: make bdflush writeout smoother +o fixed: RMAP: logic inversion in inode reclaim +o fixed: RMAP: only reclaim bufferheads on highmem machines, + and only when the bufferheads take more than + 10% of the spage used by pageable low memory. +o fixed: RMAP: make OOM killer less agressive +o fixed: RMAP: avoid expensive atomic pagetable operation +o fixed: RMAP: backport next_and_idx optimisation from 2.5 +o updated: AIC7xxx v6.2.36 / AIC79xx v1.3.10 (v2003-06-03) +o updated: Super FreeS/WAN v1.99.7.3 Final +o updated: CODA v6.0.1 +o updated: HTB v3.12 +o changed: converted /proc to seq operations + + + +Changelog from v4.1s -> v4.2s +----------------------------- +o re-added: Scheduler Tunables (/proc/sys/sched): I need it! +o added: SCSI monitoring support +o added: Parallel Port SCSI adapters +o added: RFCOMM protocol support v9 +o added: an hook to trigger a rescan of the scsi devices + echo "scsi scan-new-devices" >/proc/scsi/scsi ++ fixed: 3com 3c90x wrong module init/exit stuff +o fixed: RMAP: better higher-order page allocation +o fixed: RMAP: OOM tweak +o fixed: RMAP: minor smp fix backported from 2.5 +o fixed: RMAP: agressive inode reclaim when we're low on low memory + and inodes are taking up lots of low memory. +o fixed: RMAP: O(1) page launder bug fix, free buffer heads instead + of reactivating the page +o fixed: RMAP: if we can't clear page->buffers but the page wasn't + locked, move it back to the inactive_dirty list +o fixed: RMAP: OOM killer braindamage fix fix +o fixed: RMAP: potential infinite loop in inode pruning +o fixed: ext3fs deadlock using journal_create while mount +o fixed: race in search_exception_table() (Module stuff) +o fixed: erroneous fsync on last opener at close() +o fixed: long outstanding bug (15 months) that will make your mouse hang, + keyboard stuck, no possibility to work with your desktop while + high disk i/o. +o fixed: blk-atomic + varyio wasn't right in its first version, the + refile had to be a few lines below +o fixed: race between truncate and the page faults +o fixed: wrong DeviceMapper stuff which was left from dcache-fastwalk :( +o fixed: IOPERM system call I/O port access vulnerability fix +o fixed: AIC7xxx gcc v3.3.x compile errors ++ fixed: USB storage problems +o fixed: 'make xconfig' always sets CONFIG_ATM to y +o fixed: UP set_task_state and set_current_state to ensure that we don't + re-order loads around the store for setting task->state. +o fixed: sys_munmap for a mapping near the end of the physical address + space frees pages still in use +o fixed: TIOCCONS +o fixed: writing to /dev/console returns ESPIPE +o fixed: vmalloc increase for 128MB frame buffer with VESA fb driver +o fixed: non-working APIC on SiS chipsets +o fixed: eepro100 DoS attack and after that, the card is dead +o fixed: SG side effect introduced by last "off by one" fix +o updated: rmap VM v15j +o updated: eepro100 PCI IDs +o updated: NVIDIA chipset support (nForce/nForce2) +o updated: HostAP driver v0.0.3 +o updated: AIC7xxx v6.2.36 / AIC79xx v1.3.10 (v2003-06-03) +o updated: IPVS v1.0.9 +o updated: Encrypted Virtual File System (EVFS) v0.3 +o updated: Super FreeS/WAN v1.99.7.2 Final +o changed: make ksoftirqd cpuid match 2.5 +o changed: make migration id match 2.5 +o changed: sync wakeup on UP too like SMP has +o removed: gcc 3.3* inlining bug fix. gcc 3.3 does this correct now + + + +Changelog from v4.0s -> v4.1s +----------------------------- +o fixed: hashing exploits in ipv4 routing, IP conntrack, and TCP synq +o fixed: IOPERM system call I/O port access vulnerability ++ fixed: cloop unresolved symbols vs. zlib +o fixed: NFS client stuck in D state +o fixed: mm corrupting SMP race between remove_inode_page and prune_icache +o fixed: Must wakeup with end_buffer_io_kiobuf as last thing to be sure + the wakeup will happen on a still allocated kiobuf +o fixed: Avoid spurious duplicate acks for very minor window updates, + that generates the double outgoing traffic with streaming + services that tends to fill the whole receive window to buffer +o fixed: fd leak +o fixed: vma merging issue with device driver supplied mappings +o fixed: tcp_tw_death_row corruption +o fixed: OOM killer braindamage (RMAP) +o fixed: VesaFB and highmem where screen stays black +o updated: AIO-18 +o updated: Super FreeS/WAN v1.99.7 Final (including Dead Pear Detection) +o removed: Network checksumming speed runtime detection + does not give any real advantage, causes bugs on recent Athlons + + + +Changelog from v4.0s-rc8 -> v4.0s-final +--------------------------------------- +o updated: rmap VM v15i +o updated: ACPI v2003-05-12 + + + +Changelog from v4.0s-rc7 -> v4.0s-rc8 +------------------------------------- +o added: ./userspace-programs: CAP to modify CPU usage per process +o added: HFS+ Filesystem driver v0.2 +o added: Encrypted Virtual File System (EVFS) v0.2 +o added: HP (and other) laptop support ++ added: HostAP driver v0.0.2 ++ added: make target 'oldconfig_nonint' + This is the opposite of "make oldconfig". oldconfig asks you + for new options, "oldconfig_nonint" won't ask you any question + about new options. It will default to "N". +o added: EVMS-2 branch v2.0.1 +o fixed: APIC handling: NOTE: You _have to_ specify "apic" boot parameter + in order to use APIC. If not specified, you are NOT using APIC + at all. So specify "apic" to use it!! +o fixed: devfs deadlock on concurrent lookups on non-existent entry +o fixed: set argv[0] of init process to filename +o fixed: aic7xxx PCI posting +o fixed: device busy with reiserfs ontop of software raid at halt/reboot +o fixed: another potentional SMP deadlock +o fixed: VM SMP race +o fixed: highmem deadlock +o fixed: memory leak in fs layer +o fixed: another procfs memory leak +o fixed: Qlogic ISP SCSI Driver leaks ++ fixed: USB safe_serial.c compile error ++ fixed: typo "AND MMX" in network checksumming code ++ fixed: conservative zone bitmaps to prevent potential memory corruption ++ fixed: kdb compile error +o fixed: long outstanding block-atomic corruption bug +o fixed: prevent a deadlock while sysrq-showTasks ++ fixed: grsecurity: rand_pids:1 = /proc/loadavg last entry not updated ++ fixed: tty_write_message needs \r\n -- makes quota messages look nicer ++ fixed: scsi timeout longer; 30 seconds is too short for big raid arrays + with lots of large concurrent requests in flight ++ fixed: allow more unnamed mounts by borrowing old, unused major devices + This is needed if you want more than 255 NFS mounts; some + people use the "one mount per user" automount setup and they + need this if they have more than 255 users. +o updated: Compressed Loop (cloop) v0.68 +o updated: Device Mapper (LVM2) v2.4.20 code +o updated: ECC memory monitoring v20030225 +o updated: IBM ServeRAID v5.11.05 (old driver series) +o updated: VIA Rhine NIC driver v1.1.17 +o updated: SysKonnect SK-98xx and SK-95xx Gigabit Ethernet support v6.0.3 +o updated: Broadcom NetXtreme BCM5700 Gigabit Ethernet support v6.2.2 +o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-05-02 +o updated: HP CISS Driver v2.4.44 +o updated: Compaq SMART2 Driver v2.4.25 +o updated: XFS v1.2-cvs as of 2003-05-01 +o updated: kdb v4.2 +o updated: NTFS Driver v2.1.4a +o updated: grsecurity v1.99h Final +o updated: rmap VM v15h +o updated: CIFS v0.7.6 +o updated: Qlogic QLA 2x00 v6 FC SCSI support v6.04.00 +o updated: XFree 4.3.0 Final DRM code + Test succeed 100% on ATI Rage 128 pro and Intel i810/i815. + Fixes also memory leaks and screen corruption on both! +o changed: make "kernel watchdog" a config option + help entry +o changed: make RMAP's "try to reclaim buffers" a config option + help entry + + + +Changelog from v4.0s-rc5 -> v4.0s-rc7 +------------------------------------- +o added: introduce "nousb" boot option (will disable all USB devices) +o added: Gericom/Advent laptop battery support +o added: VIA KL133/KM133 Northbridge PCI workaround +o added: Special AMD Athlon/Duron on VIA KT133(A) idle loop (LVCOOL) +o fixed: AFS compile error +o fixed: Unresolved symbol 'video_proc_entry' in mod_quickcam.o +o fixed: hopefully scheduler lockups on some boxen (dooh, dunno why) +o fixed: grsec: Segmentation based non-executable pages build error +o fixed: grsec: Paging based non-executable pages build error +o fixed: freeswan: running OE w/NAT, where clients behind OE/NAT GW + would only be able to reach OE enabled hosts, meaning 99% + of connections failed. +o fixed: missing "Intel 830M/845G/852GM/855GM/865G" fb config.in entry +o fixed: very small rsbac merge error +o fixed: Clark-Shenker-Zhang scheduler does not destroy filter list +o fixed: Simple 3-band priority scheduler does not destroy filter list +o fixed: Re-enabled some disabled Network Cards *dooh* +o fixed: zlib_inflate* unresolved symbols +o fixed: Adaptec Starfire/DuraLAN module unresolved symbols +o fixed: mem handling of high areas +o fixed: vserver kernel oops/hang if you do an "ls" in /proc/ +o fixed: qdisc oops +o fixed: LSI MegaRAID driver series 1.xx memory leak +o fixed: AMD8131 IOAPIC mode +o fixed: wrong routing account information in /proc/net/rt_acct ++ fixed: some gcc v3.3.x compile errors +o fixed: NETFILTER: ip_queue memory leaks +o fixed: NETFILTER: Makefile and build fixes +o updated: USB Alcatel Speedtouch support v1.6 +o updated: DRBD v0.6.3 +o updated: ACPI v2003-04-24 +o updated: Bonding v2.4.20-20030415 +o updated: Super FreeS/WAN v1.99.6.2 Final +o updated: Systrace v1.2 +o updated: NTFS Driver 2.4.20 v2.1.3a +o updated: IPMI Driver v21 +o updated: Netconsole with simultaneous syslog packet option +o updated: ACPI Relaxed AML Checking +o updated: grsecurity v1.99g Final + CVS-fixes ++ updated: support for VIA 8233/8235 audio subsystem +o updated: IP Virtual Servers v1.0.8 +o updated: rmap VM v15g + BK-fixes ++ updated: vservers (ctx) v17 +o updated: Preempt v2.4.20-3 updates to fix SMP and memleak errors +o updated: Intel e100 Network Driver v2.2.21-k1 +o updated: Intel e1000 Network Driver v5.0.43-k1 +o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-04-24 +o updated: XFS v1.2-cvs as of 2003-04-23 +o updated: LSI MegaRAID (driver series v1.18h) +o updated: LSI MegaRAID (driver series v2.00.3) +o updated: Broadcom Tigon3 v1.5 +o updated: Orinocco v0.13d +o updated: IBM ServeRAID v6.00.26 + (ignore: "BIOS: xyz, Firmware: abc, Device Driver: 123 + These levels should match to avoid possible compatibility + problems." ... It will work just fine!) +o updated: BTTV v0.7.106 +o updated: HTB3 configure help entry +o updated: 3ware ATA Raid Controller configure help entry +o changed: introduced CONFIG_SHM_LARGEPAGE config option which is mutual + exclusive with CONFIG_GRKERNSEC_PAX_SEGMEXEC b/c Segment exec + limit's userspace memory to 1.5GB and largepages do not make + any sense with it. + +There were some reports that VMware Workstation v4.0 will crash the kernel +with an OOPS. This is not the kernels fault b/c we also use /dev/epoll like +kernel >= 2.5.63 does, so VMware needed some modifications. There is an +uuencoded file named vmmon.tar.uue in ./userspace-patches. UUdecode this file +and replace the vmmon.tar file with the one you can find in your +lib/modules/source directory where you've installed vmware. For example: +/opt/vmware/lib/modules/source. After replacing this file, call +vmware-config.pl in your binary directory where vmware binaries are located. +Most important thing is to rebuild the vmware modules. Say 'yes' if the +configuration asks for replacing the modules in your kernel module directory +in /lib/modules/2.4.20-wolk4.0s/misc + + + +Changelog from v4.0s-rc5 -> v4.0s-rc6 +------------------------------------- + there was no -rc6 due to naming problems. -rc6 was + -pre-final but that naming decisions were bad :( Sorry! + + + +Changelog from v4.0s-rc4 -> v4.0s-rc5 +------------------------------------- ++ added: rsbac v1.2.1 ++ added: Compressed Loop (cloop) v0.67 +o fixed: ELEVATOR_* not defined errors +o fixed: TIMESLICE_GRANULARITY not defined +o fixed: another famous DRM memory leak ;p +o fixed: unresolved symbol: acpi_get_firmware_table +o fixed: IMQ: undefined reference to `local symbols in discarded + section .text.exit +o fixed: rmap VM: lock ordering +o fixed: rmap VM: missing barrier(); +o fixed: null pointer dereference oops in ptrace fix *doh* +o updated: Memory Pools code for 2.4.20 +o updated: 3ware Driver v1.02.00.032 +o updated: HTB v3.10 +o updated: Super FreeS/WAN v1.99.6.1 Final +o updated: JFS v1.1.2 +o updated: epoll 2.4.20 v0.63 +o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-03-28 +o updated: IPMI Driver v19 +o updated: grsecurity v1.99f Final +o updated: Bonding v2.4.20-20030320 +o updated: XFS v1.2-cvs as of 2003-04-07 +o updated: kdb v4.1 + + + +Changelog from v4.0s-rc3 -> v4.0s-rc4 +------------------------------------- +o added: "reallyquiet" boot option to shut up all console log level output +o added: This is important! + Use a sched_yield that scales well by default, this should + help with JVM or applications with huge lock contention in + the current libpthread, but it will hurt interactivity + of those apps if there's some background load. For OpenOffice + and/or KDE set the sysctl back to 0, you don't mind if + sched_yield doesn't allow the colliding-workloads to scale + well. The scale-behaviour is also the preferred one for all + sched_yield usages in the kernel. Over time nothing should call + sched_yield() anymore, this is an hack for now. +o fixed: "local users can obtain full privileges" exploit (CAN-2003-0127) +o fixed: some rmap VM merge errors in v4.0s-pre releases +o fixed: annoying bug where opening a new xterm/aterm/$whatever term will + pause a video playing for a second +o fixed: annoying bug where calling "mailq from sendmail" will also pause + a video playing for a second +o fixed: Error out for the case of a gcc-2.96 compiler with + CONFIG_FRAME_POINTER set. It generates seriously incorrect code. +o fixed: missing cli() in isdn_net.c +o fixed: procfs memory leak +o fixed: Intel e100 network driver memory leak +o fixed: Aironet 4500 Pcmcia driver memory leak +o fixed: drivers/usb/hub.c memory leak +o fixed: emu10k1 memory leak +o fixed: Internet PhoneJACK driver memory leak +o fixed: Windows Logical Disk Manager partition handler memory leak +o fixed: Specialix SX series cards driver memory leak +o fixed: ircomm_core memory leak +o fixed: i2o_core.c memory leak +o fixed: dpt_i2o.c fix for possibly memory corruption on reset timeout +o fixed: Essential RoadRunner HIPPI board driver memory leak +o fixed: drivers/scsi/cpqfcTSinit.c memory leak +o fixed: 802.1q vlan proc memory leak +o fixed: IBM Hot Plug Controller Driver multiple memory leaks +o fixed: UFS memory leak +o fixed: rd_load_image() memory leak +o fixed: bh_kmap_irq() breaks IDE with Preempt +o fixed: another potential deadlock in ll_rw_block +o fixed: gcc >= v3.3.1 inlining bugs +o fixed: Toshiba keyboard sometimes send a key twice +o fixed: reiserfs: Make balloc[] tails[] and hash[] in super.c static +o fixed: reiserfs: gcc v3.3 compile fix +o fixed: JFS: collision with blk-atomic +o fixed: Ext2/3: noatime ignored for newly created inodes +o fixed: anti-deadlock for the o1 scheduler that can otherwise send + a cross IPI with irq disabled. +o updated: ACPI v2003-03-21 ++ updated: Systrace v1.1 +o updated: rmap VM v15e + - make reclaiming unused inodes more efficient + - fix DRM memory leak + - fix potential infinite loop in kswapd + - clean up elevator.h (no IO scheduler in -rmap...) + - page aging interval tuned on a per zone basis, better + wakeup mechanism for sudden memory pressure +o updated: CPU Frequency scaling v2.4.20-9 +o updated: XFS v1.2-cvs as of 2003-03-19 +o updated: kdb v4.0 +o updated: Super FreeS/WAN v1.99.6 Final +o updated: grsecurity v1.99e Final +o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-03-18 +o updated: ext3 htree code for 2.4.21-pre5 2nd update +o updated: Orlov ext2/ext3 block allocator code for 2.4.21-pre5 2nd update +o updated: from latest -AA: aio-18 +o updated: from latest -AA: kgdb-7 +o updated: Bonding v2.4.20-20030207 +o removed: ALSA v0.9.0-rc4: because no one makes 0.9.1 Final patch, so ... +o removed: LowLatency: because after some extensive benchmarking I saw that + it is slower than the lowlatency fixes in -AA. LowLatency has + also a deadlock possibility for SMP machines, the fixes not! +o removed: inode-highmem-2: because rmap has better/faster code now +o removed: iput_free(): because rmap has better/faster code now +o replaced: LowLatency in favor of lowlatency fixes from latest -AA + + + +Changelog from v4.0s-rc2 -> v4.0s-rc3 +------------------------------------- ++ fixed: Intel i845 DMA timeouts +o fixed: another ISO9660 memleak +o fixed: ioremap off by one bug +o fixed: SMP deadlock in eepro100 network driver +o fixed: awfull throughput loss when uploading files via scp|nfs|ftp +o fixed: some silly EXPORT_SYMBOL_GPL +o updated: XFS v1.2-cvs as of 2003-03-09 +o updated: Super FreeS/WAN v1.99.6-rc2 +o updated: ext3 htree code for 2.4.21-pre5 +o updated: Orlov ext2/ext3 block allocator code for 2.4.21-pre5 + + + +Changelog from v4.0s-rc1 -> v4.0s-rc2 +------------------------------------- +o re-added: silly mcp: removed an important SMP unbreakage patch ++ fixed: "CONFIG_X86_L1_CACHE_SHIFT redefined" errors +o fixed: RAID5 disasters +o fixed: handle SCSI recovered errors +o fixed: handle too large vmallocs gracefully +o fixed: xdr nfs highmem deadlock + symbol export fix +o fixed: get_vm_area +o fixed: UP local APIC on SMP Athlon +o fixed: initialisation of a stack of modules +o fixed: target_cpus() for APIC/UP/SMP problems +o fixed: rmap: Potential infinite loop around rebalance_dirty_zone() +o fixed: XFS+ACL + GRSEC+ACL not working correct +o fixed: reiserfs: possible transaction overflow when deleting highly + fragmented large files. +o updated: LVM v1.0.7 +o updated: Super FreeS/WAN v1.99.6-rc1 +o updated: Orinoco v0.13b +o updated: grsecurity v1.99d-CVS as of 2003-03-03 +o updated: IPMI Driver v18 +o updated: NTFS Driver 2.4.20 v2.1.1a +o updated: Broadcom Tigon3 v1.4c +o changed: "nfract" from vm.bdflush to 30 for Desktop Tweaks +o changed: made sysctl "Preempt Warnings" an config option + + + +Changelog from v4.0s-pre10 -> v4.0s-rc1 +--------------------------------------- +o fixed: O_DIRECT correct EOF at end of reads +o fixed: UDF discs closed as iso9660 read errors +o fixed: wrong behavior buffer>2G write(2) on 64bit platforms +o updated: CPU Frequency scaling v2.4.20-8 +o updated: Super FreeS/WAN v1.99.5.1 Final +o updated: XFS v1.2-cvs as of 2003-02-16 +o updated: grsecurity v1.99d-CVS as of 2003-02-23 +o updated: ReiserFS data-logging v36-aa +o updated: PROCINFO support (fast ps) v2003-02-23 +o changed: enable SSE for later Athlons +o removed: Scheduler Tunables: slows down a bit and we now have + accurate defaults for Desktop and Server Scheduler tweaks. + If you still want to play with it, change them in kernel/sched.c + + + +Changelog from v4.0s-pre9 -> 4.0s-pre10 +--------------------------------------- +o added: TCP/IP Low Latency via sysctl +o added: sys_sendfile64 ++ added: ./userspace-patches: linux-dvb-2002-12-08 for rmap15b ++ added: LSI MegaRAID support (driver series v2.00.2) +o added: check for swapon on mounted devices +o added: Opteron/Athlon64/Hammer/K8 support ++ re-added: vservers (ctx) v16 (non-breaking gradm version) ++ fixed: IPMI build error due to new ACPI merge in -pre9 ++ fixed: add missing bits from -ac ethernet packet padding fix + fixes 'skb_pad' unresolved symbols in many NIC drivers ++ fixed: some compiler warnings +o fixed: trivial NTFS build error ++ fixed: Unknown interrupt on some systems +o fixed: Failover routing +o fixed: PPC32 build errors ++ fixed: AMD K6 wrongly sets PGE=y - results in a nonbootable kernel ++ fixed: aic7xxx with firmware build enabled compile error +o fixed: make xconfig looks strange in the first menu +o fixed: SMP deadlock on some $MONSTERBOXEN +o fixed: nfs: mishandling of nfsroot port= option +o fixed: nfs: fixed SMP deadlock +o fixed: ext3fs: crash deleting a single non sparse file exceeding 1 Tb +o fixed: Disable Loop IV hack of CryptoAPI because we have loop-jari ++ updated: Matrox mga_vid / Radeon/Rage128 Driver +o updated: ReiserFS data-logging v35-aa +o updated: rmap VM v15d +o updated: XFS v1.2-cvs as of 2003-02-09 including kdb v3.0 +o updated: Super FreeS/WAN v1.99-kb4 Final +o updated: LSI MegaRAID support (driver series v1.18f) +o updated: Broadcom Tigon3 v1.4 +o updated: grsecurity v1.99c Final +o removed: kernel ksymoops: now also part of kdb v3.0 +o changed: Desktop Scheduler Tweaks: More interactivity +o changed: Disable EARLY_PRINTK config option and make it always-on. + Or: I don't like to receive emails anymore saying: + "My screen is black" ;) +o changed: braindead "Conntrack CLOSE_WAIT" from 3days to 2mins + + + +Changelog from v4.0s-pre8 -> 4.0s-pre9 +-------------------------------------- +o added: ReiserFS data-logging (requested alot) +o added: (V)FAT filemode/dirmode mount option (fmode=)/(dmode=) +o added: frlock-gettimeofday-1 + two sequence numbers to bring total SMP scalability to + gettimeofday and implements a frlock framework that can + replace read/write locks. +o fixed: Server Scheduler Tweak build error +o fixed: Since early 2.4 state: Silly depend config for miroPCM20 +o fixed: ALSA: unresolved symbols: un-/register_sound_midi +o fixed: unresolved symbols: 'port_acl_gid' / 'sock_raw_gid' +o fixed: three unresolved symbols when grsec is selected and + 'Unix domain sockets' is a module +o fixed: Strange Qlogic 2200 and such problems since early 2.4 state. +o fixed: iptables v1.27a build errors +o fixed: some very strange tmpfs problems if grsec is turned off + This was a grsecurity problem! +o fixed: ext3fs: rare BUG +o fixed: ext3fs: scheduling storm and lockup +o fixed: speedup "make dep" _alot_ +o fixed: Ethernet packet padding information leak (2.4ac) +o fixed: oops with ltp +o updated: grsecurity v1.99-CVS as of 2003-01-26 +o updated: Super FreeS/WAN v1.99-kb4-rc2 +o updated: LVM v1.0.6 +o updated: rawio-vary-io v17 +o updated: blk-atomic aa5 +o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-01-22 +o updated: ACPI v2003-01-23 +o updated: epoll 2.4.20 v0.62 +o updated: BTTV drivers v0.7.102 +o updated: Intel e100/e1000 driver + Fixes +o updated: SMP-timers A0 to co-exist with frlock-gettimeofday-1 + + + +Changelog from v4.0s-pre7 -> 4.0s-pre8 +-------------------------------------- ++ added: ALSA S/PDIF out for frequencies != 48 kHz for VIA +o added: Broadcom BCM4400 Network Driver v1.0.1 +o added: Sigma Designs Hollywood & Creative Labs DXR3 support v0.13.0 +o added: Support for Tulip based fibre cards (eg. SMC1255FTX) ++ fixed: IO TASKFILE default changed to NO ++ fixed: i82092.c: redefinition of `__module_license' +o fixed: ACPI <-> IPMI build error +o fixed: ACPI PCI HotPlug compile error due to new merge of ACPI ++ fixed: ALSA VIA82XX build error ++ fixed: Lower Netfilter debugging output (annoying) +o fixed: highmem I/O for qla2x00 driver +o fixed: prevent statfs overflow for huge NFS filesystems +o updated: grsecurity v1.99-rc3 +o updated: Broadcom BCM5700 Network Driver v5.0.17 +o updated: AMD-8111 based 10/100 Ethernet support v3.0.0 +o updated: PPP Microsoft encryption/compression (MPPE/MPPC) v0.96 +o updated: Syskonnect Driver sk98lin v6.02 +o updated: IPMI Driver v17 +o updated: XFS v1.2-cvs as of 2003-01-12 +o updated: some Documentation/Configure.help entries +o updated: Super FreeS/WAN v1.99-kb4-rc1 +o removed: vservers until it's #ifdef'ed for gradm breakage + + + +Changelog from v4.0s-pre6 -> 4.0s-pre7 +-------------------------------------- +o added: 3com 3c920 PCI Device ID ++ added: vservers (ctx) v16 +o added: BIOS Enhanced Disk Drive calls determine boot disk +o fixed: eliminate Netfilter addons which breaks standard + shipped iptables v1.2.7a +o fixed: allow people to build M686 without PGE kernels +o fixed: linux crash on boot with some boards +o fixed: MP oops +o fixed: ACPI IO-APIC boot for Pentium 4 +o fixed: exited with preempt count 1 if kernel boots/halts + This is a Preempt Patch issue, not WOLK ones! + Two simple unlock_kernel(); were missing. +o fixed: Logitech/Dexa QuickCam too much verbose output ++ fixed: missing bracket in kernel/sched.c for Server Scheduler Tweak +o fixed: PPC32 build problems +o fixed: Locking bug introduced by ext3fs updates from 2.4.21-pre2 +o fixed: i845G AGP Gart initialisation +o fixed: IPv6: Length of Authentication Extension Header +o fixed: O-PROFILE <-> rmap15b compile issues +o fixed: rage128_vid driver was never built +o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-01-07 +o updated: Super FreeS/WAN v1.99-kb3 Final +o updated: CPU Frequency scaling v2.4.20-5 +o updated: IPMI Driver v16 +o updated: ACPI v2003-01-09 +o change: Some more menu structures moved to seperated menus +o removed: Config option 'Disable ECN by default': totally useless + + + +Changelog from v4.0s-pre5 -> 4.0s-pre6 +-------------------------------------- ++ added: Extra Netfilter modules for IPv4 and IPv6 +o added: IMQ Target / Device +o added: Prioritized Accept Queue +o added: Preselections for Desktop and Server Scheduler +o added: New eepro100 PCI Device ID (0x1059) +o fixed: exited with preempt count 1 if kernel nfsd exits + This is a Preempt Patch issue, not WOLK ones! + A simple unlock_kernel(); was missing. +o fixed: IDE config for Promise/Highpoint RAID was bogus +o fixed: BTTV: another unresolved symbol if !CONFIG_SOUND ++ fixed: CRLF in net/bridge/aes* +o fixed: tmpfs strange problems +o fixed: ALSA OSS Sequencer was never built +o updated: CPU Frequency scaling v2.4.20-4 +o updated: Wireless LAN extensions v16 +o updated: grsecurity v1.9.8-cvs as of 2003-01-02 + + secure /dev/kmem & /dev/mem are now sysctl'able. + sysctl value: kernel.grsecurity.secure_mem = 1 +o updated: i2c v2.7.0-cvs as of 2003-01-02 +o updated: lmsensors v2.7.0-cvs as of 2003-01-02 +o change: OSS / ALSA are now in a seperated submenu "Sound" +o change: kHTTPd / TUX are now in a seperated submenu "Webserver" +o removed: TCP Zero Copy for mmapped files + (Bogus, wrong, stinks, caused problems) + + + +NOTE: All the things marked with "fixed" are VANILLA issues that are also +present in 2.4.18/2.4.19/2.4.20 and who knows what else versions, except the +latest 4 "fixed" were WOLK issues (AFS, VIA AGP, IDE-SCSI and 3c590/3c980). + +Changelog from v4.0s-pre4 -> 4.0s-pre5 +-------------------------------------- +o added: Alcatel SpeedTouch USB modem support +o added: Creative SBLive! Audigy support +o added: TCP Zero Copy for mmapped files +o added: 32bit UID/GID support +o added: Encrypting ethernet bridge +o added: ebtales (firewalling) for ethernet bridge v2.0.003 + BridgeNF +o added: Soft-/Hard Limit of Filedescriptors +o added: Boot parameter "nolapic" do disable Local APIC +o added: SiS APM Workaround for old chipsets +o added: Show us the uptime at halt +o added: change console loglevel via SYSRQ (same as -c param for klogd) +o added: missing Configure.help entries (help for make menuconfig|xconfig) +o added: Config option to be able to disable the OOM killer +o added: Config option to be able to select -Os instead of -O2 +o fixed: Config entry "Ethernet (1000 Mbit)" was bogus +o fixed: Config entry "SCSI low-level drivers" was bogus +o fixed: VFAT file truncating +o fixed: grub cannot boot from /dev/rd/* +o fixed: DoS attack fd overflow (wtf not in vanilla? known since July 02) +o fixed: IDE-CD error while ripping audio-cd's on VIA VT8233 +o fixed: >2TB scsi error +o fixed: buffer overruns in /proc +o fixed: Samba >2GB file truncating error +o fixed: many missing license tags for drivers +o fixed: f00f_workaround_enabled undeclared if AMD K6 +o fixed: instability on some Abit mobo's w/o APIC workaround +o fixed: Promise PDC20265 not recognized correctly +o fixed: Wrong recognition of Seagate LBA-48 drives +o fixed: Crashes on 439HX chipsets because of missing settings in BIOS +o fixed: 3ware doesn't recognize old firmware cards +o fixed: some crashes on IBM laptops +o fixed: DVD ROM reading errors +o fixed: Garbage Collector for AF_UNIX socket races +o fixed: Radeon Framebuffer Mobility crashes +o fixed: Socket network access protocol races +o fixed: wrong processor cache detection if soft reboot +o fixed: PCI_DEVICE_ID_VIA_8633_5 undeclared +o fixed: NIC: 3c590/3c980 build error if static +o fixed: AFS compile error if static +o fixed: IDE-SCSI crash on some systems +o updated: grsecurity v1.9.8 final (ACL subsystem _works_ now :)) + It has still missing rmap15b support, so PaX won't work! :( +o updated: PROCINFO support (fast ps) v2002-12-31 +o change: max_loop = 16; max msg queue identifiers = 512; + max semaphore identifiers = 1024; +o change: default filepermissions on VFAT was rwx, now rw- + + + +Changelog from v4.0s-pre3 -> 4.0s-pre4 +-------------------------------------- +o added: Systrace v2.4.20 ++ added: Linux Trustees v2.10 ++ added: PSPA v2.4.19-16 +o added: VIA Apollo Pro266 AGP support +o added: DRBD v0.6.1 support +o added: panic(); Morse Code +o added: Unblank console if panic(); +o added: AFS documentation help / set up info +o added: Renice processes as a user in a special GID +o added: Magic SysRQ via /proc/sys/kernel/magickey +o added: BadMEM v4.9-rmap edition +o added: some DMI workarounds for broken IBM Laptops +o added: AMD Duron/Athlon SMP checkings +o added: ECC memory monitoring v20020904 +o fixed: Thread wait race +o fixed: RAID 0 (maybe 1/2/5/10) hang at boot +o fixed: ALSA: unresolved symbol snd_hack_usb_set_interface +o fixed: mmap.c:782: parse error before `unsigned' +o fixed: Annoying but super trivial AFS compile error + Now also works w/ Preempt. +o fixed: BTTV unresolved symbols if !CONFIG_SOUND and CONFIG_SOUND_ALSA +o fixed: ALSA Config.in showed slightly wrong info for VIA stuff +o fixed: tcp_v4_lookup_listener already defined problems +o change: OPEN_MAX 1024, NR_FILE 65536, NR_RESERVED_FILES 128 + TCP_KEEPALIVE_TIME (5*60*HZ), local_port_range 1024-9999 + + +Changelog from v4.0s-pre2 -> 4.0s-pre3 +-------------------------------------- +o added: CIPE v1.5.4 +o added: F-RTO for dealing with spurious RTOs (from 2.4.21-BK) +o added: NVIDIA_kernel-1.0-4191 userspace patch for rmap15b issues + (find this in ./userspace-patches) +o added: Matrox mga_vid / Radeon/Rage128 Driver +o added: Work around BIOS problem with recent Athlons (from 2.4.21-BK) +o added: CPU Frequency scaling v2.4.20-3 + SMP fix +o fixed: tmpfs read hang (from 2.4.21-BK) +o fixed: USB: Logitech/Dexxa Quickcam build errors +o fixed: ieee1394 compile warning due to rmap15b +o fixed: CPiA Video For Linux crash if static build +o fixed: More vanilla build errors (ncpfs, intermezzo, parport etc.) +o updated: Bonding v2.4.20-20021210 +o updated: XFS v1.2-cvs as of 2002-12-27 +o updated: grsecurity v1.9.8-cvs as of 2002-12-27 + (ACL-subsystem is buggy yet) + + + +Changelog from v4.0s-pre1 -> 4.0s-pre2 +-------------------------------------- +o added: Some $CONFIG_MONSTERBOX code (highmem, bufferwaste etc.) +o added: blk-atomic-aa4 +o added: _LOTS_ of missing stuff for ppc32/ppc64: O(1) Scheduler and AIO. +o added: Memory eXpansion Technology (MXT) Support +o added: Deadman Timer +o added: Hangcheck {Timer|Comp|Thread|Delay} + - this code is wanted by the Oracle Community +o added: IBM Advanced System Management Service Processor support +o added: Intel VTune Support +o added: IP stealth +o added: grsecurity v1.9.8-cvs (ACL-subsystem is buggy yet) +o added: IP NMAP freak +o added: IP AntiDote2 (ARP attack detector) +o added: CiFS v0.5.8 +o added: MPPE/MPPC v0.94 +o added: LZS compression support v2.4.20 +o added: RAID speedups +o added: fast PID allocation (from LSE) +o added: SCSI idle +o added: USB: Logitech/Dexxa - QuickCam support +o added: NIC: WL24xx Wireless LAN Card Driver (boerde.de approved) +o added: NIC: SiS 900/7016 PCI Fast Ethernet Adapter support (old driver) +o added: NIC: SysKonnect SK-9Dxx support +o added: NIC: Netgear GA622T Gigabit UTP support +o added: NIC: Netgear GA621 Gigabit Fiber support +o added: NIC: Broadcom BCM5700 support +o added: NIC: AMD PCnet32 PCI support (old driver) +o added: NIC: AMD-8111 based 10/100 Ethernet support +o added: NIC: 3c590/3c980 B/C series "Cyclone/Hurricane/Tornado" support +o added: NIC: AT&T/Lucent Wavelan IEEE 802.11 wireless support +o added: NIC: Alternate Aironet 4500/4800 PCMCIA support +o added: SCSI: Tekram DC395/U/UW and DC315/U SCSI support +o added: SCSI: Single Driver Qlogic FC/SCSI support +o added: SCSI: Qlogic QLA 2XXX v6 FC SCSI support +o added: SCSI: Adaptec AIC79xx support +o added: SCSI: iSCSI support (SCSI-over-Network) v3.1.0.3 +o added: FTP file system support +o added: ALSA v.0.9.0-rc6 (yezz, you wanted it no? ;) +o fixed: Low-Latency vs. ext2|ext3|reiserfs|$whatever fs segfault bug + Thanks to Joachim for noticing this. +o removed: read-latency2 in favor of blk-atomic-aa4 (better) diff -Naurp linux-2.4.20-wolk4.11-fullkernel/2.4-WOLK-README linux-2.4.20-wolk4.12-fullkernel/2.4-WOLK-README --- linux-2.4.20-wolk4.11-fullkernel/2.4-WOLK-README 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.4.20-wolk4.12-fullkernel/2.4-WOLK-README 2004-04-01 23:41:41.000000000 +0200 @@ -0,0 +1,64 @@ +Kernel - patched - WOLK v4.12s - Base: Linux kernel 2.4.20 + located at http://sf.net/projects/wolk + by Marc-Christian Petersen +-------------------------------------------------------------------------- + +Thanks to darix for the project name WOLK. + +-------------------------------------------------------------------------- + +What is this? Why another patchset/patched kernel? + +Using Linux since years, very tired of there are not really good +patchsets available which adds many stuff like this. Saw FOLK +Patch/Kernel which is still very very buggy. + + +The WOLK's are stable and development kernels, containing many useful +patches from many projects. Use the Server Edition in production, +Workstation Edition at your own risk. Goal: Stability, Scalability, +Performance and Security. + +There will always be a new WOLK major release if there is a new final +kernel released. Minor releases only if someone/me found critical bugs, +or in case of some adds. + + +-------------------------------------------------------------------------- +You are missing a patch? Patches will be added by request. +You think one or more of the patches are fully useless? Tell me why. + +You want YOUR Patch / other patches to be included ? +Let me know!! If you can, send your merge against wolk. +-------------------------------------------------------------------------- + + +Mailinglists: +------------- +https://sourceforge.net/mail/?group_id=49048 + + +Some of the features: +--------------------- +O(1) Scheduler, RMAP VM, GRsecurity, Crypto, XFS, KDB, Preempt, Systrace, +Super FreeS/WAN, Trustees, IPVS, i2c/lmsensors, TUX, EVMS, BadMEM, ftpfs, +HostAP, all known security fixes, all known filesystem fixes, and many more. + + +Credits go to all the people who created the patches, working hard on +improving the quality. + + +Greetings: +---------- +- Matthias Mueller +- Kerin Millar +- Bob Johnson (WOLK suxx really hardcore eh? :p) + + + +Enjoy! + +Marc-Christian Petersen +Unix/Linux Administrator +Essen, Germany diff -Naurp linux-2.4.20-wolk4.11-fullkernel/2.4-WOLK-TODO linux-2.4.20-wolk4.12-fullkernel/2.4-WOLK-TODO --- linux-2.4.20-wolk4.11-fullkernel/2.4-WOLK-TODO 1970-01-01 01:00:00.000000000 +0100 +++ linux-2.4.20-wolk4.12-fullkernel/2.4-WOLK-TODO 2004-04-01 23:42:26.000000000 +0200 @@ -0,0 +1,4 @@ +Todo for the next release +------------------------- +o sorry, WOLK for Linux Kernel 2.4 suspended. I don't have the time + to manage WOLK for 2.4 and WOLK for 2.6 and my focus is now on 2.6. diff -Naurp linux-2.4.20-wolk4.11-fullkernel/Documentation/Configure.help linux-2.4.20-wolk4.12-fullkernel/Documentation/Configure.help --- linux-2.4.20-wolk4.11-fullkernel/Documentation/Configure.help 2004-04-02 00:27:03.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/Documentation/Configure.help 2004-04-02 00:01:13.000000000 +0200 @@ -3702,31 +3702,34 @@ CONFIG_BLK_DEV_ATARAID_HPT CMD/Silicon Image Medley Software RAID CONFIG_BLK_DEV_ATARAID_MEDLEY - Say Y or M if you have a Silicon Image 3112 SATA RAID controller, a - CMD680 based controller, or another IDE RAID controller that uses + Say Y or M if you have a Silicon Image 3112 SATA RAID controller, + a CMD680 based controller, or another IDE RAID controller that uses CMD's Medley software RAID, and want Linux to use the software RAID feature of this card. This driver uses /dev/ataraid/dXpY (X and Y - numbers) as device names. It has been reported to work on a number - of systems using the Medley RAID. + numbers) as device names. - This driver only supports RAID0 (striped) mode, so if you are using - mirroring this will not work for you. + This driver currently only supports RAID0 (striped) mode, so if you + are using RAID1 (mirroring) this will not work for you. In that + case, you may want to try the Silicon Image Medley Software RAID + driver (below). - You may want to try the Silicon Image Medley Software RAID driver if - this does not work for you. + Support for mirroring is planned in the future. If you choose to compile this as a module, the module will be called medley.o. -Silicon Image Medley Software RAID +Silicon Image Medley Software RAID (old driver) CONFIG_BLK_DEV_ATARAID_SII Say Y or M if you have a Silicon Image SATARaid controller - and want linux to use the softwareraid feature of this card. + and want Linux to use the softwareraid feature of this card. This driver uses /dev/ataraid/dXpY (X and Y numbers) as device names. - This driver is not working on all systems. Please try the Medley - RAID driver instead, which is based on the specifications from CMD. + This driver does not reliably detect all Medley RAID sets, and could + be dangerous if you have a striped set with disks of different size. + + You should use the new Medley RAID driver (above), unless you use + RAID1 (mirroring), which the new driver does not yet support. If you choose to compile this as a module, the module will be called silraid.o. @@ -6458,6 +6461,12 @@ CONFIG_BINFMT_ELF will be called binfmt_elf.o. Saying M or N here is dangerous because some crucial programs on your system might be in ELF format. +ELF binaries with a.out format interpreters or a.out libraries +CONFIG_BINFMT_ELF_AOUT + The kernel may support ELF executables which use an a.out format + interpreter (dynamic linker) and/or a.out shared libraries, in + addition to the usual ELF-ELF setups. You shouldn't need this. + Kernel support for a.out binaries CONFIG_BINFMT_AOUT A.out (Assembler.OUTput) is a set of formats for libraries and @@ -6471,13 +6480,11 @@ CONFIG_BINFMT_AOUT warrant removing support. However its removal is a good idea if you wish to ensure that absolutely none of your programs will use this older executable format. If you don't know what to answer at this - point then answer Y. If someone told you "You need a kernel with + point then answer N. If someone told you "You need a kernel with QMAGIC support" then you'll have to say Y here. You may answer M to compile a.out support as a module and later load the module when you want to use a program or library in a.out format. The module will be - called binfmt_aout.o. Saying M or N here is dangerous though, - because some crucial programs on your system might still be in A.OUT - format. + called binfmt_aout.o. OSF/1 v4 readv/writev compatibility CONFIG_OSF4_COMPAT @@ -26059,7 +26066,8 @@ CONFIG_GRKERNSEC_PAX_SOFTMODE Use legacy ELF header marking CONFIG_GRKERNSEC_PAX_EI_PAX Enabling this option will allow you to control PaX features on - a per executable basis. The control flags will be read from + a per executable basis via the 'chpax' utility available at + http://pax.grsecurity.net/. The control flags will be read from an otherwise reserved part of the ELF header. This marking has numerous drawbacks (no support for soft-mode, toolchain does not know about the non-standard use of the ELF header) therefore it @@ -26075,14 +26083,15 @@ CONFIG_GRKERNSEC_PAX_EI_PAX Use ELF program header marking CONFIG_GRKERNSEC_PAX_PT_PAX_FLAGS Enabling this option will allow you to control PaX features on - a per executable basis. The control flags will be read from + a per executable basis via the 'paxctl' utility available at + http://pax.grsecurity.net/. The control flags will be read from a PaX specific ELF program header (PT_PAX_FLAGS). This marking has the benefits of supporting both soft mode and being fully integrated into the toolchain (the binutils patch is available from http://pax.grsecurity.net). Note that if you enable the legacy EI_PAX marking support as well, - it will be overriden by the PT_PAX_FLAGS marking. + it will be overridden by the PT_PAX_FLAGS marking. MAC system integration CONFIG_GRKERNSEC_PAX_NO_ACL_FLAGS @@ -26122,10 +26131,6 @@ CONFIG_GRKERNSEC_PAX_NOEXEC of functions is executable (which it is not). Notable examples are the XFree86 4.x server, the java runtime and wine. - NOTE: you can use the 'chpax' utility to enable/disable this - feature on a per file basis. chpax is available at - - Paging based non-executable pages CONFIG_GRKERNSEC_PAX_PAGEEXEC This implementation is based on the paging feature of the CPU. @@ -26156,15 +26161,15 @@ CONFIG_GRKERNSEC_PAX_EMUTRAMP CONFIG_GRKERNSEC_PAX_SEGMEXEC then such programs will no longer work under your kernel. - As a remedy you can say Y here and use the 'chpax' utility to - enable trampoline emulation for the affected programs yet still - have the protection provided by the non-executable pages. + As a remedy you can say Y here and use the 'chpax' or 'paxctl' + utilities to enable trampoline emulation for the affected programs + yet still have the protection provided by the non-executable pages. On parisc and ppc you MUST enable this option and EMUSIGRT as well, otherwise your system will not even boot. - Alternatively you can say N here and use the 'chpax' utility - to disable CONFIG_GRKERNSEC_PAX_PAGEEXEC and + Alternatively you can say N here and use the 'chpax' or 'paxctl' + utilities to disable CONFIG_GRKERNSEC_PAX_PAGEEXEC and CONFIG_GRKERNSEC_PAX_SEGMEXEC for the affected files. NOTE: enabling this feature *may* open up a loophole in the @@ -26264,8 +26269,8 @@ CONFIG_GRKERNSEC_PAX_ASLR randomization has negligible impact on performance yet it provides a very effective protection. - NOTE: you can use the 'chpax' utility to control most of these features - on a per file basis. + NOTE: you can use the 'chpax' or 'paxctl' utilities to control most + of these features on a per file basis. Randomize kernel stack base CONFIG_GRKERNSEC_PAX_RANDKSTACK @@ -26286,8 +26291,8 @@ CONFIG_GRKERNSEC_PAX_RANDUSTACK one may apply a big amount of shift to the top of the stack and cause problems for programs that want to use lots of memory (more than 2.5 GB if SEGMEXEC is not active, or 1.25 GB when it is). - For this reason the second step can be controlled by 'chpax' on - a per file basis. + For this reason the second step can be controlled by 'chpax' or + 'paxctl' on a per file basis. Randomize ET_EXEC base CONFIG_GRKERNSEC_PAX_RANDEXEC @@ -26302,8 +26307,8 @@ CONFIG_GRKERNSEC_PAX_RANDEXEC This solution is intended only as a temporary one until you relink your programs as a dynamic ELF file. - NOTE: you can use the 'chpax' utility to control this feature - on a per file basis. + NOTE: you can use the 'chpax' or 'paxctl' utilities to control + this feature on a per file basis. Allow ELF ET_EXEC text relocations CONFIG_GRKERNSEC_PAX_ETEXECRELOCS @@ -26389,8 +26394,8 @@ CONFIG_GRKERNSEC_PAX_RANDMMAP and practical samples at . - NOTE: you can use the 'chpax' utility to control this feature - on a per file basis. + NOTE: you can use the 'chpax' or 'paxctl' utilities to control this + feature on a per file basis. Deny writing to /dev/kmem, /dev/mem, and /dev/port CONFIG_GRKERNSEC_KMEM diff -Naurp linux-2.4.20-wolk4.11-fullkernel/Makefile linux-2.4.20-wolk4.12-fullkernel/Makefile --- linux-2.4.20-wolk4.11-fullkernel/Makefile 2004-04-02 00:27:53.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/Makefile 2004-03-16 13:50:54.000000000 +0100 @@ -1,7 +1,7 @@ VERSION = 2 PATCHLEVEL = 4 SUBLEVEL = 20 -EXTRAVERSION = -wolk4.11s +EXTRAVERSION = -wolk4.12s KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) diff -Naurp linux-2.4.20-wolk4.11-fullkernel/VERSION linux-2.4.20-wolk4.12-fullkernel/VERSION --- linux-2.4.20-wolk4.11-fullkernel/VERSION 2004-04-02 00:27:53.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/VERSION 2004-03-16 13:50:51.000000000 +0100 @@ -1 +1 @@ -WOLK v4.11s "Server Edition" FINAL, based on 2.4.20 +WOLK v4.12s "Server Edition" FINAL, based on 2.4.20 diff -Naurp linux-2.4.20-wolk4.11-fullkernel/WOLK-CHANGELOG linux-2.4.20-wolk4.12-fullkernel/WOLK-CHANGELOG --- linux-2.4.20-wolk4.11-fullkernel/WOLK-CHANGELOG 2004-04-02 00:27:53.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/WOLK-CHANGELOG 1970-01-01 01:00:00.000000000 +0100 @@ -1,1077 +0,0 @@ -Changelog from v4.10s -> v4.11s -------------------------------- -o updated: CIFS v1.0.2b -o updated: HostAP driver v0.1.3 -o fixed: CAN-2004-0003: issues in r128 DRI (Direct Render Infrastructure) -o fixed: CAN-2004-0010: a flaw in ncp_lookup() in ncpfs. -o fixed: CAN-2004-0075: the Vicam USB driver in Linux before 2.4.25 does - not use the copy_from_user function when copying data from - userspace to kernel space, which crosses security boundaries - and allows local users to cause a denial of service. -o fixed: user/kernel copying in DRI GAMMA driver - - -Changelog from v4.9s -> v4.10s ------------------------------- -o added: Promise PDC ULTRA SATA support v1.00.0.10 -o added: Emulex LP8000/9000/9002L/9002DC/9402DC/9802 FC support v1.23a -o added: Quick Sort support (qsort) -o added: ignore unrecognized mount options -o added: ATI IGP chipset support -o added: S3 Savage support -o added: VIA CLE266 support -o added: full XAPIC support (vanilla has half of this :p) -o added: rICMP support -o added: libata (S-ATA support via SCSI layer) - same as 2.6 kernel version (2004-02-18) -o fixed: broken 2.4.x rt_sigprocmask error handling -o fixed: IDE timeout race fix -o fixed: CAN-2004-0077: return proper do_munmap() error code -o fixed: CAN-2003-0984: /dev/rtc can leak parts of kernel memory to - unpriviledged users -o fixed: CAN-2003-0985: malicious users of mremap() syscall can gain - priviledges -o fixed: check bounds in do_brk (recently used to exploit Debian Servers) -o fixed: full modular IDE build problems -o fixed: Support for processor throttling when VMware runs -o fixed: overflow on unaligned checksum buffers -o fixed: handle unreachable IO-APICs in ACPI without panic -o fixed: problem where every user who can open /dev/cdrom can crash kernel -o fixed: boot code overflow with more CPUs than CONFIG_NR_CPUS -o fixed: missing brackets in agpgart -o fixed: SCSI: never ever merge requests if we exceed the maximum number - of scatter-gather segments that fit into a page. -o fixed: another potential procfs memory leak -o fixed: PAX' SEGMEXEC did not work with HIGHMEM vs. SMP -o fixed: years outstanding bug with P3/P4 Hyperthreading :-( -o fixed: problem with set_ioapic_affinity() -o fixed: SMP kernel dummy APIC emulation in smpboot for x86: - the process timer must be driven from the 8253 in this case. -o fixed: mpparse for default MP systems -o fixed: missing memory barrier in get_request_wait_wakeup() -o fixed: Data region of memory output was negative -o fixed: more irq/bh races (smp_mb()'s) -o fixed: nvidia-kernel-1.0.4496 didn't compile -o fixed: race in the O(1) scheduler -o fixed: memory leak in kernel module loader -o fixed: possible SMP deadlock on reboot -o fixed: log_buf_len boot parameter -o fixed: too few characters for boot parameters -o fixed: ipc_init() SMP crash -o fixed: route SMIs through IOAPIC -o fixed: RCU helpers for PREEMPT -o fixed: reduce bkl contention caused by blkdev_put -o fixed: missing symbol 'console_printk' for IDE modularization -o fixed: disable the anti-DoS fix tested on some embedded - platforms, to avoid regressions due softirq delays -o fixed: mmap on /dev/mem wrt to uncached accesses -o fixed: wrong APIC handling for SMP/HT -o fixed: ieee1394 locking bug in nodemgr -o fixed: memory leak in user space communication with USB devices -o fixed: memory leaks in LVM v1.0.7 -o fixed: IPVS: ip_vs_tunnel_xmit to return NF_DROP when no memory available -o fixed: IPVS: add strict boundary check in parsing FTP commands -o updated: LSI MegaRAID (driver series v1.18k) -o updated: LSI MegaRAID (driver series v2.10.1) + IRQ disabled bugfix -o updated: Intel e100 driver v2.3.38 -o updated: Intel e1000 driver v5.2.20 -o updated: DRBD v0.6.11 -o updated: AIC7xxx v6.3.4 / AIC79xx v2.0.5 (v2004-02-09) -o updated: PPP Microsoft encryption/compression (MPPE/MPPC) v0.98 -o updated: SysKonnect SK-98xx driver v6.21 -o updated: Device Mapper (LVM2) v4.0.4-ioctl (2003-08-30) -o updated: EVMS v2.1.1 -o updated: LVM v1.0.8 -o updated: replaced Super FreeS/WAN with OpenS/WAN v1.0.1 -o updated: CryptoAPI from 2.4.22/2.4.23/2.4.24/2.4.25 -o updated: CryptoLOOP (jari edition) -o updated: rmap VM v15l -o updated: grsecurity v1.9.14 Final -o updated: tons of ACPI fixes for UP/SMP/HT and better Notebook support. -o updated: convert /proc/interrupts to use seq_file -o updated: shfs v0.32-pre2 -o updated: Intel VTune Support -o updated: RFCOMM protocol support v12 -o updated: FireWire IEEE1394 rev1050 -o updated: USB: tons of fixes and updates -o updated: Broadcom BCM5700 driver v7.0.0 -o updated: Broadcom Tigon3 v2.6 -o updated: Compressed Loop (cloop) v1.02 -o updated: DAC960 RAID Driver v2.4.20 of 1 May 2003 - (Vanilla still has the driver from kernel 2.4.11!!) -o updated: Intel/ICP RAID Controller support v2.06a -o updated: AACRAID v1.1-3 -o updated: Qlogic QLA 2x00 v6 FC SCSI support v6.06.00 -o updated: 3ware Driver v1.02.00.037 -o updated: CPU Frequency scaling v2.4.22 2003-09-01 -o updated: XFS v1.3.1 Final (SCO: go and fuck yourself!) -o removed: RMAP: OOM killer braindamage fix fix fix fix: BROKEN! -o removed: Option 'PS/2 keyboard support': broke too much stuff -o changed: CPU - Cap Processor Usage: Make it a config option - - -Changelog from v4.8s -> v4.9s ------------------------------ -o added: Dazuko v1.2.1 -o added: missing iSCSI Configure help entries and informations -o added: sysctl to control ipfrag_secret_interval -o added: WEB-DAV Linux File System support (davfs2) v0.2.4 -o added: Application Layer 7 Packet Classifier v0.1.4 -o fixed: hfsplus unresolved symbols -o fixed: rsbac v1.2.2 compilation errors :-( -o fixed: Mhwahahhaha! A missing 'generic_unplug_device' in IDE code -o fixed: irq/bh races -o fixed: two missing Intel x86 cache defines (now Pentium-M should be ok) -o fixed: use Jenkins hash for fragment reassembly handling -o fixed: lru queue for ip_fragment evictor -o fixed: hardcoded vmalloc reserve size: now we have a boot parameter - See: Documentation/kernel-parameters.txt : vm_reserve -o fixed: RMAP: zeromap_pmd_range -o fixed: RMAP: treat database shared memory segments with the - same swapout priority as anonymous pages, this helps - database performance under some loads -o fixed: RMAP: do all page->flags updates atomically, to avoid - race conditions -o fixed: some bogus 'file->f_flags' -o fixed: more unshare_files() fixes -o fixed: speedup 'make dep' again a bit -o fixed: loop handling of sector size ioctl -o fixed: asm constraint bug in arch/i386/kernel/pci-pc.c -o updated: IBM ServeRAID v6.10.24 -o updated: Broadcom BCM4400 driver v2.0.5 -o updated: Broadcom BCM5700 driver v6.2.17 -o updated: SysKonnect SK-98xx driver v6.17 -o updated: iSCSI support (SCSI-over-Network) v3.4.0.3 -o updated: XFS v1.3.0 Final - - -Changelog from v4.7s -> v4.8s ------------------------------ -o fixed: new i2c merge broke matroxfb, tvmixer, bttv and DXR3 -o fixed: wrong assumption in set_bh_page() -o fixed: max_addr_len() for InfiniBand support -o fixed: aic7xxx/aic79xx -Werror makefile error -o fixed: 'no_idt' usage in reboot code, noticed by better asm - typechecking in gcc-3.3.1. -o updated: zlib v1.1.4 - - -Changelog from v4.6s -> v4.7s ------------------------------ -+ added: shfs v0.32-pre1 (Michael Gebetsroither) -o added: new CPU capabilites for recent cpu's -o added: Intel/AMD/VIA HW Random Number Generator support -o added: Deny promiscuous mode for interfaces -o added: WRR packet scheduler -o fixed: ptrace swap race -o fixed: steal_locks: we should be in full LSB compliance now -o fixed: nbd: multiple race conditions -o fixed: nbd: race conditions and various other deadlocks -o fixed: beyond_eof check in generic_direct_IO -o fixed: reiserfs: some issues with extended inode attributes -o fixed: ext3fs: ext3_read_inode() race fix -o fixed: ext3fs: missing TASK_RUNNING in jbd transaction code -o fixed: ext3fs: handle aborted journals -o fixed: v4l2: wrong poll_table usage. We have epoll too. -o fixed: RMAP: OOM killer braindamage fix fix fix fix - (yes, it's the 4th fix fix ;) and it _works_ now! -o updated: IPVS v1.0.10 -o updated: rsbac v1.2.2 -o updated: DRBD v0.6.6 -o updated: grsec: tons of PaX updates/fixes -o updated: XFS v1.3.0-pre5 -o updated: kdb v4.3 -o updated: EVMS v2.1.0 -o updated: q->full revision 2 -o updated: i2c v2.8.0 Final -o updated: lmsensors v2.8.0 Final -o updated: CIFS v0.8.7 -o removed: EVMS v1.x code -o changed: Make 'PS/2 keyboard support' an option - - -Changelog from v4.5s -> v4.6s ------------------------------ -o fixed: BUG() while booting (missing brackets :pp) -o fixed: correct 64-bit write system call assignment -o fixed: select() with an xoffed tty -o fixed: compile error when EVFS is selected -o fixed: undefined reference to touch_nmi_watchdog -o fixed: mainline pagecache is slow and scales _bad_. Make it better :p -o fixed: SAK: printk killed processes only if grsecurity's proc restrictions - are enabled. -+ fixed: some bogus EXPORT_SYMBOL_GPL (Michael Gebetsroither) -o updated: HostAP driver v0.0.4 -o removed: 3com 3c59x v0.99Za (it works great for many people and also works - very bad for many people. Revert this until Donald Becker fixed - it up. - - -Changelog from v4.4s -> v4.5s ------------------------------ -o added: ikconfig support (will be merged soon into 2.4-BK, finally!) -o added: kernel compilattion support for IBM's propolice gcc extension -o added: HP CISS: support for failover in multipath environments using - the md driver. For more informations, please read: - Documentation/cciss.txt: Monitor Threads -o fixed: CAN-2003-0464: A recent change in the RPC code set the reuse - flag on newly-created sockets. Olaf Kirch noticed that his - could allow normal users to bind to UDP ports used for - services such as nfsd. -o fixed: CAN-2003-0187: A vulnerability was reported in Netfilter in the - connection tracking function. On certain versions of the Linux - kernel, a remote user can cause denial of service conditions - on the target system. -o fixed: CAN-2003-0467: A vulnerability was reported in the network - address translation (NAT) implementation in Netfilter. A - remote user may be able to cause the target system to crash. -+ fixed: 3com 3c59x: static compile issue (Mike Bethune) -+ fixed: 3com 3c59x: module license missing (Michael Michael Gebetsroither) -o fixed: Error out if no I/O elevator is selected and tell the user about -o fixed: AGPGART problem with 4GB RAM -o fixed: slab cache usage (it's broken in 2.4 mainline, too much wastage) -o fixed: irq handling of IO-APIC edge IRQs on UP -o updated: 3ware Driver v1.02.00.036 -o updated: LSI MegaRAID (driver series v1.18j) -o updated: LSI MegaRAID (driver series v2.00.7) - - -Changelog from v4.3s -> v4.4s ------------------------------ -o added: High Performance Packet Classification (nf-hipac) v0.8 rev2 -o added: boost the copy-user asm. -o added: merged IO-Stall fixes from 2.4.22-pre3/4/5/6/7 -o added: q->full, defaults to off and keeps the elvtune changes. - So to turn on the q->full low latency fixes, you need to: - "elvtune -b 1 /dev/xxxx" . Note that for lvm and md, you need - to elvtune each underlying device. Running it on an lvm/md - device doesn't do anything. -o added: low latency / normal / max throughput - I/O elevator selection. -o fixed: CAN-2003-0461: /proc/tty/driver/serial reveals the exact - character counts for serial links. This could be used by a - local attacker to infer password lengths and inter-keystroke - timings during password entry. -o fixed: CAN-2003-0462: Paul Starzetz discovered a file read race - condition existing in the execve() system call, which could - cause a local crash. -o fixed: CAN-2003-0476: The execve system call in Linux 2.4.x records - the file descriptor of the executable process in the file - table of the calling process, allowing local users to gain - read access to restricted file descriptors. -o fixed: CAN-2003-0501: The /proc filesystem in Linux allows local users - to obtain sensitive information by opening various entries in - /proc/self before executing a setuid program. This causes the - program to fail to change the ownership and permissions of - already opened entries. -o fixed: CAN-2003-0550: The STP protocol is known to have no security, - which could allow attackers to alter the bridge topology. - STP is now turned off by default. -o fixed: CAN-2003-0551: STP input processing was lax in its length - checking, which could lead to a denial of service. -o fixed: CAN-2003-0552: Jerry Kreuscher discovered that the Forwarding - table could be spoofed by sending forged packets with bogus - source addresses the same as the local host. -o fixed: reduced the number of requests during seeks (the latency times - increased slightly during seeks with pre5/pre6). -o fixed: reserved some spare request for reads. This is been measured - to avoid some waiting for reads and it's beneficial in the - common case -o fixed: copy-namespace -o fixed: RMAP: refill free list in batches, in fixup_freespace -o fixed: RMAP: only wake up kswapd when low on free+clean pages -o fixed: RMAP: in __alloc_pages_limit, first do rmqueue (to use per-cpu - freelist) and fall back to direct_reclaim when needed -o fixed: RMAP: make sure the first stage of page allocation doesn't - upset the zone balancing -o fixed: RANDOM: another SMP deadlock. I really wonder how many (read: - tons * 2^99) deadlocks we have in the Linux kernel! - I am _shouting_ out for a lock free kernel!! ;) -o updated: Oracle Cluster FileSystem (OCFS) v1.0.9-pre Jul 17 2003 -o updated: AIO: allow aio on blkdevices too -o updated: smp-timers: merged an anti deadlock fix from lcm, 2.5 probably - needs it too. In short the theory that mod_timer is the only - thing that can run in parallel was wrong, add_timer and - del_timer/del_timer_sync can too. Having already fixed - mod_timer in a backwards compatible way before merging the - smp-timers in -aa, made it easy to fix those further windows - too. -o updated: ksoftirqd: merged a fix from Philip Craig to be sure to make - the anti-DoS logic effective. He wrote and verified the code. - It makes perfect sense so it's applied. Normal usages - shouldn't notice the difference, especially with the - max-loop logic. -o updated: Intel e100 driver v2.3.18-k1 + bugfixes from .22-BK -o updated: Intel e1000 driver v5.1.11-k1 + bugfixes from .22-BK -o updated: Broadcom BCM5700 driver v6.2.11 -o updated: Broadcom Tigon3 v1.6 -o updated: SysKonnect SK-98xx driver v6.12 -o updated: HP CISS Driver v2.4.47 -o updated: Compaq SMART2 Driver v2.4.25 -o updated: raw vary-io 21, including more SCSI driver support -o updated: Super FreeS/WAN v1.99.8 Final -o updated: Qlogic QLA 2x00 v6 FC SCSI support v6.05.60 -o updated: 3com 3c59x v0.99Za (vanilla ones is over 2 years old) -o removed: LUFS: braindamaged, non-working. Get rid of that shit. -o changed: DRM v4.3 is now seperate from DRM 4.0/4.1/4.2 - - -Changelog from v4.2s -> v4.3s ------------------------------ -o added: allows O_DIRECT writes I/O to run in parallel (not serialized - anymore by the i_sem). -o added: extended OOM killer functions via /proc - Max childs per parent oom-killed before we kill the parent - tunable via "/proc/sys/vm/oom_parent_expire" - Min numbers of seconds before we forget about parents - tunable via "/proc/sys/vm/oom_parent_max" -o added: workaround for annoying "APIC error on CPUx" error messages -o fixed: large routing table problems with new hash algo (jenkins) -o fixed: unexpected IO-APIC -o fixed: ext3fs htree sets the index too early -o fixed: dmesg cleanup: printf CPU inconsistency -o fixed: dnotify read/writev -o fixed: buffer_insert_list should use list_add_tail -o fixed: cleanup kmem_cache_reap() -o fixed: smp race condition in submit_bh (though nearly impossible to - trigger) and put some BUG_ON to verify nobody calls writepage - w/o a reference on the page (SetPageUptodate needs it too) -o fixed: grsec: pci bios problem on smp w/ kernexec -o fixed: grsec: oops on init if we're out of memory -o fixed: RMAP: sequential writeout performance tuning -o fixed: RMAP: rate limit slab cache pruning, to reduce IPI load - on SMP systems -o fixed: RMAP: don't cache-align buffer heads, in order to save space -o fixed: RMAP: shrink kiobuf slab when reclaiming buffer heads -o fixed: RMAP: if we reset the zone size due to highmem being - all IO space, we shouldn't BUG() when we see such - zones in the page allocator -o fixed: RMAP: corner case where all highmem pages are in an - IO window and not released into the free list - at bootup time -o fixed: RMAP: compile warnings -o fixed: RMAP: call oom killer only when allocations fail -o fixed: RMAP: only count the real freeing of pages for the - OOM killer -o fixed: RMAP: make bdflush writeout smoother -o fixed: RMAP: logic inversion in inode reclaim -o fixed: RMAP: only reclaim bufferheads on highmem machines, - and only when the bufferheads take more than - 10% of the spage used by pageable low memory. -o fixed: RMAP: make OOM killer less agressive -o fixed: RMAP: avoid expensive atomic pagetable operation -o fixed: RMAP: backport next_and_idx optimisation from 2.5 -o updated: AIC7xxx v6.2.36 / AIC79xx v1.3.10 (v2003-06-03) -o updated: Super FreeS/WAN v1.99.7.3 Final -o updated: CODA v6.0.1 -o updated: HTB v3.12 -o changed: converted /proc to seq operations - - -Changelog from v4.1s -> v4.2s ------------------------------ -o re-added: Scheduler Tunables (/proc/sys/sched): I need it! -o added: SCSI monitoring support -o added: Parallel Port SCSI adapters -o added: RFCOMM protocol support v9 -o added: an hook to trigger a rescan of the scsi devices - echo "scsi scan-new-devices" >/proc/scsi/scsi -+ fixed: 3com 3c90x wrong module init/exit stuff -o fixed: RMAP: better higher-order page allocation -o fixed: RMAP: OOM tweak -o fixed: RMAP: minor smp fix backported from 2.5 -o fixed: RMAP: agressive inode reclaim when we're low on low memory - and inodes are taking up lots of low memory. -o fixed: RMAP: O(1) page launder bug fix, free buffer heads instead - of reactivating the page -o fixed: RMAP: if we can't clear page->buffers but the page wasn't - locked, move it back to the inactive_dirty list -o fixed: RMAP: OOM killer braindamage fix fix -o fixed: RMAP: potential infinite loop in inode pruning -o fixed: ext3fs deadlock using journal_create while mount -o fixed: race in search_exception_table() (Module stuff) -o fixed: erroneous fsync on last opener at close() -o fixed: long outstanding bug (15 months) that will make your mouse hang, - keyboard stuck, no possibility to work with your desktop while - high disk i/o. -o fixed: blk-atomic + varyio wasn't right in its first version, the - refile had to be a few lines below -o fixed: race between truncate and the page faults -o fixed: wrong DeviceMapper stuff which was left from dcache-fastwalk :( -o fixed: IOPERM system call I/O port access vulnerability fix -o fixed: AIC7xxx gcc v3.3.x compile errors -+ fixed: USB storage problems -o fixed: 'make xconfig' always sets CONFIG_ATM to y -o fixed: UP set_task_state and set_current_state to ensure that we don't - re-order loads around the store for setting task->state. -o fixed: sys_munmap for a mapping near the end of the physical address - space frees pages still in use -o fixed: TIOCCONS -o fixed: writing to /dev/console returns ESPIPE -o fixed: vmalloc increase for 128MB frame buffer with VESA fb driver -o fixed: non-working APIC on SiS chipsets -o fixed: eepro100 DoS attack and after that, the card is dead -o fixed: SG side effect introduced by last "off by one" fix -o updated: rmap VM v15j -o updated: eepro100 PCI IDs -o updated: NVIDIA chipset support (nForce/nForce2) -o updated: HostAP driver v0.0.3 -o updated: AIC7xxx v6.2.36 / AIC79xx v1.3.10 (v2003-06-03) -o updated: IPVS v1.0.9 -o updated: Encrypted Virtual File System (EVFS) v0.3 -o updated: Super FreeS/WAN v1.99.7.2 Final -o changed: make ksoftirqd cpuid match 2.5 -o changed: make migration id match 2.5 -o changed: sync wakeup on UP too like SMP has -o removed: gcc 3.3* inlining bug fix. gcc 3.3 does this correct now - - -Changelog from v4.0s -> v4.1s ------------------------------ -o fixed: hashing exploits in ipv4 routing, IP conntrack, and TCP synq -o fixed: IOPERM system call I/O port access vulnerability -+ fixed: cloop unresolved symbols vs. zlib -o fixed: NFS client stuck in D state -o fixed: mm corrupting SMP race between remove_inode_page and prune_icache -o fixed: Must wakeup with end_buffer_io_kiobuf as last thing to be sure - the wakeup will happen on a still allocated kiobuf -o fixed: Avoid spurious duplicate acks for very minor window updates, - that generates the double outgoing traffic with streaming - services that tends to fill the whole receive window to buffer -o fixed: fd leak -o fixed: vma merging issue with device driver supplied mappings -o fixed: tcp_tw_death_row corruption -o fixed: OOM killer braindamage (RMAP) -o fixed: VesaFB and highmem where screen stays black -o updated: AIO-18 -o updated: Super FreeS/WAN v1.99.7 Final (including Dead Pear Detection) -o removed: Network checksumming speed runtime detection - does not give any real advantage, causes bugs on recent Athlons - - -Changelog from v4.0s-rc8 -> v4.0s-final ---------------------------------------- -o updated: rmap VM v15i -o updated: ACPI v2003-05-12 - - -Changelog from v4.0s-rc7 -> v4.0s-rc8 -------------------------------------- -o added: ./userspace-programs: CAP to modify CPU usage per process -o added: HFS+ Filesystem driver v0.2 -o added: Encrypted Virtual File System (EVFS) v0.2 -o added: HP (and other) laptop support -+ added: HostAP driver v0.0.2 -+ added: make target 'oldconfig_nonint' - This is the opposite of "make oldconfig". oldconfig asks you - for new options, "oldconfig_nonint" won't ask you any question - about new options. It will default to "N". -o added: EVMS-2 branch v2.0.1 -o fixed: APIC handling: NOTE: You _have to_ specify "apic" boot parameter - in order to use APIC. If not specified, you are NOT using APIC - at all. So specify "apic" to use it!! -o fixed: devfs deadlock on concurrent lookups on non-existent entry -o fixed: set argv[0] of init process to filename -o fixed: aic7xxx PCI posting -o fixed: device busy with reiserfs ontop of software raid at halt/reboot -o fixed: another potentional SMP deadlock -o fixed: VM SMP race -o fixed: highmem deadlock -o fixed: memory leak in fs layer -o fixed: another procfs memory leak -o fixed: Qlogic ISP SCSI Driver leaks -+ fixed: USB safe_serial.c compile error -+ fixed: typo "AND MMX" in network checksumming code -+ fixed: conservative zone bitmaps to prevent potential memory corruption -+ fixed: kdb compile error -o fixed: long outstanding block-atomic corruption bug -o fixed: prevent a deadlock while sysrq-showTasks -+ fixed: grsecurity: rand_pids:1 = /proc/loadavg last entry not updated -+ fixed: tty_write_message needs \r\n -- makes quota messages look nicer -+ fixed: scsi timeout longer; 30 seconds is too short for big raid arrays - with lots of large concurrent requests in flight -+ fixed: allow more unnamed mounts by borrowing old, unused major devices - This is needed if you want more than 255 NFS mounts; some - people use the "one mount per user" automount setup and they - need this if they have more than 255 users. -o updated: Compressed Loop (cloop) v0.68 -o updated: Device Mapper (LVM2) v2.4.20 code -o updated: ECC memory monitoring v20030225 -o updated: IBM ServeRAID v5.11.05 (old driver series) -o updated: VIA Rhine NIC driver v1.1.17 -o updated: SysKonnect SK-98xx and SK-95xx Gigabit Ethernet support v6.0.3 -o updated: Broadcom NetXtreme BCM5700 Gigabit Ethernet support v6.2.2 -o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-05-02 -o updated: HP CISS Driver v2.4.44 -o updated: Compaq SMART2 Driver v2.4.25 -o updated: XFS v1.2-cvs as of 2003-05-01 -o updated: kdb v4.2 -o updated: NTFS Driver v2.1.4a -o updated: grsecurity v1.99h Final -o updated: rmap VM v15h -o updated: CIFS v0.7.6 -o updated: Qlogic QLA 2x00 v6 FC SCSI support v6.04.00 -o updated: XFree 4.3.0 Final DRM code - Test succeed 100% on ATI Rage 128 pro and Intel i810/i815. - Fixes also memory leaks and screen corruption on both! -o changed: make "kernel watchdog" a config option + help entry -o changed: make RMAP's "try to reclaim buffers" a config option + help entry - - -Changelog from v4.0s-rc5 -> v4.0s-rc7 -------------------------------------- -o added: introduce "nousb" boot option (will disable all USB devices) -o added: Gericom/Advent laptop battery support -o added: VIA KL133/KM133 Northbridge PCI workaround -o added: Special AMD Athlon/Duron on VIA KT133(A) idle loop (LVCOOL) -o fixed: AFS compile error -o fixed: Unresolved symbol 'video_proc_entry' in mod_quickcam.o -o fixed: hopefully scheduler lockups on some boxen (dooh, dunno why) -o fixed: grsec: Segmentation based non-executable pages build error -o fixed: grsec: Paging based non-executable pages build error -o fixed: freeswan: running OE w/NAT, where clients behind OE/NAT GW - would only be able to reach OE enabled hosts, meaning 99% - of connections failed. -o fixed: missing "Intel 830M/845G/852GM/855GM/865G" fb config.in entry -o fixed: very small rsbac merge error -o fixed: Clark-Shenker-Zhang scheduler does not destroy filter list -o fixed: Simple 3-band priority scheduler does not destroy filter list -o fixed: Re-enabled some disabled Network Cards *dooh* -o fixed: zlib_inflate* unresolved symbols -o fixed: Adaptec Starfire/DuraLAN module unresolved symbols -o fixed: mem handling of high areas -o fixed: vserver kernel oops/hang if you do an "ls" in /proc/ -o fixed: qdisc oops -o fixed: LSI MegaRAID driver series 1.xx memory leak -o fixed: AMD8131 IOAPIC mode -o fixed: wrong routing account information in /proc/net/rt_acct -+ fixed: some gcc v3.3.x compile errors -o fixed: NETFILTER: ip_queue memory leaks -o fixed: NETFILTER: Makefile and build fixes -o updated: USB Alcatel Speedtouch support v1.6 -o updated: DRBD v0.6.3 -o updated: ACPI v2003-04-24 -o updated: Bonding v2.4.20-20030415 -o updated: Super FreeS/WAN v1.99.6.2 Final -o updated: Systrace v1.2 -o updated: NTFS Driver 2.4.20 v2.1.3a -o updated: IPMI Driver v21 -o updated: Netconsole with simultaneous syslog packet option -o updated: ACPI Relaxed AML Checking -o updated: grsecurity v1.99g Final + CVS-fixes -+ updated: support for VIA 8233/8235 audio subsystem -o updated: IP Virtual Servers v1.0.8 -o updated: rmap VM v15g + BK-fixes -+ updated: vservers (ctx) v17 -o updated: Preempt v2.4.20-3 updates to fix SMP and memleak errors -o updated: Intel e100 Network Driver v2.2.21-k1 -o updated: Intel e1000 Network Driver v5.0.43-k1 -o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-04-24 -o updated: XFS v1.2-cvs as of 2003-04-23 -o updated: LSI MegaRAID (driver series v1.18h) -o updated: LSI MegaRAID (driver series v2.00.3) -o updated: Broadcom Tigon3 v1.5 -o updated: Orinocco v0.13d -o updated: IBM ServeRAID v6.00.26 - (ignore: "BIOS: xyz, Firmware: abc, Device Driver: 123 - These levels should match to avoid possible compatibility - problems." ... It will work just fine!) -o updated: BTTV v0.7.106 -o updated: HTB3 configure help entry -o updated: 3ware ATA Raid Controller configure help entry -o changed: introduced CONFIG_SHM_LARGEPAGE config option which is mutual - exclusive with CONFIG_GRKERNSEC_PAX_SEGMEXEC b/c Segment exec - limit's userspace memory to 1.5GB and largepages do not make - any sense with it. - -There were some reports that VMware Workstation v4.0 will crash the kernel -with an OOPS. This is not the kernels fault b/c we also use /dev/epoll like -kernel >= 2.5.63 does, so VMware needed some modifications. There is an -uuencoded file named vmmon.tar.uue in ./userspace-patches. UUdecode this file -and replace the vmmon.tar file with the one you can find in your -lib/modules/source directory where you've installed vmware. For example: -/opt/vmware/lib/modules/source. After replacing this file, call -vmware-config.pl in your binary directory where vmware binaries are located. -Most important thing is to rebuild the vmware modules. Say 'yes' if the -configuration asks for replacing the modules in your kernel module directory -in /lib/modules/2.4.20-wolk4.0s/misc - - - -Changelog from v4.0s-rc5 -> v4.0s-rc6 -------------------------------------- - there was no -rc6 due to naming problems. -rc6 was - -pre-final but that naming decisions were bad :( Sorry! - - -Changelog from v4.0s-rc4 -> v4.0s-rc5 -------------------------------------- -+ added: rsbac v1.2.1 -+ added: Compressed Loop (cloop) v0.67 -o fixed: ELEVATOR_* not defined errors -o fixed: TIMESLICE_GRANULARITY not defined -o fixed: another famous DRM memory leak ;p -o fixed: unresolved symbol: acpi_get_firmware_table -o fixed: IMQ: undefined reference to `local symbols in discarded - section .text.exit -o fixed: rmap VM: lock ordering -o fixed: rmap VM: missing barrier(); -o fixed: null pointer dereference oops in ptrace fix *doh* -o updated: Memory Pools code for 2.4.20 -o updated: 3ware Driver v1.02.00.032 -o updated: HTB v3.10 -o updated: Super FreeS/WAN v1.99.6.1 Final -o updated: JFS v1.1.2 -o updated: epoll 2.4.20 v0.63 -o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-03-28 -o updated: IPMI Driver v19 -o updated: grsecurity v1.99f Final -o updated: Bonding v2.4.20-20030320 -o updated: XFS v1.2-cvs as of 2003-04-07 -o updated: kdb v4.1 - - -Changelog from v4.0s-rc3 -> v4.0s-rc4 -------------------------------------- -o added: "reallyquiet" boot option to shut up all console log level output -o added: This is important! - Use a sched_yield that scales well by default, this should - help with JVM or applications with huge lock contention in - the current libpthread, but it will hurt interactivity - of those apps if there's some background load. For OpenOffice - and/or KDE set the sysctl back to 0, you don't mind if - sched_yield doesn't allow the colliding-workloads to scale - well. The scale-behaviour is also the preferred one for all - sched_yield usages in the kernel. Over time nothing should call - sched_yield() anymore, this is an hack for now. -o fixed: "local users can obtain full privileges" exploit (CAN-2003-0127) -o fixed: some rmap VM merge errors in v4.0s-pre releases -o fixed: annoying bug where opening a new xterm/aterm/$whatever term will - pause a video playing for a second -o fixed: annoying bug where calling "mailq from sendmail" will also pause - a video playing for a second -o fixed: Error out for the case of a gcc-2.96 compiler with - CONFIG_FRAME_POINTER set. It generates seriously incorrect code. -o fixed: missing cli() in isdn_net.c -o fixed: procfs memory leak -o fixed: Intel e100 network driver memory leak -o fixed: Aironet 4500 Pcmcia driver memory leak -o fixed: drivers/usb/hub.c memory leak -o fixed: emu10k1 memory leak -o fixed: Internet PhoneJACK driver memory leak -o fixed: Windows Logical Disk Manager partition handler memory leak -o fixed: Specialix SX series cards driver memory leak -o fixed: ircomm_core memory leak -o fixed: i2o_core.c memory leak -o fixed: dpt_i2o.c fix for possibly memory corruption on reset timeout -o fixed: Essential RoadRunner HIPPI board driver memory leak -o fixed: drivers/scsi/cpqfcTSinit.c memory leak -o fixed: 802.1q vlan proc memory leak -o fixed: IBM Hot Plug Controller Driver multiple memory leaks -o fixed: UFS memory leak -o fixed: rd_load_image() memory leak -o fixed: bh_kmap_irq() breaks IDE with Preempt -o fixed: another potential deadlock in ll_rw_block -o fixed: gcc >= v3.3.1 inlining bugs -o fixed: Toshiba keyboard sometimes send a key twice -o fixed: reiserfs: Make balloc[] tails[] and hash[] in super.c static -o fixed: reiserfs: gcc v3.3 compile fix -o fixed: JFS: collision with blk-atomic -o fixed: Ext2/3: noatime ignored for newly created inodes -o fixed: anti-deadlock for the o1 scheduler that can otherwise send - a cross IPI with irq disabled. -o updated: ACPI v2003-03-21 -+ updated: Systrace v1.1 -o updated: rmap VM v15e - - make reclaiming unused inodes more efficient - - fix DRM memory leak - - fix potential infinite loop in kswapd - - clean up elevator.h (no IO scheduler in -rmap...) - - page aging interval tuned on a per zone basis, better - wakeup mechanism for sudden memory pressure -o updated: CPU Frequency scaling v2.4.20-9 -o updated: XFS v1.2-cvs as of 2003-03-19 -o updated: kdb v4.0 -o updated: Super FreeS/WAN v1.99.6 Final -o updated: grsecurity v1.99e Final -o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-03-18 -o updated: ext3 htree code for 2.4.21-pre5 2nd update -o updated: Orlov ext2/ext3 block allocator code for 2.4.21-pre5 2nd update -o updated: from latest -AA: aio-18 -o updated: from latest -AA: kgdb-7 -o updated: Bonding v2.4.20-20030207 -o removed: ALSA v0.9.0-rc4: because no one makes 0.9.1 Final patch, so ... -o removed: LowLatency: because after some extensive benchmarking I saw that - it is slower than the lowlatency fixes in -AA. LowLatency has - also a deadlock possibility for SMP machines, the fixes not! -o removed: inode-highmem-2: because rmap has better/faster code now -o removed: iput_free(): because rmap has better/faster code now -o replaced: LowLatency in favor of lowlatency fixes from latest -AA - - -Changelog from v4.0s-rc2 -> v4.0s-rc3 -------------------------------------- -+ fixed: Intel i845 DMA timeouts -o fixed: another ISO9660 memleak -o fixed: ioremap off by one bug -o fixed: SMP deadlock in eepro100 network driver -o fixed: awfull throughput loss when uploading files via scp|nfs|ftp -o fixed: some silly EXPORT_SYMBOL_GPL -o updated: XFS v1.2-cvs as of 2003-03-09 -o updated: Super FreeS/WAN v1.99.6-rc2 -o updated: ext3 htree code for 2.4.21-pre5 -o updated: Orlov ext2/ext3 block allocator code for 2.4.21-pre5 - - -Changelog from v4.0s-rc1 -> v4.0s-rc2 -------------------------------------- -o re-added: silly mcp: removed an important SMP unbreakage patch -+ fixed: "CONFIG_X86_L1_CACHE_SHIFT redefined" errors -o fixed: RAID5 disasters -o fixed: handle SCSI recovered errors -o fixed: handle too large vmallocs gracefully -o fixed: xdr nfs highmem deadlock + symbol export fix -o fixed: get_vm_area -o fixed: UP local APIC on SMP Athlon -o fixed: initialisation of a stack of modules -o fixed: target_cpus() for APIC/UP/SMP problems -o fixed: rmap: Potential infinite loop around rebalance_dirty_zone() -o fixed: XFS+ACL + GRSEC+ACL not working correct -o fixed: reiserfs: possible transaction overflow when deleting highly - fragmented large files. -o updated: LVM v1.0.7 -o updated: Super FreeS/WAN v1.99.6-rc1 -o updated: Orinoco v0.13b -o updated: grsecurity v1.99d-CVS as of 2003-03-03 -o updated: IPMI Driver v18 -o updated: NTFS Driver 2.4.20 v2.1.1a -o updated: Broadcom Tigon3 v1.4c -o changed: "nfract" from vm.bdflush to 30 for Desktop Tweaks -o changed: made sysctl "Preempt Warnings" an config option - - -Changelog from v4.0s-pre10 -> v4.0s-rc1 ---------------------------------------- -o fixed: O_DIRECT correct EOF at end of reads -o fixed: UDF discs closed as iso9660 read errors -o fixed: wrong behavior buffer>2G write(2) on 64bit platforms -o updated: CPU Frequency scaling v2.4.20-8 -o updated: Super FreeS/WAN v1.99.5.1 Final -o updated: XFS v1.2-cvs as of 2003-02-16 -o updated: grsecurity v1.99d-CVS as of 2003-02-23 -o updated: ReiserFS data-logging v36-aa -o updated: PROCINFO support (fast ps) v2003-02-23 -o changed: enable SSE for later Athlons -o removed: Scheduler Tunables: slows down a bit and we now have - accurate defaults for Desktop and Server Scheduler tweaks. - If you still want to play with it, change them in kernel/sched.c - - -Changelog from v4.0s-pre9 -> 4.0s-pre10 ---------------------------------------- -o added: TCP/IP Low Latency via sysctl -o added: sys_sendfile64 -+ added: ./userspace-patches: linux-dvb-2002-12-08 for rmap15b -+ added: LSI MegaRAID support (driver series v2.00.2) -o added: check for swapon on mounted devices -o added: Opteron/Athlon64/Hammer/K8 support -+ re-added: vservers (ctx) v16 (non-breaking gradm version) -+ fixed: IPMI build error due to new ACPI merge in -pre9 -+ fixed: add missing bits from -ac ethernet packet padding fix - fixes 'skb_pad' unresolved symbols in many NIC drivers -+ fixed: some compiler warnings -o fixed: trivial NTFS build error -+ fixed: Unknown interrupt on some systems -o fixed: Failover routing -o fixed: PPC32 build errors -+ fixed: AMD K6 wrongly sets PGE=y - results in a nonbootable kernel -+ fixed: aic7xxx with firmware build enabled compile error -o fixed: make xconfig looks strange in the first menu -o fixed: SMP deadlock on some $MONSTERBOXEN -o fixed: nfs: mishandling of nfsroot port= option -o fixed: nfs: fixed SMP deadlock -o fixed: ext3fs: crash deleting a single non sparse file exceeding 1 Tb -o fixed: Disable Loop IV hack of CryptoAPI because we have loop-jari -+ updated: Matrox mga_vid / Radeon/Rage128 Driver -o updated: ReiserFS data-logging v35-aa -o updated: rmap VM v15d -o updated: XFS v1.2-cvs as of 2003-02-09 including kdb v3.0 -o updated: Super FreeS/WAN v1.99-kb4 Final -o updated: LSI MegaRAID support (driver series v1.18f) -o updated: Broadcom Tigon3 v1.4 -o updated: grsecurity v1.99c Final -o removed: kernel ksymoops: now also part of kdb v3.0 -o changed: Desktop Scheduler Tweaks: More interactivity -o changed: Disable EARLY_PRINTK config option and make it always-on. - Or: I don't like to receive emails anymore saying: - "My screen is black" ;) -o changed: braindead "Conntrack CLOSE_WAIT" from 3days to 2mins - - -Changelog from v4.0s-pre8 -> 4.0s-pre9 --------------------------------------- -o added: ReiserFS data-logging (requested alot) -o added: (V)FAT filemode/dirmode mount option (fmode=)/(dmode=) -o added: frlock-gettimeofday-1 - two sequence numbers to bring total SMP scalability to - gettimeofday and implements a frlock framework that can - replace read/write locks. -o fixed: Server Scheduler Tweak build error -o fixed: Since early 2.4 state: Silly depend config for miroPCM20 -o fixed: ALSA: unresolved symbols: un-/register_sound_midi -o fixed: unresolved symbols: 'port_acl_gid' / 'sock_raw_gid' -o fixed: three unresolved symbols when grsec is selected and - 'Unix domain sockets' is a module -o fixed: Strange Qlogic 2200 and such problems since early 2.4 state. -o fixed: iptables v1.27a build errors -o fixed: some very strange tmpfs problems if grsec is turned off - This was a grsecurity problem! -o fixed: ext3fs: rare BUG -o fixed: ext3fs: scheduling storm and lockup -o fixed: speedup "make dep" _alot_ -o fixed: Ethernet packet padding information leak (2.4ac) -o fixed: oops with ltp -o updated: grsecurity v1.99-CVS as of 2003-01-26 -o updated: Super FreeS/WAN v1.99-kb4-rc2 -o updated: LVM v1.0.6 -o updated: rawio-vary-io v17 -o updated: blk-atomic aa5 -o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-01-22 -o updated: ACPI v2003-01-23 -o updated: epoll 2.4.20 v0.62 -o updated: BTTV drivers v0.7.102 -o updated: Intel e100/e1000 driver + Fixes -o updated: SMP-timers A0 to co-exist with frlock-gettimeofday-1 - - -Changelog from v4.0s-pre7 -> 4.0s-pre8 --------------------------------------- -+ added: ALSA S/PDIF out for frequencies != 48 kHz for VIA -o added: Broadcom BCM4400 Network Driver v1.0.1 -o added: Sigma Designs Hollywood & Creative Labs DXR3 support v0.13.0 -o added: Support for Tulip based fibre cards (eg. SMC1255FTX) -+ fixed: IO TASKFILE default changed to NO -+ fixed: i82092.c: redefinition of `__module_license' -o fixed: ACPI <-> IPMI build error -o fixed: ACPI PCI HotPlug compile error due to new merge of ACPI -+ fixed: ALSA VIA82XX build error -+ fixed: Lower Netfilter debugging output (annoying) -o fixed: highmem I/O for qla2x00 driver -o fixed: prevent statfs overflow for huge NFS filesystems -o updated: grsecurity v1.99-rc3 -o updated: Broadcom BCM5700 Network Driver v5.0.17 -o updated: AMD-8111 based 10/100 Ethernet support v3.0.0 -o updated: PPP Microsoft encryption/compression (MPPE/MPPC) v0.96 -o updated: Syskonnect Driver sk98lin v6.02 -o updated: IPMI Driver v17 -o updated: XFS v1.2-cvs as of 2003-01-12 -o updated: some Documentation/Configure.help entries -o updated: Super FreeS/WAN v1.99-kb4-rc1 -o removed: vservers until it's #ifdef'ed for gradm breakage - - -Changelog from v4.0s-pre6 -> 4.0s-pre7 --------------------------------------- -o added: 3com 3c920 PCI Device ID -+ added: vservers (ctx) v16 -o added: BIOS Enhanced Disk Drive calls determine boot disk -o fixed: eliminate Netfilter addons which breaks standard - shipped iptables v1.2.7a -o fixed: allow people to build M686 without PGE kernels -o fixed: linux crash on boot with some boards -o fixed: MP oops -o fixed: ACPI IO-APIC boot for Pentium 4 -o fixed: exited with preempt count 1 if kernel boots/halts - This is a Preempt Patch issue, not WOLK ones! - Two simple unlock_kernel(); were missing. -o fixed: Logitech/Dexa QuickCam too much verbose output -+ fixed: missing bracket in kernel/sched.c for Server Scheduler Tweak -o fixed: PPC32 build problems -o fixed: Locking bug introduced by ext3fs updates from 2.4.21-pre2 -o fixed: i845G AGP Gart initialisation -o fixed: IPv6: Length of Authentication Extension Header -o fixed: O-PROFILE <-> rmap15b compile issues -o fixed: rage128_vid driver was never built -o updated: New Adaptec AIC7xxx/AIC79xx drivers v2003-01-07 -o updated: Super FreeS/WAN v1.99-kb3 Final -o updated: CPU Frequency scaling v2.4.20-5 -o updated: IPMI Driver v16 -o updated: ACPI v2003-01-09 -o change: Some more menu structures moved to seperated menus -o removed: Config option 'Disable ECN by default': totally useless - - -Changelog from v4.0s-pre5 -> 4.0s-pre6 --------------------------------------- -+ added: Extra Netfilter modules for IPv4 and IPv6 -o added: IMQ Target / Device -o added: Prioritized Accept Queue -o added: Preselections for Desktop and Server Scheduler -o added: New eepro100 PCI Device ID (0x1059) -o fixed: exited with preempt count 1 if kernel nfsd exits - This is a Preempt Patch issue, not WOLK ones! - A simple unlock_kernel(); was missing. -o fixed: IDE config for Promise/Highpoint RAID was bogus -o fixed: BTTV: another unresolved symbol if !CONFIG_SOUND -+ fixed: CRLF in net/bridge/aes* -o fixed: tmpfs strange problems -o fixed: ALSA OSS Sequencer was never built -o updated: CPU Frequency scaling v2.4.20-4 -o updated: Wireless LAN extensions v16 -o updated: grsecurity v1.9.8-cvs as of 2003-01-02 - + secure /dev/kmem & /dev/mem are now sysctl'able. - sysctl value: kernel.grsecurity.secure_mem = 1 -o updated: i2c v2.7.0-cvs as of 2003-01-02 -o updated: lmsensors v2.7.0-cvs as of 2003-01-02 -o change: OSS / ALSA are now in a seperated submenu "Sound" -o change: kHTTPd / TUX are now in a seperated submenu "Webserver" -o removed: TCP Zero Copy for mmapped files - (Bogus, wrong, stinks, caused problems) - - - -NOTE: All the things marked with "fixed" are VANILLA issues that are also -present in 2.4.18/2.4.19/2.4.20 and who knows what else versions, except the -latest 4 "fixed" were WOLK issues (AFS, VIA AGP, IDE-SCSI and 3c590/3c980). - -Changelog from v4.0s-pre4 -> 4.0s-pre5 --------------------------------------- -o added: Alcatel SpeedTouch USB modem support -o added: Creative SBLive! Audigy support -o added: TCP Zero Copy for mmapped files -o added: 32bit UID/GID support -o added: Encrypting ethernet bridge -o added: ebtales (firewalling) for ethernet bridge v2.0.003 + BridgeNF -o added: Soft-/Hard Limit of Filedescriptors -o added: Boot parameter "nolapic" do disable Local APIC -o added: SiS APM Workaround for old chipsets -o added: Show us the uptime at halt -o added: change console loglevel via SYSRQ (same as -c param for klogd) -o added: missing Configure.help entries (help for make menuconfig|xconfig) -o added: Config option to be able to disable the OOM killer -o added: Config option to be able to select -Os instead of -O2 -o fixed: Config entry "Ethernet (1000 Mbit)" was bogus -o fixed: Config entry "SCSI low-level drivers" was bogus -o fixed: VFAT file truncating -o fixed: grub cannot boot from /dev/rd/* -o fixed: DoS attack fd overflow (wtf not in vanilla? known since July 02) -o fixed: IDE-CD error while ripping audio-cd's on VIA VT8233 -o fixed: >2TB scsi error -o fixed: buffer overruns in /proc -o fixed: Samba >2GB file truncating error -o fixed: many missing license tags for drivers -o fixed: f00f_workaround_enabled undeclared if AMD K6 -o fixed: instability on some Abit mobo's w/o APIC workaround -o fixed: Promise PDC20265 not recognized correctly -o fixed: Wrong recognition of Seagate LBA-48 drives -o fixed: Crashes on 439HX chipsets because of missing settings in BIOS -o fixed: 3ware doesn't recognize old firmware cards -o fixed: some crashes on IBM laptops -o fixed: DVD ROM reading errors -o fixed: Garbage Collector for AF_UNIX socket races -o fixed: Radeon Framebuffer Mobility crashes -o fixed: Socket network access protocol races -o fixed: wrong processor cache detection if soft reboot -o fixed: PCI_DEVICE_ID_VIA_8633_5 undeclared -o fixed: NIC: 3c590/3c980 build error if static -o fixed: AFS compile error if static -o fixed: IDE-SCSI crash on some systems -o updated: grsecurity v1.9.8 final (ACL subsystem _works_ now :)) - It has still missing rmap15b support, so PaX won't work! :( -o updated: PROCINFO support (fast ps) v2002-12-31 -o change: max_loop = 16; max msg queue identifiers = 512; - max semaphore identifiers = 1024; -o change: default filepermissions on VFAT was rwx, now rw- - - -Changelog from v4.0s-pre3 -> 4.0s-pre4 --------------------------------------- -o added: Systrace v2.4.20 -+ added: Linux Trustees v2.10 -+ added: PSPA v2.4.19-16 -o added: VIA Apollo Pro266 AGP support -o added: DRBD v0.6.1 support -o added: panic(); Morse Code -o added: Unblank console if panic(); -o added: AFS documentation help / set up info -o added: Renice processes as a user in a special GID -o added: Magic SysRQ via /proc/sys/kernel/magickey -o added: BadMEM v4.9-rmap edition -o added: some DMI workarounds for broken IBM Laptops -o added: AMD Duron/Athlon SMP checkings -o added: ECC memory monitoring v20020904 -o fixed: Thread wait race -o fixed: RAID 0 (maybe 1/2/5/10) hang at boot -o fixed: ALSA: unresolved symbol snd_hack_usb_set_interface -o fixed: mmap.c:782: parse error before `unsigned' -o fixed: Annoying but super trivial AFS compile error - Now also works w/ Preempt. -o fixed: BTTV unresolved symbols if !CONFIG_SOUND and CONFIG_SOUND_ALSA -o fixed: ALSA Config.in showed slightly wrong info for VIA stuff -o fixed: tcp_v4_lookup_listener already defined problems -o change: OPEN_MAX 1024, NR_FILE 65536, NR_RESERVED_FILES 128 - TCP_KEEPALIVE_TIME (5*60*HZ), local_port_range 1024-9999 - - -Changelog from v4.0s-pre2 -> 4.0s-pre3 --------------------------------------- -o added: CIPE v1.5.4 -o added: F-RTO for dealing with spurious RTOs (from 2.4.21-BK) -o added: NVIDIA_kernel-1.0-4191 userspace patch for rmap15b issues - (find this in ./userspace-patches) -o added: Matrox mga_vid / Radeon/Rage128 Driver -o added: Work around BIOS problem with recent Athlons (from 2.4.21-BK) -o added: CPU Frequency scaling v2.4.20-3 + SMP fix -o fixed: tmpfs read hang (from 2.4.21-BK) -o fixed: USB: Logitech/Dexxa Quickcam build errors -o fixed: ieee1394 compile warning due to rmap15b -o fixed: CPiA Video For Linux crash if static build -o fixed: More vanilla build errors (ncpfs, intermezzo, parport etc.) -o updated: Bonding v2.4.20-20021210 -o updated: XFS v1.2-cvs as of 2002-12-27 -o updated: grsecurity v1.9.8-cvs as of 2002-12-27 - (ACL-subsystem is buggy yet) - - -Changelog from v4.0s-pre1 -> 4.0s-pre2 --------------------------------------- -o added: Some $CONFIG_MONSTERBOX code (highmem, bufferwaste etc.) -o added: blk-atomic-aa4 -o added: _LOTS_ of missing stuff for ppc32/ppc64: O(1) Scheduler and AIO. -o added: Memory eXpansion Technology (MXT) Support -o added: Deadman Timer -o added: Hangcheck {Timer|Comp|Thread|Delay} - - this code is wanted by the Oracle Community -o added: IBM Advanced System Management Service Processor support -o added: Intel VTune Support -o added: IP stealth -o added: grsecurity v1.9.8-cvs (ACL-subsystem is buggy yet) -o added: IP NMAP freak -o added: IP AntiDote2 (ARP attack detector) -o added: CiFS v0.5.8 -o added: MPPE/MPPC v0.94 -o added: LZS compression support v2.4.20 -o added: RAID speedups -o added: fast PID allocation (from LSE) -o added: SCSI idle -o added: USB: Logitech/Dexxa - QuickCam support -o added: NIC: WL24xx Wireless LAN Card Driver (boerde.de approved) -o added: NIC: SiS 900/7016 PCI Fast Ethernet Adapter support (old driver) -o added: NIC: SysKonnect SK-9Dxx support -o added: NIC: Netgear GA622T Gigabit UTP support -o added: NIC: Netgear GA621 Gigabit Fiber support -o added: NIC: Broadcom BCM5700 support -o added: NIC: AMD PCnet32 PCI support (old driver) -o added: NIC: AMD-8111 based 10/100 Ethernet support -o added: NIC: 3c590/3c980 B/C series "Cyclone/Hurricane/Tornado" support -o added: NIC: AT&T/Lucent Wavelan IEEE 802.11 wireless support -o added: NIC: Alternate Aironet 4500/4800 PCMCIA support -o added: SCSI: Tekram DC395/U/UW and DC315/U SCSI support -o added: SCSI: Single Driver Qlogic FC/SCSI support -o added: SCSI: Qlogic QLA 2XXX v6 FC SCSI support -o added: SCSI: Adaptec AIC79xx support -o added: SCSI: iSCSI support (SCSI-over-Network) v3.1.0.3 -o added: FTP file system support -o added: ALSA v.0.9.0-rc6 (yezz, you wanted it no? ;) -o fixed: Low-Latency vs. ext2|ext3|reiserfs|$whatever fs segfault bug - Thanks to Joachim for noticing this. -o removed: read-latency2 in favor of blk-atomic-aa4 (better) diff -Naurp linux-2.4.20-wolk4.11-fullkernel/WOLK-README linux-2.4.20-wolk4.12-fullkernel/WOLK-README --- linux-2.4.20-wolk4.11-fullkernel/WOLK-README 2004-04-02 00:27:53.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/WOLK-README 1970-01-01 01:00:00.000000000 +0100 @@ -1,64 +0,0 @@ -Kernel - patched - WOLK v4.11s - Base: Linux kernel 2.4.20 - located at http://sf.net/projects/wolk - by Marc-Christian Petersen --------------------------------------------------------------------------- - -Thanks to darix for the project name WOLK. - --------------------------------------------------------------------------- - -What is this? Why another patchset/patched kernel? - -Using Linux since years, very tired of there are not really good -patchsets available which adds many stuff like this. Saw FOLK -Patch/Kernel which is still very very buggy. - - -The WOLK's are stable and development kernels, containing many useful -patches from many projects. Use the Server Edition in production, -Workstation Edition at your own risk. Goal: Stability, Scalability, -Performance and Security. - -There will always be a new WOLK major release if there is a new final -kernel released. Minor releases only if someone/me found critical bugs, -or in case of some adds. - - --------------------------------------------------------------------------- -You are missing a patch? Patches will be added by request. -You think one or more of the patches are fully useless? Tell me why. - -You want YOUR Patch / other patches to be included ? -Let me know!! If you can, send your merge against wolk. --------------------------------------------------------------------------- - - -Mailinglists: -------------- -https://sourceforge.net/mail/?group_id=49048 - - -Some of the features: ---------------------- -O(1) Scheduler, RMAP VM, GRsecurity, Crypto, XFS, KDB, Preempt, Systrace, -Super FreeS/WAN, Trustees, IPVS, i2c/lmsensors, TUX, EVMS, BadMEM, ftpfs, -HostAP, all known security fixes, all known filesystem fixes, and many more. - - -Credits go to all the people who created the patches, working hard on -improving the quality. - - -Greetings: ----------- -- Matthias Mueller -- Kerin Millar -- Bob Johnson (WOLK suxx really hardcore eh? :p) - - - -Enjoy! - -Marc-Christian Petersen -Unix/Linux Administrator -Essen, Germany diff -Naurp linux-2.4.20-wolk4.11-fullkernel/WOLK-TODO linux-2.4.20-wolk4.12-fullkernel/WOLK-TODO --- linux-2.4.20-wolk4.11-fullkernel/WOLK-TODO 2004-04-02 00:27:04.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/WOLK-TODO 1970-01-01 01:00:00.000000000 +0100 @@ -1,40 +0,0 @@ -Todo for the next release (2.4.26-wolk5.0): -------------------------------------------- - -o ftp://ftp.kernel.org/pub/linux/kernel/people/jgarzik/patchkits/2.4/2.4.21-libata5.patch.gz - -o rmap - -o grsecurity2 - -o EVMS - -o Win4Lin v4.x / v5.x support (no reboots anymore. Dunno wtf it happens with recent WOLK v4.x) - -o Linux Trustees - -o Prio Accept Queue - -o PSPA - -o NetFilter Addons - -o Systrace - -o newest ACPI + tons auf thousand fixes - -o IDE fixes - -o OpenS/WAN v2.x branch - -o Better bleeding Edge Notebook/Laptop support - -o ignore unknown mount options (all filesystems!) - -o bproc - -o ext2/ext3 ACL/ATTR support (POSIX) - -o focus on mid-/highend machines - -o support for at least x86,x86_64,ppc64/sparc64 diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/alpha/config.in linux-2.4.20-wolk4.12-fullkernel/arch/alpha/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/alpha/config.in 2004-04-02 00:27:04.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/alpha/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -291,6 +291,9 @@ if [ "$CONFIG_BINFMT_AOUT" != "n" ]; the fi tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC tristate 'Kernel support for Linux/Intel ELF binaries' CONFIG_BINFMT_EM86 source drivers/parport/Config.in diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/alpha/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/alpha/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/alpha/defconfig 2004-04-02 00:27:04.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/alpha/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -71,6 +71,7 @@ CONFIG_KCORE_ELF=y # CONFIG_KCORE_AOUT is not set # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set # CONFIG_BINFMT_MISC is not set # CONFIG_BINFMT_EM86 is not set # CONFIG_OOM_PANIC is not set diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/arm/config.in linux-2.4.20-wolk4.12-fullkernel/arch/arm/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/arm/config.in 2004-04-02 00:27:04.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/arm/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -437,6 +437,9 @@ choice 'Kernel core (/proc/kcore) format A.OUT CONFIG_KCORE_AOUT" ELF tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC dep_bool 'Power Management support (experimental)' CONFIG_PM $CONFIG_EXPERIMENTAL dep_tristate 'RISC OS personality' CONFIG_ARTHUR $CONFIG_CPU_32 diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/arm/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/arm/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/arm/defconfig 2004-04-02 00:27:04.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/arm/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -83,8 +83,9 @@ CONFIG_SYSCTL=y CONFIG_NWFPE=y CONFIG_KCORE_ELF=y # CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y +# CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set # CONFIG_BINFMT_MISC is not set # CONFIG_PM is not set # CONFIG_ARTHUR is not set diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/cris/config.in linux-2.4.20-wolk4.12-fullkernel/arch/cris/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/cris/config.in 2004-04-02 00:27:04.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/cris/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -33,6 +33,9 @@ bool 'BSD Process Accounting' CONFIG_BSD bool 'Sysctl support' CONFIG_SYSCTL tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi bool 'Use kernel gdb debugger' CONFIG_ETRAX_KGDB diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/cris/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/cris/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/cris/defconfig 2004-04-02 00:27:04.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/cris/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -18,6 +18,7 @@ CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set # CONFIG_SYSCTL is not set CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set # CONFIG_ETRAX_KGDB is not set # CONFIG_ETRAX_WATCHDOG is not set # CONFIG_OOM_PANIC is not set diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/i386/config.in linux-2.4.20-wolk4.12-fullkernel/arch/i386/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/i386/config.in 2004-04-02 00:27:04.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/i386/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -166,7 +166,9 @@ if [ "$CONFIG_M686" = "y" ]; then define_bool CONFIG_X86_ALIGNMENT_16 y define_bool CONFIG_X86_HAS_TSC y define_bool CONFIG_X86_GOOD_APIC y - bool 'PGE extensions (not for Cyrix/Transmeta)' CONFIG_X86_PGE + if [ "$CONFIG_GRKERNSEC_PAX_KERNEXEC" != "y" ]; then + bool 'PGE extensions (not for Cyrix/Transmeta)' CONFIG_X86_PGE + fi define_bool CONFIG_X86_USE_PPRO_CHECKSUM y define_bool CONFIG_X86_PPRO_FENCE y define_bool CONFIG_X86_F00F_WORKS_OK y @@ -177,7 +179,9 @@ if [ "$CONFIG_VENDOR_INTEL" = "y" ]; the define_int CONFIG_X86_L1_CACHE_SHIFT 7 define_bool CONFIG_X86_HAS_TSC y define_bool CONFIG_X86_GOOD_APIC y - define_bool CONFIG_X86_PGE y + if [ "$CONFIG_GRKERNSEC_PAX_KERNEXEC" != "y" ]; then + define_bool CONFIG_X86_PGE y + fi define_bool CONFIG_X86_USE_PPRO_CHECKSUM y define_bool CONFIG_X86_F00F_WORKS_OK y fi @@ -187,7 +191,9 @@ if [ "$CONFIG_VENDOR_INTEL" = "y" ]; the define_bool CONFIG_X86_ALIGNMENT_16 y define_bool CONFIG_X86_HAS_TSC y define_bool CONFIG_X86_GOOD_APIC y - define_bool CONFIG_X86_PGE y + if [ "$CONFIG_GRKERNSEC_PAX_KERNEXEC" != "y" ]; then + define_bool CONFIG_X86_PGE y + fi define_bool CONFIG_X86_USE_PPRO_CHECKSUM y define_bool CONFIG_X86_F00F_WORKS_OK y define_bool CONFIG_X86_SFENCE y @@ -198,7 +204,9 @@ if [ "$CONFIG_VENDOR_INTEL" = "y" ]; the define_bool CONFIG_X86_ALIGNMENT_16 y define_bool CONFIG_X86_HAS_TSC y define_bool CONFIG_X86_GOOD_APIC y - define_bool CONFIG_X86_PGE y + if [ "$CONFIG_GRKERNSEC_PAX_KERNEXEC" != "y" ]; then + define_bool CONFIG_X86_PGE y + fi define_bool CONFIG_X86_USE_PPRO_CHECKSUM y define_bool CONFIG_X86_F00F_WORKS_OK y define_bool CONFIG_X86_SFENCE y @@ -225,7 +233,9 @@ if [ "$CONFIG_VENDOR_AMD" = "y" ]; then define_bool CONFIG_X86_HAS_TSC y define_bool CONFIG_X86_GOOD_APIC y define_bool CONFIG_X86_USE_3DNOW y - define_bool CONFIG_X86_PGE y + if [ "$CONFIG_GRKERNSEC_PAX_KERNEXEC" != "y" ]; then + define_bool CONFIG_X86_PGE y + fi define_bool CONFIG_X86_USE_PPRO_CHECKSUM y define_bool CONFIG_X86_F00F_WORKS_OK y define_bool CONFIG_X86_SFENCE y @@ -237,7 +247,9 @@ if [ "$CONFIG_VENDOR_AMD" = "y" ]; then define_bool CONFIG_X86_HAS_TSC y define_bool CONFIG_X86_GOOD_APIC y define_bool CONFIG_X86_USE_3DNOW y - define_bool CONFIG_X86_PGE y + if [ "$CONFIG_GRKERNSEC_PAX_KERNEXEC" != "y" ]; then + define_bool CONFIG_X86_PGE y + fi define_bool CONFIG_X86_USE_PPRO_CHECKSUM y define_bool CONFIG_X86_F00F_WORKS_OK y define_bool CONFIG_X86_SFENCE y @@ -249,7 +261,9 @@ if [ "$CONFIG_VENDOR_AMD" = "y" ]; then define_bool CONFIG_X86_HAS_TSC y define_bool CONFIG_X86_GOOD_APIC y define_bool CONFIG_X86_USE_3DNOW y - define_bool CONFIG_X86_PGE y + if [ "$CONFIG_GRKERNSEC_PAX_KERNEXEC" != "y" ]; then + define_bool CONFIG_X86_PGE y + fi define_bool CONFIG_X86_USE_PPRO_CHECKSUM y define_bool CONFIG_X86_F00F_WORKS_OK y define_bool CONFIG_X86_SFENCE y @@ -261,7 +275,9 @@ if [ "$CONFIG_VENDOR_AMD" = "y" ]; then define_bool CONFIG_X86_HAS_TSC y define_bool CONFIG_X86_GOOD_APIC y define_bool CONFIG_X86_USE_3DNOW y - define_bool CONFIG_X86_PGE y + if [ "$CONFIG_GRKERNSEC_PAX_KERNEXEC" != "y" ]; then + define_bool CONFIG_X86_PGE y + fi define_bool CONFIG_X86_USE_PPRO_CHECKSUM y define_bool CONFIG_X86_F00F_WORKS_OK y define_bool CONFIG_X86_SFENCE y @@ -273,7 +289,9 @@ if [ "$CONFIG_VENDOR_AMD" = "y" ]; then define_bool CONFIG_X86_HAS_TSC y define_bool CONFIG_X86_GOOD_APIC y define_bool CONFIG_X86_USE_3DNOW y - define_bool CONFIG_X86_PGE y + if [ "$CONFIG_GRKERNSEC_PAX_KERNEXEC" != "y" ]; then + define_bool CONFIG_X86_PGE y + fi define_bool CONFIG_X86_USE_PPRO_CHECKSUM y define_bool CONFIG_X86_F00F_WORKS_OK y define_bool CONFIG_X86_SFENCE y @@ -285,7 +303,9 @@ if [ "$CONFIG_VENDOR_AMD" = "y" ]; then define_bool CONFIG_X86_HAS_TSC y define_bool CONFIG_X86_GOOD_APIC y define_bool CONFIG_X86_USE_3DNOW y - define_bool CONFIG_X86_PGE y + if [ "$CONFIG_GRKERNSEC_PAX_KERNEXEC" != "y" ]; then + define_bool CONFIG_X86_PGE y + fi define_bool CONFIG_X86_USE_PPRO_CHECKSUM y define_bool CONFIG_X86_F00F_WORKS_OK y define_bool CONFIG_X86_SFENCE y @@ -562,6 +582,9 @@ if [ "$CONFIG_PROC_FS" = "y" ]; then fi tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC source drivers/apm/Config.in diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/i386/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/i386/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/i386/defconfig 2004-04-02 00:27:04.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/i386/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -161,7 +161,8 @@ CONFIG_KCORE_ELF=y # CONFIG_KCORE_AOUT is not set # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=m +# CONFIG_BINFMT_ELF_AOUT is not set +# CONFIG_BINFMT_MISC is not set # # Power Management support diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/i386/kernel/head.S linux-2.4.20-wolk4.12-fullkernel/arch/i386/kernel/head.S --- linux-2.4.20-wolk4.11-fullkernel/arch/i386/kernel/head.S 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/i386/kernel/head.S 2004-03-16 16:44:58.000000000 +0100 @@ -419,6 +419,11 @@ ENTRY(swapper_pg_dir) /* default: 254 entries */ .fill BOOT_KERNEL_PGD_PTRS-3,4,0 +#ifdef CONFIG_GRKERNSEC_PAX_KERNEXEC +ENTRY(kernexec_pg_dir) + .fill 1024,4,0 +#endif + /* * The page tables are initialized to only 8MB here - the final page * tables are set up later depending on memory size. diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/i386/kernel/setup.c linux-2.4.20-wolk4.12-fullkernel/arch/i386/kernel/setup.c --- linux-2.4.20-wolk4.11-fullkernel/arch/i386/kernel/setup.c 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/i386/kernel/setup.c 2004-03-16 16:45:06.000000000 +0100 @@ -3102,6 +3102,10 @@ void __init identify_cpu(struct cpuinfo_ break; } +#ifdef CONFIG_GRKERNSEC_PAX_KERNEXEC + clear_bit(X86_FEATURE_PGE, &c->x86_capability); +#endif + /* * The vendor-specific functions might have changed features. Now * we do "generic changes." diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/i386/kernel/traps.c linux-2.4.20-wolk4.12-fullkernel/arch/i386/kernel/traps.c --- linux-2.4.20-wolk4.11-fullkernel/arch/i386/kernel/traps.c 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/i386/kernel/traps.c 2004-03-16 16:45:13.000000000 +0100 @@ -967,17 +967,9 @@ void set_ldt_desc(unsigned int n, const { #ifdef CONFIG_GRKERNSEC_PAX_KERNEXEC - unsigned long temp, cr3; - pgd_t* pgd; - pmd_t* pmd; - - asm("movl %%cr3,%0":"=r" (cr3)); - for (temp = __KERNEL_TEXT_OFFSET; temp < __KERNEL_TEXT_OFFSET + 0x00400000UL; temp += (1UL << PMD_SHIFT)) { - pgd = (pgd_t *)__va(cr3) + __pgd_offset(temp); - pmd = pmd_offset(pgd, temp); - set_pmd(pmd, __pmd(pmd_val(*pmd) | _PAGE_RW)); - } - __flush_tlb_all(); + unsigned long flags, cr3; + + pax_open_kernel(flags, cr3); #endif _set_tssldt_desc(gdt_table+__LDT(n), (int)addr, ((size << 3)-1), 0x82); @@ -987,12 +979,7 @@ void set_ldt_desc(unsigned int n, const #endif #ifdef CONFIG_GRKERNSEC_PAX_KERNEXEC - for (temp = __KERNEL_TEXT_OFFSET; temp < __KERNEL_TEXT_OFFSET + 0x00400000UL; temp += (1UL << PMD_SHIFT)) { - pgd = (pgd_t *)__va(cr3) + __pgd_offset(temp); - pmd = pmd_offset(pgd, temp); - set_pmd(pmd, __pmd(pmd_val(*pmd) & ~_PAGE_RW)); - } - flush_tlb_all(); + pax_close_kernel(flags, cr3); #endif } diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/i386/mm/init.c linux-2.4.20-wolk4.12-fullkernel/arch/i386/mm/init.c --- linux-2.4.20-wolk4.11-fullkernel/arch/i386/mm/init.c 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/i386/mm/init.c 2004-03-16 16:45:17.000000000 +0100 @@ -334,6 +334,10 @@ void __init paging_init(void) __flush_tlb_all(); +#ifdef CONFIG_GRKERNSEC_PAX_KERNEXEC + memcpy(kernexec_pg_dir, swapper_pg_dir, sizeof(kernexec_pg_dir)); +#endif + #ifdef CONFIG_HIGHMEM kmap_init(); #endif @@ -638,6 +642,7 @@ void free_initmem(void) #endif /* PaX: make KERNEL_CS read-only */ + memcpy(kernexec_pg_dir, swapper_pg_dir, sizeof(kernexec_pg_dir)); for (addr = __KERNEL_TEXT_OFFSET; addr < __KERNEL_TEXT_OFFSET + 0x00400000UL; addr += (1UL << PMD_SHIFT)) { pgd_t *pgd; pmd_t *pmd; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/ia64/config.in linux-2.4.20-wolk4.12-fullkernel/arch/ia64/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/ia64/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/ia64/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -109,6 +109,9 @@ bool 'System V IPC' CONFIG_SYSVIPC bool 'BSD Process Accounting' CONFIG_BSD_PROCESS_ACCT bool 'Sysctl support' CONFIG_SYSCTL tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC if [ "$CONFIG_IA64_HP_SIM" = "n" ]; then diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/ia64/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/ia64/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/ia64/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/ia64/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -53,6 +53,7 @@ CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set # CONFIG_BINFMT_MISC is not set CONFIG_ACPI=y CONFIG_ACPI_EFI=y diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/m68k/config.in linux-2.4.20-wolk4.12-fullkernel/arch/m68k/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/m68k/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/m68k/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -101,6 +101,9 @@ if [ "$CONFIG_PROC_FS" = "y" ]; then fi tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC if [ "$CONFIG_AMIGA" = "y" ]; then diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/m68k/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/m68k/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/m68k/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/m68k/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -44,8 +44,9 @@ CONFIG_SYSVIPC=y CONFIG_SYSCTL=y CONFIG_KCORE_ELF=y # CONFIG_KCORE_AOUT is not set -CONFIG_BINFMT_AOUT=y +# CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set # CONFIG_BINFMT_MISC is not set CONFIG_ZORRO=y # CONFIG_AMIGA_PCMCIA is not set diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/mips/config-shared.in linux-2.4.20-wolk4.12-fullkernel/arch/mips/config-shared.in --- linux-2.4.20-wolk4.11-fullkernel/arch/mips/config-shared.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/mips/config-shared.in 2004-04-02 00:01:13.000000000 +0200 @@ -624,6 +624,9 @@ define_bool CONFIG_KCORE_ELF y define_bool CONFIG_KCORE_AOUT n define_bool CONFIG_BINFMT_AOUT n tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi dep_bool 'Kernel support for Linux/MIPS 32-bit binary compatibility' CONFIG_MIPS32_COMPAT $CONFIG_MIPS64 define_bool CONFIG_BINFMT_ELF32 $CONFIG_MIPS32_COMPAT diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/mips/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/mips/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/mips/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/mips/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -124,6 +124,7 @@ CONFIG_KCORE_ELF=y # CONFIG_KCORE_AOUT is not set # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set # CONFIG_MIPS32_COMPAT is not set # CONFIG_BINFMT_ELF32 is not set # CONFIG_BINFMT_MISC is not set diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/mips/kernel/irixelf.c linux-2.4.20-wolk4.12-fullkernel/arch/mips/kernel/irixelf.c --- linux-2.4.20-wolk4.11-fullkernel/arch/mips/kernel/irixelf.c 2002-11-29 00:53:10.000000000 +0100 +++ linux-2.4.20-wolk4.12-fullkernel/arch/mips/kernel/irixelf.c 2004-04-02 00:01:13.000000000 +0200 @@ -8,6 +8,7 @@ * Copyright 1993, 1994: Eric Youngdale (ericy@cais.com). */ +#include #include #include @@ -48,7 +49,12 @@ static int irix_core_dump(long signr, st extern int dump_fpu (elf_fpregset_t *); static struct linux_binfmt irix_format = { - NULL, THIS_MODULE, load_irix_binary, load_irix_library, + NULL, THIS_MODULE, load_irix_binary, +#ifdef CONFIG_BINFMT_ELF_AOUT + load_irix_library, +#else + NULL, +#endif irix_core_dump, PAGE_SIZE }; @@ -787,6 +793,7 @@ out_free_ph: goto out; } +#ifdef CONFIG_BINFMT_ELF_AOUT /* This is really simpleminded and specialized - we are loading an * a.out library that is given an ELF header. */ @@ -863,6 +870,7 @@ static int load_irix_library(struct file kfree(elf_phdata); return 0; } +#endif /* Called through irix_syssgi() to map an elf image given an FD, * a phdr ptr USER_PHDRP in userspace, and a count CNT telling how many diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/mips64/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/mips64/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/mips64/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/mips64/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -119,6 +119,7 @@ CONFIG_KCORE_ELF=y # CONFIG_KCORE_AOUT is not set # CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set CONFIG_MIPS32_COMPAT=y CONFIG_BINFMT_ELF32=y # CONFIG_BINFMT_MISC is not set diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/parisc/config.in linux-2.4.20-wolk4.12-fullkernel/arch/parisc/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/parisc/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/parisc/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -91,6 +91,9 @@ bool 'BSD Process Accounting' CONFIG_BSD bool 'Sysctl support' CONFIG_SYSCTL define_bool CONFIG_KCORE_ELF y tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for SOM binaries' CONFIG_BINFMT_SOM tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/parisc/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/parisc/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/parisc/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/parisc/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -60,6 +60,7 @@ CONFIG_SYSVIPC=y CONFIG_SYSCTL=y CONFIG_KCORE_ELF=y CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set CONFIG_BINFMT_SOM=y # CONFIG_BINFMT_MISC is not set # CONFIG_PM is not set diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/ppc/config.in linux-2.4.20-wolk4.12-fullkernel/arch/ppc/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/ppc/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/ppc/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -178,6 +178,7 @@ if [ "$CONFIG_PROC_FS" = "y" ]; then fi define_bool CONFIG_BINFMT_ELF y define_bool CONFIG_KERNEL_ELF y +bool 'ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC source drivers/pci/Config.in diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/ppc/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/ppc/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/ppc/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/ppc/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -58,7 +58,8 @@ CONFIG_SYSVIPC=y CONFIG_KCORE_ELF=y CONFIG_BINFMT_ELF=y CONFIG_KERNEL_ELF=y -CONFIG_BINFMT_MISC=m +# CONFIG_BINFMT_ELF_AOUT is not set +# CONFIG_BINFMT_MISC is not set CONFIG_PCI_NAMES=y CONFIG_HOTPLUG=y diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/ppc64/config.in linux-2.4.20-wolk4.12-fullkernel/arch/ppc64/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/ppc64/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/ppc64/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -76,6 +76,9 @@ if [ "$CONFIG_PROC_FS" = "y" ]; then fi bool 'Kernel support for 64 bit ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for 32 bit ELF binaries' CONFIG_BINFMT_ELF32 diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/ppc64/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/ppc64/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/ppc64/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/ppc64/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -49,6 +49,7 @@ CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_KCORE_ELF=y CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set CONFIG_BINFMT_ELF32=y # CONFIG_BINFMT_MISC is not set CONFIG_PCI_NAMES=y diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/s390/config.in linux-2.4.20-wolk4.12-fullkernel/arch/s390/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/s390/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/s390/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -61,6 +61,9 @@ bool 'BSD Process Accounting' CONFIG_BSD bool 'Sysctl support' CONFIG_SYSCTL define_bool CONFIG_KCORE_ELF y tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC bool 'Show crashed user process info' CONFIG_PROCESS_DEBUG bool 'Pseudo page fault support' CONFIG_PFAULT diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/s390/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/s390/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/s390/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/s390/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -44,6 +44,7 @@ CONFIG_SYSVIPC=y CONFIG_SYSCTL=y CONFIG_KCORE_ELF=y CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set # CONFIG_BINFMT_MISC is not set # CONFIG_PROCESS_DEBUG is not set CONFIG_PFAULT=y diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/s390x/config.in linux-2.4.20-wolk4.12-fullkernel/arch/s390x/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/s390x/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/s390x/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -64,6 +64,9 @@ bool 'BSD Process Accounting' CONFIG_BSD bool 'Sysctl support' CONFIG_SYSCTL define_bool CONFIG_KCORE_ELF y tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC bool 'Show crashed user process info' CONFIG_PROCESS_DEBUG bool 'Pseudo page fault support' CONFIG_PFAULT diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/s390x/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/s390x/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/s390x/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/s390x/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -45,6 +45,7 @@ CONFIG_SYSVIPC=y CONFIG_SYSCTL=y CONFIG_KCORE_ELF=y CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set # CONFIG_BINFMT_MISC is not set # CONFIG_PROCESS_DEBUG is not set CONFIG_PFAULT=y diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/sh/config.in linux-2.4.20-wolk4.12-fullkernel/arch/sh/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/sh/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/sh/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -213,6 +213,9 @@ if [ "$CONFIG_PROC_FS" = "y" ]; then A.OUT CONFIG_KCORE_AOUT" ELF fi tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC source drivers/parport/Config.in diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/sh/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/sh/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/sh/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/sh/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -48,6 +48,7 @@ CONFIG_CF_ENABLER=y CONFIG_KCORE_ELF=y # CONFIG_KCORE_AOUT is not set CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set # CONFIG_BINFMT_MISC is not set # CONFIG_OOM_PANIC is not set CONFIG_OOM_KILL=y diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/sparc/config.in linux-2.4.20-wolk4.12-fullkernel/arch/sparc/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/sparc/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/sparc/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -76,6 +76,9 @@ if [ "$CONFIG_PROC_FS" = "y" ]; then fi tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC bool 'SunOS binary emulation' CONFIG_SUNOS_EMUL source drivers/parport/Config.in diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/sparc/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/sparc/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/sparc/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/sparc/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -49,9 +49,10 @@ CONFIG_SYSVIPC=y # CONFIG_BSD_PROCESS_ACCT is not set CONFIG_SYSCTL=y CONFIG_KCORE_ELF=y -CONFIG_BINFMT_AOUT=y +# CONFIG_BINFMT_AOUT is not set CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=m +# CONFIG_BINFMT_ELF_AOUT is not set +# CONFIG_BINFMT_MISC is not set CONFIG_SUNOS_EMUL=y # CONFIG_OOM_PANIC is not set CONFIG_OOM_KILL=y diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/sparc64/config.in linux-2.4.20-wolk4.12-fullkernel/arch/sparc64/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/sparc64/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/sparc64/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -79,6 +79,9 @@ if [ "$CONFIG_SPARC32_COMPAT" != "n" ]; bool ' Kernel support for 32-bit (ie. SunOS) a.out binaries' CONFIG_BINFMT_AOUT32 fi tristate 'Kernel support for 64-bit ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC bool 'SunOS binary emulation' CONFIG_SUNOS_EMUL if [ "$CONFIG_EXPERIMENTAL" = "y" ]; then diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/sparc64/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/sparc64/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/sparc64/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/sparc64/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -55,7 +55,8 @@ CONFIG_SPARC32_COMPAT=y CONFIG_BINFMT_ELF32=y # CONFIG_BINFMT_AOUT32 is not set CONFIG_BINFMT_ELF=y -CONFIG_BINFMT_MISC=m +# CONFIG_BINFMT_ELF_AOUT is not set +# CONFIG_BINFMT_MISC is not set # CONFIG_SUNOS_EMUL is not set CONFIG_SOLARIS_EMUL=m CONFIG_NR_CPUS=2 diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/x86_64/config.in linux-2.4.20-wolk4.12-fullkernel/arch/x86_64/config.in --- linux-2.4.20-wolk4.11-fullkernel/arch/x86_64/config.in 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/x86_64/config.in 2004-04-02 00:01:13.000000000 +0200 @@ -108,6 +108,9 @@ if [ "$CONFIG_PROC_FS" = "y" ]; then fi #tristate 'Kernel support for a.out binaries' CONFIG_BINFMT_AOUT tristate 'Kernel support for ELF binaries' CONFIG_BINFMT_ELF +if [ "$CONFIG_BINFMT_ELF" != "n" ]; then + bool ' ELF binaries with a.out format interpreters or a.out libraries' CONFIG_BINFMT_ELF_AOUT +fi tristate 'Kernel support for MISC binaries' CONFIG_BINFMT_MISC bool 'Power Management support' CONFIG_PM diff -Naurp linux-2.4.20-wolk4.11-fullkernel/arch/x86_64/defconfig linux-2.4.20-wolk4.12-fullkernel/arch/x86_64/defconfig --- linux-2.4.20-wolk4.11-fullkernel/arch/x86_64/defconfig 2004-04-02 00:27:05.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/arch/x86_64/defconfig 2004-04-02 00:01:13.000000000 +0200 @@ -63,6 +63,7 @@ CONFIG_SYSVIPC=y CONFIG_SYSCTL=y CONFIG_KCORE_ELF=y CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_ELF_AOUT is not set # CONFIG_BINFMT_MISC is not set CONFIG_PM=y CONFIG_IA32_EMULATION=y diff -Naurp linux-2.4.20-wolk4.11-fullkernel/drivers/ide/ide-disk.c linux-2.4.20-wolk4.12-fullkernel/drivers/ide/ide-disk.c --- linux-2.4.20-wolk4.11-fullkernel/drivers/ide/ide-disk.c 2004-04-02 00:27:09.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/drivers/ide/ide-disk.c 2004-04-01 23:37:55.000000000 +0200 @@ -1155,25 +1155,15 @@ static void init_idedisk_capacity (ide_d { struct hd_driveid *id = drive->id; unsigned long capacity = drive->cyl * drive->head * drive->sect; - unsigned long set_max = idedisk_read_native_max_address(drive); + int have_setmax = idedisk_supports_host_protected_area(drive); + unsigned long set_max = + (have_setmax ? idedisk_read_native_max_address(drive) : 0); unsigned long long capacity_2 = capacity; unsigned long long set_max_ext; - // if the disk claims to be LBA-48, and yet has a capacity of 0, - // it's fairly safe to say that the firmware doesn't comply with ATA-7 - if ((id->cfs_enable_2 & 0x0400) && (id->lba_capacity_2==0)) { - printk ("%s: Broken firmware - this is NOT an LBA-48 drive!\n",drive->name); - printk ("%s: Disabling LBA-48 addressing for this drive!\n",drive->name); - - //reset bit 10 so that we can use the disk in a non LBA-48 fashion - id->cfs_enable_2 &= ~ 0x0400; - } - drive->capacity48 = 0; drive->select.b.lba = 0; - (void) idedisk_supports_host_protected_area(drive); - if (id->cfs_enable_2 & 0x0400) { capacity_2 = id->lba_capacity_2; drive->head = drive->bios_head = 255; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/drivers/ide/pci/amd74xx.c linux-2.4.20-wolk4.12-fullkernel/drivers/ide/pci/amd74xx.c --- linux-2.4.20-wolk4.11-fullkernel/drivers/ide/pci/amd74xx.c 2004-04-02 00:27:10.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/drivers/ide/pci/amd74xx.c 2004-03-16 14:48:47.000000000 +0100 @@ -1,7 +1,7 @@ /* - * Version 2.10 + * Version 2.13 * - * AMD 755/756/766/8111 and nVidia nForce IDE driver for Linux. + * AMD 755/756/766/8111 and nVidia nForce/2/2s/3/3s IDE driver for Linux. * * Copyright (c) 2000-2002 Vojtech Pavlik * @@ -44,6 +44,7 @@ #define AMD_CHECK_SWDMA 0x08 #define AMD_BAD_SWDMA 0x10 #define AMD_BAD_FIFO 0x20 +#define AMD_CHECK_SERENADE 0x40 /* * AMD SouthBridge chips. @@ -51,34 +52,32 @@ static struct amd_ide_chip { unsigned short id; - unsigned char rev; unsigned long base; unsigned char flags; } amd_ide_chips[] = { - { PCI_DEVICE_ID_AMD_COBRA_7401, 0x00, 0x40, AMD_UDMA_33 | AMD_BAD_SWDMA }, /* AMD-755 Cobra */ - { PCI_DEVICE_ID_AMD_VIPER_7409, 0x00, 0x40, AMD_UDMA_66 | AMD_CHECK_SWDMA }, /* AMD-756 Viper */ - { PCI_DEVICE_ID_AMD_VIPER_7411, 0x00, 0x40, AMD_UDMA_100 | AMD_BAD_FIFO }, /* AMD-766 Viper */ - { PCI_DEVICE_ID_AMD_OPUS_7441, 0x00, 0x40, AMD_UDMA_100 }, /* AMD-768 Opus */ - { PCI_DEVICE_ID_AMD_8111_IDE, 0x00, 0x40, AMD_UDMA_100 }, /* AMD-8111 */ - { PCI_DEVICE_ID_NVIDIA_NFORCE_IDE, 0x00, 0x50, AMD_UDMA_100 }, /* nVidia nForce */ - { PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE, 0x00, 0x50, AMD_UDMA_133 }, /* nVidia nForce2 */ - { PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE, 0x00, 0x50, AMD_UDMA_133 }, /* nVidia nForce2s */ - { PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA, 0x00, 0x50, AMD_UDMA_133 }, /* nVidia nForce2s SATA */ - { PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE, 0x00, 0x50, AMD_UDMA_133 }, /* NVIDIA nForce3 */ - { PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE, 0x00, 0x50, AMD_UDMA_133 }, /* NVIDIA nForce3s */ - { PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA, 0x00, 0x50, AMD_UDMA_133 }, /* NVIDIA nForce3s SATA */ - { PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2, 0x00, 0x50, AMD_UDMA_133 }, /* NVIDIA nForce3s SATA2 */ - + { PCI_DEVICE_ID_AMD_COBRA_7401, 0x40, AMD_UDMA_33 | AMD_BAD_SWDMA }, + { PCI_DEVICE_ID_AMD_VIPER_7409, 0x40, AMD_UDMA_66 | AMD_CHECK_SWDMA }, + { PCI_DEVICE_ID_AMD_VIPER_7411, 0x40, AMD_UDMA_100 | AMD_BAD_FIFO }, + { PCI_DEVICE_ID_AMD_OPUS_7441, 0x40, AMD_UDMA_100 }, + { PCI_DEVICE_ID_AMD_8111_IDE, 0x40, AMD_UDMA_133 | AMD_CHECK_SERENADE }, + { PCI_DEVICE_ID_NVIDIA_NFORCE_IDE, 0x50, AMD_UDMA_100 }, + { PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE, 0x50, AMD_UDMA_133 }, + { PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE, 0x50, AMD_UDMA_133 }, + { PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA, 0x50, AMD_UDMA_133 }, + { PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE, 0x50, AMD_UDMA_133 }, + { PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE, 0x50, AMD_UDMA_133 }, + { PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA, 0x50, AMD_UDMA_133 }, + { PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2, 0x50, AMD_UDMA_133 }, { 0 } }; static struct amd_ide_chip *amd_config; -static unsigned char amd_enabled; +static ide_pci_device_t *amd_chipset; static unsigned int amd_80w; static unsigned int amd_clock; -static unsigned char amd_cyc2udma[] = { 6, 6, 5, 4, 0, 1, 1, 2, 2, 3, 3, 7 }; -static unsigned char amd_udma2cyc[] = { 4, 6, 8, 10, 3, 2, 1, 0 }; +static unsigned char amd_cyc2udma[] = { 6, 6, 5, 4, 0, 1, 1, 2, 2, 3, 3, 3, 3, 3, 3, 7 }; +static unsigned char amd_udma2cyc[] = { 4, 6, 8, 10, 3, 2, 1, 15 }; static char *amd_dma[] = { "MWDMA16", "UDMA33", "UDMA66", "UDMA100", "UDMA133" }; /* @@ -111,7 +110,7 @@ static int amd74xx_get_info(char *buffer amd_print("----------AMD BusMastering IDE Configuration----------------"); - amd_print("Driver Version: 2.10"); + amd_print("Driver Version: 2.13"); amd_print("South Bridge: %s", bmide_dev->name); pci_read_config_byte(dev, PCI_REVISION_ID, &t); @@ -161,7 +160,8 @@ static int amd74xx_get_info(char *buffer cycle[i] = 666666 / amd_clock; continue; } - if (den[i] && uen[i] && udma[i] == 0) { + + if (den[i] && uen[i] && udma[i] == 15) { speed[i] = amd_clock * 4; cycle[i] = 500000 / amd_clock; continue; @@ -212,7 +212,7 @@ static void amd_set_speed(struct pci_dev case AMD_UDMA_33: t = timing->udma ? (0xc0 | (FIT(timing->udma, 2, 5) - 2)) : 0x03; break; case AMD_UDMA_66: t = timing->udma ? (0xc0 | amd_cyc2udma[FIT(timing->udma, 2, 10)]) : 0x03; break; case AMD_UDMA_100: t = timing->udma ? (0xc0 | amd_cyc2udma[FIT(timing->udma, 1, 10)]) : 0x03; break; - case AMD_UDMA_133: t = timing->udma ? (0xc0 | amd_cyc2udma[FIT(timing->udma, 1, 11)]) : 0x03; break; + case AMD_UDMA_133: t = timing->udma ? (0xc0 | amd_cyc2udma[FIT(timing->udma, 1, 15)]) : 0x03; break; default: return; } @@ -246,12 +246,8 @@ static int amd_set_drive(ide_drive_t *dr ide_timing_merge(&p, &t, &t, IDE_TIMING_8BIT); } - /* - * AMD / nForce UDMA timing register should really be programmed - * based on UDMA mode not UDMA cycle time... - */ if (speed == XFER_UDMA_5 && amd_clock <= 33333) t.udma = 1; - if (speed == XFER_UDMA_6 && amd_clock <= 33333) t.udma = 11; + if (speed == XFER_UDMA_6 && amd_clock <= 33333) t.udma = 15; amd_set_speed(HWIF(drive)->pci_dev, drive->dn, &t); @@ -269,9 +265,6 @@ static int amd_set_drive(ide_drive_t *dr static void amd74xx_tune_drive(ide_drive_t *drive, u8 pio) { - if (!((amd_enabled >> HWIF(drive)->channel) & 1)) - return; - if (pio == 255) { amd_set_drive(drive, ide_find_best_mode(drive, XFER_PIO | XFER_EPIO)); return; @@ -338,7 +331,8 @@ static unsigned int __init init_chipset_ amd_80w = ((t & 0x3) ? 1 : 0) | ((t & 0xc) ? 2 : 0); for (i = 24; i >= 0; i -= 8) if (((u >> i) & 4) && !(amd_80w & (1 << (1 - (i >> 4))))) { - printk(KERN_WARNING "AMD_IDE: Bios didn't set cable bits correctly. Enabling workaround.\n"); + printk(KERN_WARNING "%s: BIOS didn't set cable bits correctly. Enabling workaround.\n", + amd_chipset->name); amd_80w |= (1 << (1 - (i >> 4))); } break; @@ -351,9 +345,6 @@ static unsigned int __init init_chipset_ break; } - pci_read_config_dword(dev, AMD_IDE_ENABLE, &u); - amd_enabled = ((u & 1) ? 2 : 0) | ((u & 2) ? 1 : 0); - /* * Take care of prefetch & postwrite. */ @@ -363,6 +354,15 @@ static unsigned int __init init_chipset_ (amd_config->flags & AMD_BAD_FIFO) ? (t & 0x0f) : (t | 0xf0)); /* + * Take care of incorrectly wired Serenade mainboards. + */ + + if ((amd_config->flags & AMD_CHECK_SERENADE) && + dev->subsystem_vendor == PCI_VENDOR_ID_AMD && + dev->subsystem_device == PCI_DEVICE_ID_AMD_SERENADE) + amd_config->flags = AMD_UDMA_100; + +/* * Determine the system bus clock. */ @@ -375,8 +375,10 @@ static unsigned int __init init_chipset_ } if (amd_clock < 20000 || amd_clock > 50000) { - printk(KERN_WARNING "AMD_IDE: User given PCI clock speed impossible (%d), using 33 MHz instead.\n", amd_clock); - printk(KERN_WARNING "AMD_IDE: Use ide0=ata66 if you want to assume 80-wire cable\n"); + printk(KERN_WARNING "%s: User given PCI clock speed impossible (%d), using 33 MHz instead.\n", + amd_chipset->name, amd_clock); + printk(KERN_WARNING "%s: Use ide0=ata66 if you want to assume 80-wire cable\n", + amd_chipset->name); amd_clock = 33333; } @@ -385,8 +387,8 @@ static unsigned int __init init_chipset_ */ pci_read_config_byte(dev, PCI_REVISION_ID, &t); - printk(KERN_INFO "AMD_IDE: %s (rev %02x) %s controller on pci%s\n", - dev->name, t, amd_dma[amd_config->flags & AMD_UDMA], dev->slot_name); + printk(KERN_INFO "%s: %s (rev %02x) %s controller\n", + amd_chipset->name, pci_name(dev), t, amd_dma[amd_config->flags & AMD_UDMA]); /* * Register /proc/ide/amd74xx entry @@ -401,15 +403,9 @@ static unsigned int __init init_chipset_ } #endif /* DISPLAY_AMD_TIMINGS && CONFIG_PROC_FS */ - return dev->irq; } -static unsigned int __init ata66_amd74xx(ide_hwif_t *hwif) -{ - return ((amd_enabled & amd_80w) >> hwif->channel) & 1; -} - static void __init init_hwif_amd74xx(ide_hwif_t *hwif) { int i; @@ -434,8 +430,8 @@ static void __init init_hwif_amd74xx(ide hwif->mwdma_mask = 0x07; hwif->swdma_mask = 0x07; - if (!(hwif->udma_four)) - hwif->udma_four = ((amd_enabled & amd_80w) >> hwif->channel) & 1; + if (!hwif->udma_four) + hwif->udma_four = (amd_80w >> hwif->channel) & 1; hwif->ide_dma_check = &amd74xx_ide_dma_check; if (!noautodma) hwif->autodma = 1; @@ -443,43 +439,31 @@ static void __init init_hwif_amd74xx(ide hwif->drives[1].autodma = hwif->autodma; } -/* - * We allow the BM-DMA driver only work on enabled interfaces. - */ - -static void __init init_dma_amd74xx(ide_hwif_t *hwif, unsigned long dmabase) -{ - if ((amd_enabled >> hwif->channel) & 1) - ide_setup_dma(hwif, dmabase, 8); -} - -extern void ide_setup_pci_device(struct pci_dev *, ide_pci_device_t *); - static int __devinit amd74xx_probe(struct pci_dev *dev, const struct pci_device_id *id) { - ide_pci_device_t *d = amd74xx_chipsets + id->driver_data; + amd_chipset = amd74xx_chipsets + id->driver_data; amd_config = amd_ide_chips + id->driver_data; - if (dev->device != d->device) BUG(); + if (dev->device != amd_chipset->device) BUG(); if (dev->device != amd_config->id) BUG(); - ide_setup_pci_device(dev, d); + ide_setup_pci_device(dev, amd_chipset); MOD_INC_USE_COUNT; return 0; } static struct pci_device_id amd74xx_pci_tbl[] __devinitdata = { - { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_COBRA_7401, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0}, - { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7409, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1}, - { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7411, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2}, - { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_OPUS_7441, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3}, - { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8111_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4}, - { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 5}, - { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 6}, - { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 7}, - { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8}, - { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 9}, - { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 10}, - { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 11}, - { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 12}, + { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_COBRA_7401, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 0 }, + { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7409, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 1 }, + { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_VIPER_7411, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 2 }, + { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_OPUS_7441, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 3 }, + { PCI_VENDOR_ID_AMD, PCI_DEVICE_ID_AMD_8111_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 4 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 5 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 6 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 7 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 8 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 9 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 10 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 11 }, + { PCI_VENDOR_ID_NVIDIA, PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2, PCI_ANY_ID, PCI_ANY_ID, 0, 0, 12 }, { 0, }, }; @@ -506,6 +490,4 @@ MODULE_AUTHOR("Vojtech Pavlik"); MODULE_DESCRIPTION("AMD PCI IDE driver"); MODULE_LICENSE("GPL"); -MODULE_DEVICE_TABLE(pci, amd74xx_pci_tbl); - EXPORT_NO_SYMBOLS; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/drivers/ide/pci/amd74xx.h linux-2.4.20-wolk4.12-fullkernel/drivers/ide/pci/amd74xx.h --- linux-2.4.20-wolk4.11-fullkernel/drivers/ide/pci/amd74xx.h 2004-04-02 00:27:10.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/drivers/ide/pci/amd74xx.h 2004-04-02 00:10:10.000000000 +0200 @@ -27,7 +27,6 @@ static ide_pci_host_proc_t amd74xx_procs static unsigned int init_chipset_amd74xx(struct pci_dev *, const char *); static void init_hwif_amd74xx(ide_hwif_t *); -static void init_dma_amd74xx(ide_hwif_t *, unsigned long); static ide_pci_device_t amd74xx_chipsets[] __devinitdata = { { /* 0 */ @@ -35,9 +34,7 @@ static ide_pci_device_t amd74xx_chipsets .device = PCI_DEVICE_ID_AMD_COBRA_7401, .name = "AMD7401", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x40,0x02,0x02}, {0x40,0x01,0x01}}, @@ -48,9 +45,7 @@ static ide_pci_device_t amd74xx_chipsets .device = PCI_DEVICE_ID_AMD_VIPER_7409, .name = "AMD7409", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x40,0x02,0x02}, {0x40,0x01,0x01}}, @@ -61,9 +56,7 @@ static ide_pci_device_t amd74xx_chipsets .device = PCI_DEVICE_ID_AMD_VIPER_7411, .name = "AMD7411", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x40,0x02,0x02}, {0x40,0x01,0x01}}, @@ -74,9 +67,7 @@ static ide_pci_device_t amd74xx_chipsets .device = PCI_DEVICE_ID_AMD_OPUS_7441, .name = "AMD7441", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x40,0x02,0x02}, {0x40,0x01,0x01}}, @@ -87,9 +78,7 @@ static ide_pci_device_t amd74xx_chipsets .device = PCI_DEVICE_ID_AMD_8111_IDE, .name = "AMD8111", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .autodma = AUTODMA, .channels = 2, .enablebits = {{0x40,0x02,0x02}, {0x40,0x01,0x01}}, @@ -101,9 +90,7 @@ static ide_pci_device_t amd74xx_chipsets .device = PCI_DEVICE_ID_NVIDIA_NFORCE_IDE, .name = "NFORCE", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x50,0x02,0x02}, {0x50,0x01,0x01}}, @@ -115,9 +102,7 @@ static ide_pci_device_t amd74xx_chipsets .device = PCI_DEVICE_ID_NVIDIA_NFORCE2_IDE, .name = "NFORCE2", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x50,0x02,0x02}, {0x50,0x01,0x01}}, @@ -127,86 +112,68 @@ static ide_pci_device_t amd74xx_chipsets { /* 7 */ .vendor = PCI_VENDOR_ID_NVIDIA, .device = PCI_DEVICE_ID_NVIDIA_NFORCE2S_IDE, - .name = "NFORCE2", + .name = "NFORCE2S", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x50,0x02,0x02}, {0x50,0x01,0x01}}, .bootable = ON_BOARD, - .extra = 0, }, { /* 8 */ .vendor = PCI_VENDOR_ID_NVIDIA, .device = PCI_DEVICE_ID_NVIDIA_NFORCE2S_SATA, - .name = "NFORCE2", + .name = "NFORCE2S-SATA", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x50,0x02,0x02}, {0x50,0x01,0x01}}, .bootable = ON_BOARD, - .extra = 0, }, { /* 9 */ .vendor = PCI_VENDOR_ID_NVIDIA, .device = PCI_DEVICE_ID_NVIDIA_NFORCE3_IDE, .name = "NFORCE3", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x50,0x02,0x02}, {0x50,0x01,0x01}}, .bootable = ON_BOARD, - .extra = 0, }, { /* 10 */ .vendor = PCI_VENDOR_ID_NVIDIA, .device = PCI_DEVICE_ID_NVIDIA_NFORCE3S_IDE, - .name = "NFORCE3", + .name = "NFORCE3S", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x50,0x02,0x02}, {0x50,0x01,0x01}}, .bootable = ON_BOARD, - .extra = 0, }, { /* 11 */ .vendor = PCI_VENDOR_ID_NVIDIA, .device = PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA, - .name = "NFORCE3", + .name = "NFORCE3S-SATA", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x50,0x02,0x02}, {0x50,0x01,0x01}}, .bootable = ON_BOARD, - .extra = 0, }, { /* 12 */ .vendor = PCI_VENDOR_ID_NVIDIA, .device = PCI_DEVICE_ID_NVIDIA_NFORCE3S_SATA2, - .name = "NFORCE3", + .name = "NFORCE3S-SATA2", .init_chipset = init_chipset_amd74xx, - .init_iops = NULL, .init_hwif = init_hwif_amd74xx, - .init_dma = init_dma_amd74xx, .channels = 2, .autodma = AUTODMA, .enablebits = {{0x50,0x02,0x02}, {0x50,0x01,0x01}}, .bootable = ON_BOARD, - .extra = 0, }, { .vendor = 0, diff -Naurp linux-2.4.20-wolk4.11-fullkernel/drivers/ide/raid/medley.c linux-2.4.20-wolk4.12-fullkernel/drivers/ide/raid/medley.c --- linux-2.4.20-wolk4.11-fullkernel/drivers/ide/raid/medley.c 2004-04-02 00:27:10.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/drivers/ide/raid/medley.c 2004-03-16 14:56:01.000000000 +0100 @@ -39,8 +39,14 @@ * * Change history: * + * 20040310 - thomas@horsten.com + * Removed C99 style variable declarations that confused gcc-2.x + * Fixed a bug where more than one RAID set would not be detected correctly + * General cleanup for submission to kernel + * * 20031012 - thomas@horsten.com * Added support for BLKRRPART ioctl to re-read partition table + * * 20030801 - thomas@horsten.com * First test release * @@ -72,12 +78,16 @@ #define MAX_MEDLEY_ARRAYS 4 /* - * Define this only if you are debugging the driver. + * Set to 1 only if you are debugging the driver, or if it doesn't work + * the way you expect and you want to to report it. + * + * This will produce lots of kernel messages, some of which might + * help me figure out what is going wrong). */ #define DEBUGGING_MEDLEY 0 #if DEBUGGING_MEDLEY -#define dprintk(fmt, args...) printk(fmt, ##args) +#define dprintk(fmt, args...) printk(fmt, ##args) #else #define dprintk(fmt, args...) #endif @@ -91,36 +101,36 @@ * We do not use all the fields, since we only support Striped Sets. */ struct medley_metadata { - u8 driveid0[46]; - u8 ascii_version[8]; - u8 driveid1[52]; - u32 total_sectors_low; - u32 total_sectors_high; - u16 reserved0; - u8 driveid2[142]; - u16 product_id; - u16 vendor_id; - u16 minor_ver; - u16 major_ver; - u16 creation_timestamp[3]; - u16 chunk_size; - u16 reserved1; - u8 drive_number; - u8 raid_type; - u8 drives_per_striped_set; - u8 striped_set_number; - u8 drives_per_mirrored_set; - u8 mirrored_set_number; - u32 rebuild_ptr_low; - u32 rebuild_ptr_high; - u32 incarnation_no; - u8 member_status; - u8 mirrored_set_state; - u8 reported_device_location; - u8 member_location; - u8 auto_rebuild; - u8 reserved3[17]; - u16 checksum; + u8 driveid0[46]; + u8 ascii_version[8]; + u8 driveid1[52]; + u32 total_sectors_low; + u32 total_sectors_high; + u16 reserved0; + u8 driveid2[142]; + u16 product_id; + u16 vendor_id; + u16 minor_ver; + u16 major_ver; + u16 creation_timestamp[3]; + u16 chunk_size; + u16 reserved1; + u8 drive_number; + u8 raid_type; + u8 drives_per_striped_set; + u8 striped_set_number; + u8 drives_per_mirrored_set; + u8 mirrored_set_number; + u32 rebuild_ptr_low; + u32 rebuild_ptr_high; + u32 incarnation_no; + u8 member_status; + u8 mirrored_set_state; + u8 reported_device_location; + u8 member_location; + u8 auto_rebuild; + u8 reserved3[17]; + u16 checksum; }; /* @@ -139,9 +149,9 @@ struct medley_array { int access; kdev_t members[MAX_DRIVES_PER_SET]; - struct block_device *bdev[MAX_DRIVES_PER_SET]; - + struct block_device *bdev[MAX_DRIVES_PER_SET]; }; + static struct medley_array raid[MAX_MEDLEY_ARRAYS]; /* @@ -149,12 +159,12 @@ static struct medley_array raid[MAX_MEDL * own (this will normally be 0, unless another ATARAID driver has * registered some arrays before us). */ -static int medley_devid_offset=0; +static int medley_devid_offset = 0; /* * This holds the number of detected arrays. */ -static int medley_arrays=0; +static int medley_arrays = 0; /* * Wait queue for opening device (used when re-reading partition table) @@ -164,22 +174,24 @@ static DECLARE_WAIT_QUEUE_HEAD(medley_wa /* * The interface functions used by the ataraid framework. */ -static int medley_open(struct inode * inode, struct file * filp); -static int medley_release(struct inode * inode, struct file * filp); -static int medley_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg); -static int medley_make_request (request_queue_t *q, int rw, struct buffer_head * bh); +static int medley_open(struct inode *inode, struct file *filp); +static int medley_release(struct inode *inode, struct file *filp); +static int medley_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg); +static int medley_make_request(request_queue_t * q, int rw, + struct buffer_head *bh); static struct raid_device_operations medley_ops = { - open: medley_open, - release: medley_release, - ioctl: medley_ioctl, - make_request: medley_make_request + open: medley_open, + release: medley_release, + ioctl: medley_ioctl, + make_request: medley_make_request }; /* * This is the list of devices to probe. */ -static const kdev_t probelist[]= { +static const kdev_t probelist[] = { MKDEV(IDE0_MAJOR, 0), MKDEV(IDE0_MAJOR, 64), MKDEV(IDE1_MAJOR, 0), @@ -194,67 +206,85 @@ static const kdev_t probelist[]= { MKDEV(IDE5_MAJOR, 64), MKDEV(IDE6_MAJOR, 0), MKDEV(IDE6_MAJOR, 64), - MKDEV(0,0) + MKDEV(0, 0) }; /* * Handler for ioctl calls to the virtual device */ -static int medley_ioctl(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg) +static int medley_ioctl(struct inode *inode, struct file *file, + unsigned int cmd, unsigned long arg) { unsigned int minor; unsigned long sectors; - int devminor = (inode->i_rdev >> SHIFT)&MAJOR_MASK; - int device = devminor-medley_devid_offset; + int devminor = (inode->i_rdev >> SHIFT) & MAJOR_MASK; + int device = devminor - medley_devid_offset; + int partition; dprintk("medley_ioctl\n"); - if (!inode || !inode->i_rdev) - { - return -EINVAL; - } - - minor = MINOR(inode->i_rdev)>>SHIFT; + minor = MINOR(inode->i_rdev) >> SHIFT; switch (cmd) { - case BLKGETSIZE: /* Return device size */ - if (!arg) return -EINVAL; - sectors = ataraid_gendisk.part[MINOR(inode->i_rdev)].nr_sects; + case BLKGETSIZE: /* Return device size */ + if (!arg) + return -EINVAL; + sectors = + ataraid_gendisk.part[MINOR(inode->i_rdev)].nr_sects; dprintk("medley_ioctl: BLKGETSIZE\n"); - if (MINOR(inode->i_rdev)&15) + if (MINOR(inode->i_rdev) & 15) return put_user(sectors, (unsigned long *) arg); - return put_user(raid[minor-medley_devid_offset].sectors, (unsigned long *) arg); + return put_user(raid[minor - medley_devid_offset].sectors, + (unsigned long *) arg); break; - case HDIO_GETGEO: - { - struct hd_geometry *loc = (struct hd_geometry *) arg; - unsigned short bios_cyl = (unsigned short)(raid[minor].sectors/255/63); /* truncate */ - - dprintk("medley_ioctl: HDIO_GETGEO\n"); - if (!loc) return -EINVAL; - if (put_user(255, (byte *) &loc->heads)) return -EFAULT; - if (put_user(63, (byte *) &loc->sectors)) return -EFAULT; - if (put_user(bios_cyl, (unsigned short *) &loc->cylinders)) return -EFAULT; - if (put_user((unsigned)ataraid_gendisk.part[MINOR(inode->i_rdev)].start_sect, - (unsigned long *) &loc->start)) return -EFAULT; - return 0; - } - - case HDIO_GETGEO_BIG: - { - struct hd_big_geometry *loc = (struct hd_big_geometry *) arg; - - dprintk("medley_ioctl: HDIO_GETGEO_BIG\n"); - if (!loc) return -EINVAL; - if (put_user(255, (byte *) &loc->heads)) return -EFAULT; - if (put_user(63, (byte *) &loc->sectors)) return -EFAULT; - if (put_user(raid[minor-medley_devid_offset].sectors/255/63, (unsigned int *) &loc->cylinders)) return -EFAULT; - if (put_user((unsigned)ataraid_gendisk.part[MINOR(inode->i_rdev)].start_sect, - (unsigned long *) &loc->start)) return -EFAULT; - return 0; - } + case HDIO_GETGEO: { + struct hd_geometry *loc = + (struct hd_geometry *) arg; + unsigned short bios_cyl = (unsigned short) + (raid[minor].sectors / 255 / 63); /* truncate */ + + dprintk("medley_ioctl: HDIO_GETGEO\n"); + if (!loc) + return -EINVAL; + if (put_user(255, (byte *) & loc->heads)) + return -EFAULT; + if (put_user(63, (byte *) & loc->sectors)) + return -EFAULT; + if (put_user + (bios_cyl, (unsigned short *) &loc->cylinders)) + return -EFAULT; + if (put_user + ((unsigned) ataraid_gendisk. + part[MINOR(inode->i_rdev)].start_sect, + (unsigned long *) &loc->start)) + return -EFAULT; + return 0; + } + + case HDIO_GETGEO_BIG: { + struct hd_big_geometry *loc = + (struct hd_big_geometry *) arg; + + dprintk("medley_ioctl: HDIO_GETGEO_BIG\n"); + if (!loc) + return -EINVAL; + if (put_user(255, (byte *) & loc->heads)) + return -EFAULT; + if (put_user(63, (byte *) & loc->sectors)) + return -EFAULT; + if (put_user + (raid[minor - medley_devid_offset].sectors / + 255 / 63, (unsigned int *) &loc->cylinders)) + return -EFAULT; + if (put_user + ((unsigned) ataraid_gendisk. + part[MINOR(inode->i_rdev)].start_sect, + (unsigned long *) &loc->start)) + return -EFAULT; + return 0; + } case BLKROSET: case BLKROGET: @@ -262,32 +292,36 @@ static int medley_ioctl(struct inode *in dprintk("medley_ioctl: BLK*\n"); return blk_ioctl(inode->i_rdev, cmd, arg); - case BLKRRPART: /* Re-read partition tables */ - if (!capable(CAP_SYS_ADMIN)) return -EACCES; - if (minor!=0) return -EINVAL; - if (atomic_read(&(raid[device].valid))==0) return -EINVAL; - - atomic_set(&(raid[device].valid),0); - if (raid[device].access != 1) - { - atomic_set(&(raid[device].valid),1); + case BLKRRPART: /* Re-read partition tables */ + if (!capable(CAP_SYS_ADMIN)) + return -EACCES; + if (minor != 0) + return -EINVAL; + if (atomic_read(&(raid[device].valid)) == 0) + return -EINVAL; + + atomic_set(&(raid[device].valid), 0); + if (raid[device].access != 1) { + atomic_set(&(raid[device].valid), 1); return -EBUSY; } - int partition; for (partition = 15; partition >= 0; partition--) { - invalidate_device(MKDEV(ATARAID_MAJOR, partition+devminor), 1); - ataraid_gendisk.part[partition+devminor].start_sect = 0; - ataraid_gendisk.part[partition+devminor].nr_sects = 0; + invalidate_device(MKDEV(ATARAID_MAJOR, + partition + devminor), 1); + ataraid_gendisk.part[partition + + devminor].start_sect = 0; + ataraid_gendisk.part[partition + + devminor].nr_sects = 0; } - ataraid_register_disk(device,raid[device].sectors); - atomic_set(&(raid[device].valid),1); + ataraid_register_disk(device, raid[device].sectors); + atomic_set(&(raid[device].valid), 1); wake_up(&medley_wait_open); return 0; default: return -EINVAL; - }; + } return 0; } @@ -297,28 +331,29 @@ static int medley_ioctl(struct inode *in * If the request cannot be made because it spans multiple disks, * we return -1, otherwise we modify the request and return 1. */ -static int medley_make_request(request_queue_t *q, int rw, struct buffer_head * bh) +static int medley_make_request(request_queue_t * q, int rw, + struct buffer_head *bh) { u8 disk; u32 rsect = bh->b_rsector; - int device = ((bh->b_rdev >> SHIFT)&MAJOR_MASK) - medley_devid_offset; - struct medley_array *r = raid+device; + int device = + ((bh->b_rdev >> SHIFT) & MAJOR_MASK) - medley_devid_offset; + struct medley_array *r = raid + device; /* Add the partition offset */ rsect = rsect + ataraid_gendisk.part[MINOR(bh->b_rdev)].start_sect; - dprintk("medley_make_request, rsect=%ul\n",rsect); + dprintk("medley_make_request, rsect=%ul\n", rsect); /* Detect if the request crosses a chunk barrier */ - if (r->chunk_size_log) - { - if ( ((rsect & (r->chunk_size-1)) + (bh->b_size/512)) > (1<chunk_size_log)) - { + if (r->chunk_size_log) { + if (((rsect & (r->chunk_size - 1)) + + (bh->b_size / 512)) > (1 << r->chunk_size_log)) { return -1; } } else { - if ((rsect/r->chunk_size) != ((rsect+(bh->b_size/512)-1)/r->chunk_size)) - { + if ((rsect / r->chunk_size) != + ((rsect + (bh->b_size / 512) - 1) / r->chunk_size)) { return -1; } } @@ -328,21 +363,23 @@ static int medley_make_request(request_q * number of sectors used per disk. So there is no need for the cutoff * magic found in other drivers like hptraid. */ - if (r->chunk_size_log) - { - /* We save some expensive operations (1 div, 1 mul, 1 mod), if the chunk - * size is a power of 2, which is the normal case. + if (r->chunk_size_log) { + /* We save some expensive operations (1 div, 1 mul, 1 mod), + * if the chunk size is a power of 2, which is true in most + * cases (at least with my version of the RAID BIOS). */ disk = (rsect >> r->chunk_size_log) % r->drives; - rsect = ((rsect / r->sectors_per_row) << r->chunk_size_log) + (rsect & (r->chunk_size-1)); - } - else - { + rsect = ((rsect / r->sectors_per_row) << + r->chunk_size_log) + (rsect & (r->chunk_size - + 1)); + } else { disk = (rsect / r->chunk_size) % r->drives; - rsect = rsect / r->sectors_per_row * r->chunk_size + rsect % r->chunk_size; + rsect = rsect / r->sectors_per_row * r->chunk_size + + rsect % r->chunk_size; } - dprintk("medley_make_request :-), disk=%d, rsect=%ul\n",disk,rsect); + dprintk("medley_make_request :-), disk=%d, rsect=%ul\n", disk, + rsect); bh->b_rdev = r->members[disk]; bh->b_rsector = rsect; return 1; @@ -354,59 +391,57 @@ static int medley_make_request(request_q */ void medley_add_raiddrive(kdev_t dev, struct medley_metadata *md) { - dprintk("Candidate drive %02x:%02x - drive %d of %d, stride %d, sectors %ul (%d MB)\n", - MAJOR(dev),MINOR(dev),md->drive_number,md->drives_per_striped_set,md->chunk_size,md->total_sectors_low,md->total_sectors_low/1024/1024/2); - int c; - for (c=0; ccreation_timestamp[0]) && - (raid[c].timestamp[1]==md->creation_timestamp[1]) && - (raid[c].timestamp[2]==md->creation_timestamp[2]) && - (raid[c].drives==md->drives_per_striped_set) && - (raid[c].chunk_size==md->chunk_size) && - ((raid[c].present & (1<drive_number)) == 0) ) - { + + dprintk("Candidate drive %02x:%02x - drive %d of %d, stride %d, " + "sectors %ul (%d MB)\n", + MAJOR(dev), MINOR(dev), md->drive_number, + md->drives_per_striped_set, md->chunk_size, + md->total_sectors_low, + md->total_sectors_low / 1024 / 1024 / 2); + + for (c = 0; c < medley_arrays; c++) { + if ((raid[c].timestamp[0] == md->creation_timestamp[0]) && + (raid[c].timestamp[1] == md->creation_timestamp[1]) && + (raid[c].timestamp[2] == md->creation_timestamp[2]) && + (raid[c].drives == md->drives_per_striped_set) && + (raid[c].chunk_size == md->chunk_size) && + ((raid[c].present & (1 << md->drive_number)) == 0)) { dprintk("Existing array %d\n", c); raid[c].present |= (1 << md->drive_number); - raid[c].members[md->drive_number]=dev; + raid[c].members[md->drive_number] = dev; break; } } - if (c==medley_arrays) - { - dprintk("New array %d\n",medley_arrays); - if (medley_arrays==MAX_MEDLEY_ARRAYS) - { - printk(KERN_ERR "Medley RAID: Too many RAID sets detected - you can change the max in the driver.\n"); - } - else - { - raid[c].timestamp[0]=md->creation_timestamp[0]; - raid[c].timestamp[1]=md->creation_timestamp[1]; - raid[c].timestamp[2]=md->creation_timestamp[2]; - raid[c].drives=md->drives_per_striped_set; - raid[c].chunk_size=md->chunk_size; - raid[c].sectors_per_row=md->chunk_size*md->drives_per_striped_set; - + if (c == medley_arrays) { + dprintk("New array %d\n", medley_arrays); + if (medley_arrays == MAX_MEDLEY_ARRAYS) { + printk(KERN_ERR "Medley RAID: " + "Too many RAID sets detected - you can change " + "the max in the driver.\n"); + } else { + raid[c].timestamp[0] = md->creation_timestamp[0]; + raid[c].timestamp[1] = md->creation_timestamp[1]; + raid[c].timestamp[2] = md->creation_timestamp[2]; + raid[c].drives = md->drives_per_striped_set; + raid[c].chunk_size = md->chunk_size; + raid[c].sectors_per_row = md->chunk_size * + md->drives_per_striped_set; + /* Speedup if chunk size is a power of 2 */ - if ( ((raid[c].chunk_size-1) & (raid[c].chunk_size)) == 0) - { - raid[c].chunk_size_log = ffs(raid[c].chunk_size)-1; - } - else - { + if (((raid[c].chunk_size - 1) & + (raid[c].chunk_size)) == 0) { + raid[c].chunk_size_log = + ffs(raid[c].chunk_size) - 1; + } else { raid[c].chunk_size_log = 0; } - raid[c].present=(1<drive_number); - raid[c].members[md->drive_number]=dev; - if (md->major_ver == 1) - { - raid[c].sectors=((u32 *)(md))[27]; - } - else - { - raid[c].sectors=md->total_sectors_low; + raid[c].present = (1 << md->drive_number); + raid[c].members[md->drive_number] = dev; + if (md->major_ver == 1) { + raid[c].sectors = ((u32 *) (md))[27]; + } else { + raid[c].sectors = md->total_sectors_low; } medley_arrays++; } @@ -420,68 +455,72 @@ void medley_add_raiddrive(kdev_t dev, st struct buffer_head *medley_get_metadata(kdev_t dev) { struct buffer_head *bh = NULL; + struct pci_dev *pcidev; + u32 lba; + int pos; + struct medley_metadata *md; ide_drive_t *drvinfo = ide_info_ptr(dev, 0); - - if ((drvinfo==NULL) || drvinfo->capacity<1) - { + if ((drvinfo == NULL) || drvinfo->capacity < 1) { return NULL; } - dprintk("Probing %02x:%02x\n",MAJOR(dev),MINOR(dev)); - /* If this drive is not on a PCI controller, it is not Medley RAID. - * Medley matches the PCI device ID with the metadata to check if it is valid. */ - struct pci_dev *pcidev = drvinfo->hwif?drvinfo->hwif->pci_dev:NULL; - if (!pcidev) - { + dprintk("Probing %02x:%02x\n", MAJOR(dev), MINOR(dev)); + + /* If this drive is not on a PCI controller, it is not Medley RAID. + * Medley matches the PCI device ID with the metadata to check if + * it is valid. Unfortunately it is the only reliable way to identify + * the superblock */ + pcidev = drvinfo->hwif ? drvinfo->hwif->pci_dev : NULL; + if (!pcidev) { return NULL; } /* - * 4 copies of the metadata exist, in the following 4 sectors: + * 4 copies of the metadata exist, in the following 4 sectors: * last, last-0x200, last-0x400, last-0x600. * * We must try each of these in order, until we find the metadata. - * FIXME: This does not take into account drives with 48/64-bit LBA addressing, - * even though the Medley RAID version 2 supports these. + * FIXME: This does not take into account drives with 48/64-bit LBA + * addressing, even though the Medley RAID version 2 supports these. */ - u32 lba=drvinfo->capacity-1; - int pos; - for (pos=0; pos<4; pos++,lba-=0x200) - { + lba = drvinfo->capacity - 1; + for (pos = 0; pos < 4; pos++, lba -= 0x200) { bh = bread(dev, lba, 512); - if (!bh) - { - printk(KERN_ERR "Medley RAID (%02x:%02x): Error reading metadata (lba=%d)\n", MAJOR(dev),MINOR(dev),lba); + if (!bh) { + printk(KERN_ERR "Medley RAID (%02x:%02x): " + "Error reading metadata (lba=%d)\n", + MAJOR(dev), MINOR(dev), lba); break; } - /* A valid Medley RAID has the PCI vendor/device ID of its IDE controller, - * and the correct checksum. */ - struct medley_metadata *md = (void *)(bh->b_data); - - if (pcidev->vendor == md->vendor_id && pcidev->device == md->product_id) - { - u16 checksum=0; - u16 *p = (void *)(bh->b_data); + /* A valid Medley RAID has the PCI vendor/device ID of its + * IDE controller, and the correct checksum. */ + md = (void *) (bh->b_data); + + if (pcidev->vendor == md->vendor_id && + pcidev->device == md->product_id) { + u16 checksum = 0; + u16 *p = (void *) (bh->b_data); int c; - for (c=0; c<160; c++) - { + for (c = 0; c < 160; c++) { checksum += *p++; } - dprintk("Probing %02x:%02x csum=%d, major_ver=%d\n",MAJOR(dev),MINOR(dev),checksum,md->major_ver); - if (((checksum == 0xffff) && (md->major_ver == 1)) || (checksum == 0)) - { - dprintk("Probing %02x:%02x VALID\n",MAJOR(dev),MINOR(dev)); - /* Found a valid block */ + dprintk + ("Probing %02x:%02x csum=%d, major_ver=%d\n", + MAJOR(dev), MINOR(dev), checksum, + md->major_ver); + if (((checksum == 0xffff) && (md->major_ver == 1)) + || (checksum == 0)) { + dprintk("Probing %02x:%02x VALID\n", + MAJOR(dev), MINOR(dev)); break; } } /* Was not a valid superblock */ - if (bh) - { + if (bh) { brelse(bh); - bh=NULL; + bh = NULL; } } return bh; @@ -493,156 +532,161 @@ struct buffer_head *medley_get_metadata( static void medley_probe_drive(int major, int minor) { struct buffer_head *bh; - kdev_t dev = MKDEV(major,minor); + kdev_t dev = MKDEV(major, minor); + struct medley_metadata *md; - bh=medley_get_metadata(dev); + bh = medley_get_metadata(dev); if (!bh) return; - struct medley_metadata *md = (void *)(bh->b_data); + md = (void *) (bh->b_data); - if (md->raid_type != 0x0) - { - printk(KERN_INFO "Medley RAID (%02x:%02x): Sorry, this driver currently only supports striped sets (RAID level 0).\n", - major,minor); - } - else if (md->major_ver == 2 && md->total_sectors_high != 0) - { - printk(KERN_ERR "Medley RAID (%02x:%02x): Sorry, the driver only supports 32 bit LBA disks (disk too big).\n", - major,minor); - } - else if (md->major_ver > 0 && md->major_ver > 2) - { - printk(KERN_INFO "Medley RAID (%02x:%02x): Unsupported version (%d.%d) - this driver supports version 1.x and 2.x\n", - major,minor,md->major_ver,md->minor_ver); - } - else if (md->drives_per_striped_set > MAX_DRIVES_PER_SET) - { - printk(KERN_ERR "Medley RAID (%02x:%02x): Striped set too large (%d drives) - please report this and change max in driver.\n", - major,minor,md->drives_per_striped_set); - } - else if ((md->drive_number > md->drives_per_striped_set) || - (md->drives_per_striped_set<1) || - (md->chunk_size < 1)) - { - printk(KERN_ERR "Medley RAID (%02x:%02x): Metadata appears to be corrupt.\n", - major,minor); - } - else - { + if (md->raid_type != 0x0) { + printk(KERN_INFO "Medley RAID (%02x:%02x): " + "Sorry, this driver currently only supports " + "striped sets (RAID level 0).\n", major, minor); + } else if (md->major_ver == 2 && md->total_sectors_high != 0) { + printk(KERN_ERR "Medley RAID (%02x:%02x):" + "Sorry, the driver only supports 32 bit LBA disks " + "(disk too big).\n", major, minor); + } else if (md->major_ver > 0 && md->major_ver > 2) { + printk(KERN_INFO "Medley RAID (%02x:%02x): " + "Unsupported version (%d.%d) - this driver supports " + "Medley version 1.x and 2.x\n", + major, minor, md->major_ver, md->minor_ver); + } else if (md->drives_per_striped_set > MAX_DRIVES_PER_SET) { + printk(KERN_ERR "Medley RAID (%02x:%02x): " + "Striped set too large (%d drives) - please report " + "this (and change max in driver).\n", + major, minor, md->drives_per_striped_set); + } else if ((md->drive_number > md->drives_per_striped_set) || + (md->drives_per_striped_set < 1) || + (md->chunk_size < 1)) { + printk(KERN_ERR "Medley RAID (%02x:%02x): " + "Metadata appears to be corrupt.\n", major, minor); + } else { /* We have a good candidate, put it in the correct array */ - medley_add_raiddrive(dev,md); + medley_add_raiddrive(dev, md); } - if (bh) - { + if (bh) { brelse(bh); } } + +/* + * Taken from hptraid.c, this is called to prevent the device + * from disappearing from under us and also nullifies the (incorrect) + * partitions of the underlying disk. + */ +struct block_device *get_device_lock(kdev_t member) +{ + struct block_device *bdev = bdget(member); + struct gendisk *gd; + int minor = MINOR(member); + int j; + + if (bdev + && blkdev_get(bdev, FMODE_READ | FMODE_WRITE, 0, + BDEV_RAW) == 0) { + /* + * This is supposed to prevent others from + * stealing our underlying disks. Now blank + * the /proc/partitions table for the wrong + * partition table, so that scripts don't + * accidentally mount it and crash the kernel + */ + /* XXX: the 0 is an utter hack --hch */ + gd = get_gendisk(MKDEV(MAJOR(member), 0)); + if (gd != NULL) { + if (gd->major == MAJOR(member)) { + for (j = 1 + (minor << gd->minor_shift); + j < ((minor + 1) << gd->minor_shift); + j++) + gd->part[j].nr_sects = 0; + } + } + } + return bdev; +} + /* * Initialise the driver. */ static __init int medley_init(void) { - int c; - - memset(raid, 0, MAX_MEDLEY_ARRAYS*sizeof(struct medley_array)); + int c, d; + + memset(raid, 0, MAX_MEDLEY_ARRAYS * sizeof(struct medley_array)); /* Probe each of the drives on our list */ - for (c=0; probelist[c] != MKDEV(0,0); c++) - { - medley_probe_drive(MAJOR(probelist[c]),MINOR(probelist[c])); + for (c = 0; probelist[c] != MKDEV(0, 0); c++) { + medley_probe_drive(MAJOR(probelist[c]), + MINOR(probelist[c])); } /* Check if the detected sets are complete */ - for (c=0; cmajor==MAJOR(raid[c].members[d])) { - int minor=MINOR(raid[c].members[d]); - int j; - for (j=1+(minor<minor_shift); - j<((minor+1)<minor_shift); - j++) gd->part[j].nr_sects=0; - } - } - } - raid[c].bdev[d] = bdev; + printk(KERN_INFO "Medley RAID: " + "Striped set %d consists of %d disks, total %dMiB " + "- disks:", + c, raid[c].drives, + raid[c].sectors / 1024 / 1024 / 2); + for (d = 0; d < raid[c].drives; d++) { + printk(" %02x:%02x", MAJOR(raid[c].members[d]), + MINOR(raid[c].members[d])); + raid[c].bdev[d] = get_device_lock(raid[c].members[d]); } printk("\n"); - raid[c].registered=1; - atomic_set(&(raid[c].valid),1); - ataraid_register_disk(c,raid[c].sectors); + raid[c].registered = 1; + atomic_set(&(raid[c].valid), 1); + ataraid_register_disk(c, raid[c].sectors); } - if (medley_arrays > 0) - { - printk(KERN_INFO "Medley RAID: %d active RAID set%s\n",medley_arrays,medley_arrays==1?"":"s"); + if (medley_arrays > 0) { + printk(KERN_INFO "Medley RAID: %d active RAID set%s\n", + medley_arrays, medley_arrays == 1 ? "" : "s"); return 0; } @@ -650,44 +694,53 @@ static __init int medley_init(void) return -ENODEV; } -static void __exit medley_exit (void) +/* + * Remove the arrays and clean up. + */ +static void __exit medley_exit(void) { - int device,d; - for (device = 0; devicei_rdev >> SHIFT) & MAJOR_MASK) - + medley_devid_offset; dprintk("medley_open\n"); - int device = ((inode->i_rdev >> SHIFT)&MAJOR_MASK) - medley_devid_offset; - - if (device < medley_arrays) - { - while (!atomic_read(&(raid[device].valid))) - sleep_on(&medley_wait_open); - raid[device].access++; + if (device < medley_arrays) { + while (!atomic_read(&(raid[device].valid))) + sleep_on(&medley_wait_open); + raid[device].access++; MOD_INC_USE_COUNT; - return (0); - } + return (0); + } return -ENODEV; } -static int medley_release(struct inode * inode, struct file * filp) -{ - int device = ((inode->i_rdev >> SHIFT)&MAJOR_MASK) - medley_devid_offset; +/* + * Called to release the handle on the virtual device + */ +static int medley_release(struct inode *inode, struct file *filp) +{ + int device = ((inode->i_rdev >> SHIFT) & MAJOR_MASK) - + medley_devid_offset; dprintk("medley_release\n"); raid[device].access--; MOD_DEC_USE_COUNT; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/drivers/scsi/aic7xxx/Makefile linux-2.4.20-wolk4.12-fullkernel/drivers/scsi/aic7xxx/Makefile --- linux-2.4.20-wolk4.11-fullkernel/drivers/scsi/aic7xxx/Makefile 2004-04-02 00:27:16.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/drivers/scsi/aic7xxx/Makefile 2004-03-16 13:40:16.000000000 +0100 @@ -13,7 +13,7 @@ ifeq ($(CONFIG_PCI),y) obj-$(CONFIG_SCSI_AIC79XX) += aic79xx.o endif -EXTRA_CFLAGS += -I$(TOPDIR)/drivers/scsi +EXTRA_CFLAGS += -I$(TOPDIR)/drivers/scsi -Werror ifeq ($(wildcard $(TOPDIR)/include/linux/rhconfig.h), \ $(TOPDIR)/include/linux/rhconfig.h) EXTRA_CFLAGS += -DAIC_RED_HAT_LINUX_KERNEL diff -Naurp linux-2.4.20-wolk4.11-fullkernel/fs/binfmt_elf.c linux-2.4.20-wolk4.12-fullkernel/fs/binfmt_elf.c --- linux-2.4.20-wolk4.11-fullkernel/fs/binfmt_elf.c 2004-04-02 00:27:25.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/fs/binfmt_elf.c 2004-04-02 00:06:51.000000000 +0200 @@ -9,6 +9,7 @@ * Copyright 1993, 1994: Eric Youngdale (ericy@cais.com). */ +#include #include #include @@ -46,7 +47,9 @@ #include static int load_elf_binary(struct linux_binprm * bprm, struct pt_regs * regs); +#ifdef CONFIG_BINFMT_ELF_AOUT static int load_elf_library(struct file*); +#endif static unsigned long elf_map (struct file *, unsigned long, struct elf_phdr *, int, int); extern int dump_fpu (struct pt_regs *, elf_fpregset_t *); extern void dump_thread(struct pt_regs *, struct user *); @@ -81,7 +84,13 @@ static int elf_core_dump(long signr, str #endif static struct linux_binfmt elf_format = { - NULL, THIS_MODULE, load_elf_binary, load_elf_library, elf_core_dump, ELF_EXEC_PAGESIZE, ELF_NAME + NULL, THIS_MODULE, load_elf_binary, +#ifdef CONFIG_BINFMT_ELF_AOUT + load_elf_library, +#else + NULL, +#endif + elf_core_dump, ELF_EXEC_PAGESIZE, ELF_NAME }; #define BAD_ADDR(x) ((unsigned long)(x) > TASK_SIZE) @@ -379,6 +388,7 @@ out: return error; } +#ifdef CONFIG_BINFMT_ELF_AOUT static unsigned long load_aout_interp(struct exec * interp_ex, struct file * interpreter) { @@ -423,6 +433,7 @@ static unsigned long load_aout_interp(st out: return elf_entry; } +#endif #if (defined(CONFIG_GRKERNSEC_PAX_EI_PAX) || defined(CONFIG_GRKERNSEC_PAX_PT_PAX_FLAGS)) && defined(CONFIG_GRKERNSEC_PAX_SOFTMODE) static unsigned long pax_parse_softmode(const struct elf_phdr * const elf_phdata) @@ -569,8 +580,7 @@ static int pax_parse_ei_pax(const struct if (pax_aslr) #endif - if ((elf_ex->e_ident[EI_PAX] & EF_PAX_RANDEXEC) && (elf_ex->e_type == ET_EXEC) && - (pax_flags & (PF_PAX_PAGEEXEC | PF_PAX_SEGMEXEC))) + if ((elf_ex->e_ident[EI_PAX] & EF_PAX_RANDEXEC) && (elf_ex->e_type == ET_EXEC) && (pax_flags & PF_PAX_MPROTECT)) pax_flags |= PF_PAX_RANDEXEC; #endif @@ -599,8 +609,8 @@ static int pax_parse_elf_flags(const str ((elf_phdata[i].p_flags & PF_EMUTRAMP) && (elf_phdata[i].p_flags & PF_NOEMUTRAMP)) || ((elf_phdata[i].p_flags & PF_MPROTECT) && (elf_phdata[i].p_flags & PF_NOMPROTECT)) || ((elf_phdata[i].p_flags & PF_RANDMMAP) && (elf_phdata[i].p_flags & PF_NORANDMMAP)) || - ((elf_phdata[i].p_flags & PF_RANDEXEC) && ((elf_phdata[i].p_flags & PF_NORANDEXEC) || elf_ex->e_type == ET_DYN)) || - (!(elf_phdata[i].p_flags & PF_NORANDEXEC) && (elf_ex->e_type == ET_DYN))) + ((elf_phdata[i].p_flags & PF_RANDEXEC) && ((elf_phdata[i].p_flags & PF_NORANDEXEC) || elf_ex->e_type == ET_DYN || !(elf_phdata[i].p_flags & PF_MPROTECT))) || + (!(elf_phdata[i].p_flags & PF_NORANDEXEC) && (elf_ex->e_type == ET_DYN || (elf_phdata[i].p_flags & PF_NOMPROTECT)))) return -EINVAL; #ifdef CONFIG_GRKERNSEC_PAX_SOFTMODE @@ -628,7 +638,9 @@ static int pax_parse_elf_flags(const str */ #define INTERPRETER_NONE 0 +#ifdef CONFIG_BINFMT_ELF_AOUT #define INTERPRETER_AOUT 1 +#endif #define INTERPRETER_ELF 2 @@ -651,7 +663,9 @@ static int load_elf_binary(struct linux_ struct elfhdr elf_ex; struct elfhdr interp_elf_ex; struct exec interp_ex; +#ifdef CONFIG_BINFMT_ELF_AOUT char passed_fileno[6]; +#endif struct files_struct *files, *ftmp; #ifdef CONFIG_GRKERNSEC_PAX_RANDEXEC @@ -767,6 +781,7 @@ static int load_elf_binary(struct linux_ /* Some simple consistency checks for the interpreter */ if (elf_interpreter) { +#ifdef CONFIG_BINFMT_ELF_AOUT interpreter_type = INTERPRETER_ELF | INTERPRETER_AOUT; /* Now figure out which format our binary is */ @@ -774,6 +789,9 @@ static int load_elf_binary(struct linux_ (N_MAGIC(interp_ex) != ZMAGIC) && (N_MAGIC(interp_ex) != QMAGIC)) interpreter_type = INTERPRETER_ELF; +#else + interpreter_type = INTERPRETER_ELF; +#endif if (memcmp(interp_elf_ex.e_ident, ELFMAG, SELFMAG) != 0) interpreter_type &= ~INTERPRETER_ELF; @@ -782,6 +800,7 @@ static int load_elf_binary(struct linux_ if (!interpreter_type) goto out_free_dentry; +#ifdef CONFIG_BINFMT_ELF_AOUT /* Make sure only one type was selected */ if ((interpreter_type & INTERPRETER_ELF) && interpreter_type != INTERPRETER_ELF) { @@ -789,6 +808,7 @@ static int load_elf_binary(struct linux_ // printk(KERN_WARNING "ELF: Ambiguous type, using ELF\n"); interpreter_type = INTERPRETER_ELF; } +#endif /* Verify the interpreter has a valid arch */ if ((interpreter_type == INTERPRETER_ELF) && !elf_check_arch(&interp_elf_ex)) @@ -801,6 +821,7 @@ static int load_elf_binary(struct linux_ /* OK, we are done with that, now set up the arg stuff, and then start this sucker up */ +#ifdef CONFIG_BINFMT_ELF_AOUT if (!bprm->sh_bang) { char * passed_p; @@ -816,6 +837,7 @@ static int load_elf_binary(struct linux_ } } } +#endif /* Flush all traces of the currently running executable */ retval = flush_old_exec(bprm); @@ -1065,10 +1087,12 @@ static int load_elf_binary(struct linux_ padzero(elf_bss); if (elf_interpreter) { +#ifdef CONFIG_BINFMT_ELF_AOUT if (interpreter_type == INTERPRETER_AOUT) elf_entry = load_aout_interp(&interp_ex, interpreter); else +#endif elf_entry = load_elf_interp(&interp_elf_ex, interpreter, &interp_load_addr); @@ -1088,7 +1112,9 @@ static int load_elf_binary(struct linux_ kfree(elf_phdata); +#ifdef CONFIG_BINFMT_ELF_AOUT if (interpreter_type != INTERPRETER_AOUT) +#endif sys_close(elf_exec_fileno); set_binfmt(&elf_format); @@ -1102,10 +1128,14 @@ static int load_elf_binary(struct linux_ &elf_ex, load_addr, load_bias, interp_load_addr, +#ifdef CONFIG_BINFMT_ELF_AOUT (interpreter_type == INTERPRETER_AOUT ? 0 : 1)); /* N.B. passed_fileno might not be initialized? */ if (interpreter_type == INTERPRETER_AOUT) current->mm->arg_start += strlen(passed_fileno) + 1; +#else + 1); +#endif current->mm->start_brk = current->mm->brk = elf_brk; current->mm->end_code = end_code; current->mm->start_code = start_code; @@ -1176,9 +1206,9 @@ out_free_ph: goto out; } +#ifdef CONFIG_BINFMT_ELF_AOUT /* This is really simpleminded and specialized - we are loading an a.out library that is given an ELF header. */ - static int load_elf_library(struct file *file) { struct elf_phdr *elf_phdata; @@ -1249,6 +1279,7 @@ out_free_ph: out: return error; } +#endif /* * Note that some platforms still use traditional core dumps and not diff -Naurp linux-2.4.20-wolk4.11-fullkernel/fs/exec.c linux-2.4.20-wolk4.12-fullkernel/fs/exec.c --- linux-2.4.20-wolk4.11-fullkernel/fs/exec.c 2004-04-02 00:27:25.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/fs/exec.c 2004-04-02 00:01:13.000000000 +0200 @@ -132,6 +132,7 @@ static inline void put_binfmt(struct lin */ asmlinkage long sys_uselib(const char * library) { +#if defined(CONFIG_BINFMT_AOUT) || defined(CONFIG_BINFMT_ELF_AOUT) struct file * file; struct nameidata nd; int error; @@ -245,6 +246,9 @@ out: exit: path_release(&nd); goto out; +#else + return -ENOSYS; +#endif } /* @@ -1364,7 +1368,7 @@ int pax_check_flags(unsigned long * flag if ((*flags & PF_PAX_RANDEXEC) #ifdef CONFIG_GRKERNSEC_PAX_RANDEXEC - && !(*flags & (PF_PAX_PAGEEXEC | PF_PAX_SEGMEXEC)) + && !(*flags & PF_PAX_MPROTECT) #endif ) diff -Naurp linux-2.4.20-wolk4.11-fullkernel/fs/ext3/balloc.c linux-2.4.20-wolk4.12-fullkernel/fs/ext3/balloc.c --- linux-2.4.20-wolk4.11-fullkernel/fs/ext3/balloc.c 2004-04-02 00:27:25.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/fs/ext3/balloc.c 2004-03-28 16:05:19.000000000 +0200 @@ -547,6 +547,8 @@ int ext3_new_block (handle_t *handle, st #ifdef EXT3FS_DEBUG static int goal_hits = 0, goal_attempts = 0; #endif + int tried_commit = 0; + *errp = -ENOSPC; sb = inode->i_sb; if (!sb) { @@ -643,6 +645,26 @@ repeat: } } + /* We can only try to commit the previous transaction, or we will + * deadlock because the current op has a transaction handle open. + * We also can't restart the current handle in a new transaction as + * that might break the atomicity guarantees of this transaction. + * Set current handle h_sync to allow it to be committed ASAP. */ + if (!tried_commit) { + journal_t *journal = handle->h_transaction->t_journal; + transaction_t *prev_trans = journal->j_committing_transaction; + + if (prev_trans) { + tid_t prev_tid = prev_trans->t_tid; + log_start_commit(journal, prev_trans); + log_wait_commit(journal, prev_tid); + } + handle->h_sync = 1; + tried_commit = 1; + + goto repeat; + } + /* No space left on the device */ goto out; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/fs/inode.c linux-2.4.20-wolk4.12-fullkernel/fs/inode.c --- linux-2.4.20-wolk4.11-fullkernel/fs/inode.c 2004-04-02 00:27:25.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/fs/inode.c 2004-03-28 16:02:24.000000000 +0200 @@ -300,7 +300,8 @@ void refile_inode(struct inode *inode) BUG(); */ if (!inode) return; spin_lock(&inode_lock); - __refile_inode(inode); + if (!(inode->i_state & I_LOCK)) + __refile_inode(inode); spin_unlock(&inode_lock); } diff -Naurp linux-2.4.20-wolk4.11-fullkernel/fs/xfs/pagebuf/page_buf.c linux-2.4.20-wolk4.12-fullkernel/fs/xfs/pagebuf/page_buf.c --- linux-2.4.20-wolk4.11-fullkernel/fs/xfs/pagebuf/page_buf.c 2004-04-02 00:27:28.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/fs/xfs/pagebuf/page_buf.c 2004-03-16 14:24:51.000000000 +0100 @@ -578,7 +578,8 @@ mapit: } else if (flags & PBF_MAPPED) { if (as_list_len > 64) purge_addresses(); - pb->pb_addr = vmap(pb->pb_pages, page_count); + pb->pb_addr = vmap(pb->pb_pages, page_count, + VM_ALLOC, PAGE_KERNEL); if (pb->pb_addr == NULL) return -ENOMEM; pb->pb_addr += pb->pb_offset; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/grsecurity/Config.in linux-2.4.20-wolk4.12-fullkernel/grsecurity/Config.in --- linux-2.4.20-wolk4.11-fullkernel/grsecurity/Config.in 2004-04-02 00:27:29.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/grsecurity/Config.in 2004-03-16 16:45:47.000000000 +0100 @@ -198,7 +198,7 @@ define_bool CONFIG_GRKERNSEC_PAX_PT_PAX_ define_bool CONFIG_GRKERNSEC_PAX_NO_ACL_FLAGS y if [ "$CONFIG_X86" = "y" ]; then define_bool CONFIG_GRKERNSEC_IO n -if [ "$CONFIG_MODULES" = "n" ]; then +if [ "$CONFIG_MODULES" != "y" ]; then define_bool CONFIG_GRKERNSEC_PAX_KERNEXEC y fi define_bool CONFIG_GRKERNSEC_PAX_RANDKSTACK y @@ -234,7 +234,7 @@ if [ "$CONFIG_GRKERNSEC_PAX_EI_PAX" = "y bool 'Enforce Non-executable pages' CONFIG_GRKERNSEC_PAX_NOEXEC if [ "$CONFIG_GRKERNSEC_PAX_NOEXEC" = "y" ]; then bool 'Paging based non-executable pages' CONFIG_GRKERNSEC_PAX_PAGEEXEC - if [ "$CONFIG_X86" = "y" -a "$CONFIG_SHM_LARGEPAGE" != "y" ]; then + if [ "$CONFIG_X86" = "y" -a "$CONFIG_SHM_LARGEPAGE" != "y" -a "$CONFIG_HIGHMEM" != "y" ]; then bool 'Segmentation based non-executable pages' CONFIG_GRKERNSEC_PAX_SEGMEXEC fi if [ "$CONFIG_X86" = "y" -o "$CONFIG_PARISC" = "y" -o "$CONFIG_PPC32" = "y" ]; then @@ -267,8 +267,11 @@ if [ "$CONFIG_GRKERNSEC_PAX_EI_PAX" = "y fi fi fi - if [ "$CONFIG_X86" = "y" -a "$CONFIG_MODULES" = "n" ]; then + if [ "$CONFIG_X86" = "y" -a "$CONFIG_MODULES" != "y" ]; then bool 'Enforce non-executable kernel pages' CONFIG_GRKERNSEC_PAX_KERNEXEC + if [ "$CONFIG_X86" = "y" -a "$CONFIG_GRKERNSEC_PAX_KERNEXEC" = "y" ]; then + define_bool CONFIG_X86_PGE n + fi fi bool 'Address Space Layout Randomization' CONFIG_GRKERNSEC_PAX_ASLR if [ "$CONFIG_GRKERNSEC_PAX_ASLR" = "y" ]; then @@ -277,10 +280,8 @@ if [ "$CONFIG_GRKERNSEC_PAX_EI_PAX" = "y fi bool ' Randomize user stack base' CONFIG_GRKERNSEC_PAX_RANDUSTACK bool ' Randomize mmap() base' CONFIG_GRKERNSEC_PAX_RANDMMAP - if [ "$CONFIG_GRKERNSEC_PAX_RANDMMAP" = "y" -a "$CONFIG_GRKERNSEC_PAX_NOEXEC" = "y" ]; then - if [ "$CONFIG_GRKERNSEC_PAX_PAGEEXEC" = "y" -o "$CONFIG_GRKERNSEC_PAX_SEGMEXEC" = "y" ]; then - bool ' Randomize ET_EXEC base' CONFIG_GRKERNSEC_PAX_RANDEXEC - fi + if [ "$CONFIG_GRKERNSEC_PAX_RANDMMAP" = "y" -a "$CONFIG_GRKERNSEC_PAX_MPROTECT" = "y" ]; then + bool ' Randomize ET_EXEC base' CONFIG_GRKERNSEC_PAX_RANDEXEC fi fi fi diff -Naurp linux-2.4.20-wolk4.11-fullkernel/grsecurity/grsec_mount.c linux-2.4.20-wolk4.12-fullkernel/grsecurity/grsec_mount.c --- linux-2.4.20-wolk4.11-fullkernel/grsecurity/grsec_mount.c 2004-04-02 00:27:29.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/grsecurity/grsec_mount.c 2004-04-01 23:45:38.000000000 +0200 @@ -8,7 +8,7 @@ gr_log_remount(const char *devname, cons { #ifdef CONFIG_GRKERNSEC_AUDIT_MOUNT if (grsec_enable_mount && (retval >= 0)) - security_audit(GR_REMOUNT_AUDIT_MSG, devname, DEFAULTSECARGS); + security_audit(GR_REMOUNT_AUDIT_MSG, devname ? devname : "none", DEFAULTSECARGS); #endif return; } @@ -18,7 +18,7 @@ gr_log_unmount(const char *devname, cons { #ifdef CONFIG_GRKERNSEC_AUDIT_MOUNT if (grsec_enable_mount && (retval >= 0)) - security_audit(GR_UNMOUNT_AUDIT_MSG, devname, DEFAULTSECARGS); + security_audit(GR_UNMOUNT_AUDIT_MSG, devname ? devname : "none", DEFAULTSECARGS); #endif return; } diff -Naurp linux-2.4.20-wolk4.11-fullkernel/include/asm-i386/desc.h linux-2.4.20-wolk4.12-fullkernel/include/asm-i386/desc.h --- linux-2.4.20-wolk4.11-fullkernel/include/asm-i386/desc.h 2004-04-02 00:27:30.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/include/asm-i386/desc.h 2004-03-16 16:45:51.000000000 +0100 @@ -116,6 +116,19 @@ static inline void _load_LDT (struct mm_ __load_LDT(cpu); } +#define pax_open_kernel(flags, cr3) \ +do { \ + local_irq_save(flags); \ + asm("movl %%cr3,%0":"=r" (cr3)); \ + load_cr3(kernexec_pg_dir); \ +} while(0) + +#define pax_close_kernel(flags, cr3) \ +do { \ + asm("movl %0,%%cr3": :"r" (cr3)); \ + local_irq_restore(flags); \ +} while(0) + #endif /* !__ASSEMBLY__ */ #endif diff -Naurp linux-2.4.20-wolk4.11-fullkernel/include/asm-i386/pgtable.h linux-2.4.20-wolk4.12-fullkernel/include/asm-i386/pgtable.h --- linux-2.4.20-wolk4.11-fullkernel/include/asm-i386/pgtable.h 2004-04-02 00:27:30.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/include/asm-i386/pgtable.h 2004-04-02 00:02:37.000000000 +0200 @@ -22,6 +22,11 @@ #endif extern pgd_t swapper_pg_dir[1024]; + +#ifdef CONFIG_GRKERNSEC_PAX_KERNEXEC +extern pgd_t kernexec_pg_dir[1024]; +#endif + extern void paging_init(void); /* Caches aren't brain-dead on the intel. */ diff -Naurp linux-2.4.20-wolk4.11-fullkernel/include/linux/mm.h linux-2.4.20-wolk4.12-fullkernel/include/linux/mm.h --- linux-2.4.20-wolk4.11-fullkernel/include/linux/mm.h 2004-04-02 00:27:32.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/include/linux/mm.h 2004-04-02 00:02:37.000000000 +0200 @@ -753,8 +753,7 @@ static inline unsigned long do_mmap(stru ret = do_mmap_pgoff(file, addr, len, prot, flag, offset >> PAGE_SHIFT); #ifdef CONFIG_GRKERNSEC_PAX_SEGMEXEC -#define BAD_ADDR(x) ((unsigned long)(x) > TASK_SIZE) - if ((current->flags & PF_PAX_SEGMEXEC) && !BAD_ADDR(ret) && ((flag & MAP_TYPE) == MAP_PRIVATE) + if ((current->flags & PF_PAX_SEGMEXEC) && ret < TASK_SIZE && ((flag & MAP_TYPE) == MAP_PRIVATE) #ifdef CONFIG_GRKERNSEC_PAX_MPROTECT && (!(current->flags & PF_PAX_MPROTECT) || ((prot & PROT_EXEC) && file && !(prot & PROT_WRITE))) @@ -764,12 +763,11 @@ static inline unsigned long do_mmap(stru unsigned long ret_m; prot = prot & PROT_EXEC ? prot : PROT_NONE; ret_m = do_mmap_pgoff(NULL, ret + SEGMEXEC_TASK_SIZE, 0UL, prot, flag | MAP_MIRROR | MAP_FIXED, ret); - if (BAD_ADDR(ret_m)) { + if (ret_m >= TASK_SIZE) { do_munmap(current->mm, ret, len); ret = ret_m; } } -#undef BAD_ADDR #endif out: diff -Naurp linux-2.4.20-wolk4.11-fullkernel/include/linux/mman.h linux-2.4.20-wolk4.12-fullkernel/include/linux/mman.h --- linux-2.4.20-wolk4.11-fullkernel/include/linux/mman.h 2004-04-02 00:27:32.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/include/linux/mman.h 2004-04-02 00:02:57.000000000 +0200 @@ -1,46 +1,9 @@ #ifndef _LINUX_MMAN_H #define _LINUX_MMAN_H -#include -#include - -#include #include #define MREMAP_MAYMOVE 1 #define MREMAP_FIXED 2 -/* Optimisation macro. */ -#define _calc_vm_trans(x,bit1,bit2) \ - ((bit1) <= (bit2) ? ((x) & (bit1)) * ((bit2) / (bit1)) \ - : ((x) & (bit1)) / ((bit1) / (bit2))) - -/* - * Combine the mmap "prot" argument into "vm_flags" used internally. - */ -static inline unsigned long -calc_vm_prot_bits(unsigned long prot) -{ - return _calc_vm_trans(prot, PROT_READ, VM_READ ) | - _calc_vm_trans(prot, PROT_WRITE, VM_WRITE) | - _calc_vm_trans(prot, PROT_EXEC, VM_EXEC ); -} - -/* - * Combine the mmap "flags" argument into "vm_flags" used internally. - */ -static inline unsigned long -calc_vm_flag_bits(unsigned long flags) -{ -#if defined(CONFIG_GRKERNSEC_PAX_SEGMEXEC) || defined(CONFIG_GRKERNSEC_PAX_RANDEXEC) - return _calc_vm_trans(flags, MAP_MIRROR, VM_MIRROR ) | - _calc_vm_trans(flags, MAP_GROWSDOWN, VM_GROWSDOWN ) | -#else - return _calc_vm_trans(flags, MAP_GROWSDOWN, VM_GROWSDOWN ) | -#endif - _calc_vm_trans(flags, MAP_DENYWRITE, VM_DENYWRITE ) | - _calc_vm_trans(flags, MAP_EXECUTABLE, VM_EXECUTABLE) | - _calc_vm_trans(flags, MAP_LOCKED, VM_LOCKED ); -} - #endif /* _LINUX_MMAN_H */ diff -Naurp linux-2.4.20-wolk4.11-fullkernel/include/linux/pci_ids.h linux-2.4.20-wolk4.12-fullkernel/include/linux/pci_ids.h --- linux-2.4.20-wolk4.11-fullkernel/include/linux/pci_ids.h 2004-04-02 00:27:33.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/include/linux/pci_ids.h 2004-03-16 14:48:47.000000000 +0100 @@ -425,6 +425,7 @@ #define PCI_DEVICE_ID_AMD_LANCE 0x2000 #define PCI_DEVICE_ID_AMD_LANCE_HOME 0x2001 #define PCI_DEVICE_ID_AMD_SCSI 0x2020 +#define PCI_DEVICE_ID_AMD_SERENADE 0x36c0 #define PCI_DEVICE_ID_AMD_FE_GATE_7006 0x7006 #define PCI_DEVICE_ID_AMD_FE_GATE_7007 0x7007 #define PCI_DEVICE_ID_AMD_FE_GATE_700C 0x700C diff -Naurp linux-2.4.20-wolk4.11-fullkernel/include/linux/vmalloc.h linux-2.4.20-wolk4.12-fullkernel/include/linux/vmalloc.h --- linux-2.4.20-wolk4.11-fullkernel/include/linux/vmalloc.h 2004-04-02 00:27:34.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/include/linux/vmalloc.h 2004-04-02 00:02:37.000000000 +0200 @@ -22,7 +22,8 @@ struct vm_struct { extern struct vm_struct * get_vm_area (unsigned long size, unsigned long flags); extern void vfree(void * addr); #define vunmap(addr) vfree(addr) -extern void * vmap(struct page **pages, int count); +extern void * vmap(struct page **pages, int count, + unsigned long flags, pgprot_t prot); extern void * __vmalloc (unsigned long size, int gfp_mask, pgprot_t prot); extern long vread(char *buf, char *addr, unsigned long count); extern void vmfree_area_pages(unsigned long address, unsigned long size); diff -Naurp linux-2.4.20-wolk4.11-fullkernel/init/version.c linux-2.4.20-wolk4.12-fullkernel/init/version.c --- linux-2.4.20-wolk4.11-fullkernel/init/version.c 2004-04-02 00:27:54.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/init/version.c 2004-03-16 13:50:51.000000000 +0100 @@ -26,7 +26,7 @@ struct new_utsname system_utsname = { }; const char *wolk_banner = - "WOLK - Working Overloaded Linux Kernel - v4.11 - Server Edition""\n\n"; + "WOLK - Working Overloaded Linux Kernel - v4.12 - Server Edition""\n\n"; const char *linux_banner = "Linux version " UTS_RELEASE " (" LINUX_COMPILE_BY "@" diff -Naurp linux-2.4.20-wolk4.11-fullkernel/mm/memory.c linux-2.4.20-wolk4.12-fullkernel/mm/memory.c --- linux-2.4.20-wolk4.11-fullkernel/mm/memory.c 2004-04-02 00:27:38.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/mm/memory.c 2004-03-16 16:46:13.000000000 +0100 @@ -1132,8 +1132,7 @@ static void pax_mirror_fault(struct mm_s address_m = vma->vm_start + (unsigned long)vma->vm_private_data; vma_m = find_vma(mm, address_m); - if (!vma_m || vma_m->vm_start != address_m) - return; + BUG_ON(!vma_m || vma_m->vm_start != address_m); address_m = address + (unsigned long)vma->vm_private_data; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/mm/mmap.c linux-2.4.20-wolk4.12-fullkernel/mm/mmap.c --- linux-2.4.20-wolk4.11-fullkernel/mm/mmap.c 2004-04-02 00:27:38.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/mm/mmap.c 2004-03-16 16:49:38.000000000 +0100 @@ -199,6 +199,33 @@ out: return retval; } +/* Combine the mmap "prot" and "flags" argument into one "vm_flags" used + * internally. Essentially, translate the "PROT_xxx" and "MAP_xxx" bits + * into "VM_xxx". + */ +static inline unsigned long calc_vm_flags(unsigned long prot, unsigned long flags) +{ +#define _trans(x,bit1,bit2) \ +((bit1==bit2)?(x&bit1):(x&bit1)?bit2:0) + + unsigned long prot_bits, flag_bits; + prot_bits = + _trans(prot, PROT_READ, VM_READ) | + _trans(prot, PROT_WRITE, VM_WRITE) | + _trans(prot, PROT_EXEC, VM_EXEC); + flag_bits = + +#if defined(CONFIG_GRKERNSEC_PAX_SEGMEXEC) || defined(CONFIG_GRKERNSEC_PAX_RANDEXEC) + _trans(flags, MAP_MIRROR, VM_MIRROR) | +#endif + + _trans(flags, MAP_GROWSDOWN, VM_GROWSDOWN) | + _trans(flags, MAP_DENYWRITE, VM_DENYWRITE) | + _trans(flags, MAP_EXECUTABLE, VM_EXECUTABLE); + return prot_bits | flag_bits; +#undef _trans +} + #ifdef DEBUG_MM_RB static int browse_rb(rb_node_t * rb_node) { int i = 0; @@ -451,8 +478,10 @@ unsigned long do_mmap_pgoff(struct file * to. we assume access permissions have been handled by the open * of the memory object, so we don't do any here. */ - vm_flags = calc_vm_prot_bits(prot) | calc_vm_flag_bits(flags) | - mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; + vm_flags = calc_vm_flags(prot,flags) | mm->def_flags | VM_MAYREAD | VM_MAYWRITE | VM_MAYEXEC; + + if (file && (file->f_vfsmnt->mnt_flags & MNT_NOEXEC)) + vm_flags &= ~VM_MAYEXEC; #if defined(CONFIG_GRKERNSEC_PAX_PAGEEXEC) || defined(CONFIG_GRKERNSEC_PAX_SEGMEXEC) if (current->flags & (PF_PAX_PAGEEXEC | PF_PAX_SEGMEXEC)) { @@ -1307,8 +1336,32 @@ asmlinkage long sys_munmap(unsigned long * anonymous maps. eventually we may be able to do some * brk-specific accounting here. */ +#if defined(CONFIG_GRKERNSEC_PAX_SEGMEXEC) && defined(CONFIG_GRKERNSEC_PAX_MPROTECT) +unsigned long __do_brk(unsigned long addr, unsigned long len); + unsigned long do_brk(unsigned long addr, unsigned long len) { + unsigned long ret; + + ret = __do_brk(addr, len); + if (ret == addr && (current->flags & (PF_PAX_SEGMEXEC | PF_PAX_MPROTECT)) == PF_PAX_SEGMEXEC) { + unsigned long ret_m; + + ret_m = do_mmap_pgoff(NULL, addr + SEGMEXEC_TASK_SIZE, 0UL, PROT_NONE, MAP_PRIVATE | MAP_FIXED | MAP_MIRROR, addr); + if (ret_m > TASK_SIZE) { + do_munmap(current->mm, addr, len); + ret = ret_m; + } + } + + return ret; +} + +unsigned long __do_brk(unsigned long addr, unsigned long len) +#else +unsigned long do_brk(unsigned long addr, unsigned long len) +#endif +{ struct mm_struct * mm = current->mm; struct vm_area_struct * vma, * prev; unsigned long flags; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/mm/mprotect.c linux-2.4.20-wolk4.12-fullkernel/mm/mprotect.c --- linux-2.4.20-wolk4.11-fullkernel/mm/mprotect.c 2004-04-02 00:27:38.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/mm/mprotect.c 2004-03-16 16:49:25.000000000 +0100 @@ -386,7 +386,7 @@ static inline void pax_handle_maywrite(s asmlinkage long sys_mprotect(unsigned long start, size_t len, unsigned long prot) { - unsigned long vm_flags, nstart, end, tmp; + unsigned long nstart, end, tmp; struct vm_area_struct * vma, * next, * prev; int error = -EINVAL; @@ -420,8 +420,6 @@ asmlinkage long sys_mprotect(unsigned lo if (end == start) return 0; - vm_flags = calc_vm_prot_bits(prot); - down_write(¤t->mm->mmap_sem); vma = find_vma_prev(current->mm, start, &prev); @@ -451,8 +449,7 @@ asmlinkage long sys_mprotect(unsigned lo /* Here we know that vma->vm_start <= nstart < vma->vm_end. */ - newflags = vm_flags | (vma->vm_flags & ~(VM_READ | VM_WRITE | VM_EXEC)); - + newflags = prot | (vma->vm_flags & ~(PROT_READ | PROT_WRITE | PROT_EXEC)); if ((newflags & ~(newflags >> 4)) & 0xf) { error = -EACCES; goto out; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/mm/rmap.c linux-2.4.20-wolk4.12-fullkernel/mm/rmap.c --- linux-2.4.20-wolk4.11-fullkernel/mm/rmap.c 2004-04-02 00:27:38.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/mm/rmap.c 2004-03-16 13:40:11.000000000 +0100 @@ -148,7 +148,7 @@ void __pte_chain_free(struct pte_chain * */ int page_referenced(struct page * page, int * rsslimit) { - int referenced = 0, under_rsslimit = 0; + int referenced = 0, under_rsslimit = 1; struct mm_struct * mm; struct pte_chain * pc; @@ -156,6 +156,7 @@ int page_referenced(struct page * page, referenced++; if (PageDirect(page)) { + under_rsslimit = 0; pte_t *pte = rmap_ptep_map(page->pte.direct); if (pte_young(*pte) && ptep_test_and_clear_young(pte)) referenced++; @@ -168,6 +169,8 @@ int page_referenced(struct page * page, int nr_chains = 0; /* Check all the page tables mapping this page. */ + if (page->pte.chain) + under_rsslimit = 0; for (pc = page->pte.chain; pc; pc = pte_chain_next(pc)) { int i; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/mm/vmalloc.c linux-2.4.20-wolk4.12-fullkernel/mm/vmalloc.c --- linux-2.4.20-wolk4.11-fullkernel/mm/vmalloc.c 2004-04-02 00:27:38.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/mm/vmalloc.c 2004-03-19 00:17:32.000000000 +0100 @@ -147,7 +147,8 @@ static inline int alloc_area_pmd(pmd_t * pte_t * pte = pte_alloc_kernel(&init_mm, pmd, address); if (!pte) return -ENOMEM; - if (alloc_area_pte(pte, address, end - address, gfp_mask, prot, pages)) + if (alloc_area_pte(pte, address, end - address, + gfp_mask, prot, pages)) return -ENOMEM; address = (address + PMD_SIZE) & PMD_MASK; pmd++; @@ -162,8 +163,8 @@ static inline int __vmalloc_area_pages ( struct page ***pages) { pgd_t * dir; + unsigned long start = address; unsigned long end = address + size; - int ret; dir = pgd_offset_k(address); flush_cache_all(); @@ -172,22 +173,24 @@ static inline int __vmalloc_area_pages ( pmd_t *pmd; pmd = pmd_alloc(&init_mm, dir, address); - ret = -ENOMEM; if (!pmd) - break; + goto err; - ret = -ENOMEM; if (alloc_area_pmd(pmd, address, end - address, gfp_mask, prot, pages)) - break; + goto err; // The kernel NEVER reclaims pmds, so no need to undo pmd_alloc() here address = (address + PGDIR_SIZE) & PGDIR_MASK; dir++; - - ret = 0; } while (address && (address < end)); spin_unlock(&init_mm.page_table_lock); flush_cache_all(); - return ret; + return 0; +err: + spin_unlock(&init_mm.page_table_lock); + flush_cache_all(); + if (address > start) + vmfree_area_pages(start, address - start); + return -ENOMEM; } int vmalloc_area_pages(unsigned long address, unsigned long size, @@ -236,7 +239,7 @@ out: return NULL; } -void vfree(void * addr) +void __vfree(void * addr, int free_area_pages) { struct vm_struct **p, *tmp; @@ -256,7 +259,8 @@ void vfree(void * addr) for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) { if (tmp->addr == addr) { *p = tmp->next; - vmfree_area_pages(VMALLOC_VMADDR(tmp->addr), tmp->size); + if (free_area_pages) + vmfree_area_pages(VMALLOC_VMADDR(tmp->addr), tmp->size); write_unlock(&vmlist_lock); kfree(tmp); return; @@ -269,6 +273,11 @@ void vfree(void * addr) #endif } +void vfree(void * addr) +{ + __vfree(addr,1); +} + void * __vmalloc (unsigned long size, int gfp_mask, pgprot_t prot) { void * addr; @@ -285,13 +294,14 @@ void * __vmalloc (unsigned long size, in addr = area->addr; if (__vmalloc_area_pages(VMALLOC_VMADDR(addr), size, gfp_mask, prot, NULL)) { - vfree(addr); + __vfree(addr, 0); return NULL; } return addr; } -void * vmap(struct page **pages, int count) +void * vmap(struct page **pages, int count, + unsigned long flags, pgprot_t prot) { void * addr; struct vm_struct *area; @@ -299,14 +309,14 @@ void * vmap(struct page **pages, int cou if (!size || size > (max_mapnr << PAGE_SHIFT)) return NULL; - area = get_vm_area(size, VM_ALLOC); + area = get_vm_area(size, flags); if (!area) { return NULL; } addr = area->addr; if (__vmalloc_area_pages(VMALLOC_VMADDR(addr), size, 0, - PAGE_KERNEL, &pages)) { - vfree(addr); + prot, &pages)) { + __vfree(addr, 0); return NULL; } return addr; diff -Naurp linux-2.4.20-wolk4.11-fullkernel/mm/vmscan.c linux-2.4.20-wolk4.12-fullkernel/mm/vmscan.c --- linux-2.4.20-wolk4.11-fullkernel/mm/vmscan.c 2004-04-02 00:27:38.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/mm/vmscan.c 2004-03-16 13:40:11.000000000 +0100 @@ -364,9 +364,9 @@ int launder_page(zone_t * zone, int gfp_ lru_lock(zone); return 1; } else { + /* We cannot write, somebody else can. */ del_page_from_inactive_laundry_list(page); add_page_to_inactive_dirty_list(page); - /* FIXME: this is wrong for !__GFP_FS !!! */ UnlockPage(page); lru_unlock(zone); page_cache_release(page); @@ -771,6 +771,8 @@ int rebalance_laundry_zone(struct zone_s del_page_from_inactive_laundry_list(page); add_page_to_inactive_dirty_list(page); max_loop++; + /* Eventually IO will complete. Prevent OOM. */ + work_done++; } continue; } @@ -843,14 +845,15 @@ int rebalance_dirty_zone(struct zone_str if (!launder_page(zone, gfp_mask, page)) continue; - work_done++; - + if (++work_done > max_work) + break; /* * If we've done the minimal batch of work and there's * no longer any need to rebalance, abort now. */ if ((work_done > BATCH_WORK_AMOUNT) && (!need_rebalance_dirty(zone))) break; + } lru_unlock(zone); @@ -927,11 +930,15 @@ static int do_try_to_free_pages(unsigned /* * Eat memory from filesystem page cache, buffer cache, * dentry, inode and filesystem quota caches. + * + * Because the inactive list might be filled with pages that + * are freeable in principle but not freeable at the moment, + * make sure to always move some pages to the inactive list. */ rebalance_inactive(25); for_each_zone(zone) { if (need_rebalance_dirty(zone)) - rebalance_dirty_zone(zone, BATCH_WORK_AMOUNT, gfp_mask); + ret += rebalance_dirty_zone(zone, BATCH_WORK_AMOUNT, gfp_mask); if (need_rebalance_laundry(zone)) ret += rebalance_laundry_zone(zone, BATCH_WORK_AMOUNT, gfp_mask); diff -Naurp linux-2.4.20-wolk4.11-fullkernel/net/ipv4/icmp.c linux-2.4.20-wolk4.12-fullkernel/net/ipv4/icmp.c --- linux-2.4.20-wolk4.11-fullkernel/net/ipv4/icmp.c 2004-04-02 00:27:39.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/net/ipv4/icmp.c 2004-03-26 19:25:40.000000000 +0100 @@ -806,6 +806,8 @@ static void icmp_timestamp(struct sk_buf icmp_param.head_len=sizeof(struct icmphdr)+12; #ifdef CONFIG_IP_NMAP_FREAK_PATCH if(!sysctl_icmp_restrict) + icmp_reply(&icmp_param, skb); +#else icmp_reply(&icmp_param, skb); #endif } diff -Naurp linux-2.4.20-wolk4.11-fullkernel/net/netsyms.c linux-2.4.20-wolk4.12-fullkernel/net/netsyms.c --- linux-2.4.20-wolk4.11-fullkernel/net/netsyms.c 2004-04-02 00:27:40.000000000 +0200 +++ linux-2.4.20-wolk4.12-fullkernel/net/netsyms.c 2004-03-16 14:04:21.000000000 +0100 @@ -617,7 +617,7 @@ EXPORT_SYMBOL(sys_tux_ptr); #endif #if defined(CONFIG_IP_NF_MATCH_STEALTH_MODULE) -#if !defined (CONFIG_IPV6_MODULE) && !defined (CONFIG_KHTTPD) && !defined (CONFIG_KHTTPD_MODULE) && !defined (CONFIG_TUX) && !defined (CONFIG_TUX_MODULE) +#if !defined (CONFIG_IPV6_MODULE) && !defined (CONFIG_KHTTPD) && !defined (CONFIG_KHTTPD_MODULE) && !defined (CONFIG_TUX) && !defined (CONFIG_TUX_MODULE) && !defined (CONFIG_IP_SCTP_MODULE) EXPORT_SYMBOL(tcp_v4_lookup_listener); #endif extern struct sock *udp_v4_lookup(u32 saddr, u16 sport, u32 daddr, u16 dport, int dif);