# This is a BitKeeper generated patch for the following project: # Project Name: Linux kernel tree # This patch format is intended for GNU patch command version 2.5 or higher. # This patch includes the following deltas: # ChangeSet 1.1591 -> 1.1592 # drivers/net/bonding/bond_main.c 1.71 -> 1.72 # # The following is the BitKeeper ChangeSet Log # -------------------------------------------- # 03/12/30 jgarzik@redhat.com 1.1474.13.23 # [netdrvr e100] remove __devinit markers, fixing oops # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.1 # [PATCH] unshare_files # # From: Chris Wright # # Introduce unshare_files as a helper for use during execve to eliminate # potential leak of the execve'd binary's fd. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.2 # [PATCH] use new unshare_files helper # # From: Chris Wright # # Use unshare_files during binary loading to eliminate potential leak of # the binary's fd installed during execve(). As is, this breaks # binfmt_som.c # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.3 # [PATCH] add steal_locks helper # # From: Chris Wright # # Add steal_locks helper for use in conjunction with unshare_files to make # sure POSIX file lock semantics aren't broken due to unshare_files. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.4 # [PATCH] use new steal_locks helper # # From: Chris Wright # # Use the new steal_locks helper to steal the locks from the old files struct # left from unshare_files() when the new unshared struct files gets used. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.5 # [PATCH] fix unsigned issue with env_end - env_start # # From: Chris Wright # # Fix for CAN-2003-0462: A race condition in the way env_start and # env_end pointers are initialized in the execve system call and used in # fs/proc/base.c on Linux 2.4 allows local users to cause a denial of # service (crash). # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.6 # [PATCH] fix suid leak in /proc # # From: Chris Wright # # Fix for 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, which causes the program to fail to # change the ownership and permissions of those entries. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.7 # [PATCH] make /proc/tty/driver/ S_IRUSR | S_IXUSR for root only # # From: Chris Wright # # Fix for CAN-2003-0461: /proc/tty/driver/serial in Linux 2.4.x reveals the # exact number of characters used in serial links, which could allow local # users to obtain potentially sensitive information such as the length of # passwords. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.8 # [PATCH] futex uninlining # # text data bss dec hex filename # Before: 4674 1040 4100 9814 2656 kernel/futex.o # After: 4098 1176 4100 9374 249e kernel/futex.o # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.9 # [PATCH] ia32 Message Signalled Interrupt support # # From: long # # # Add support for Message Signalled Interrupt delivery on ia32. # # With a fix from Zwane Mwaikambo # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.10 # [PATCH] EFI support for ia32 # # From: Matt Tolentino # # Attached is a patch that enables EFI boot-up support in ia32 kernels. # # In order to continue to determine whether the kernel should initialize using # EFI tables, I've temporarily added a check on the LOADER_TYPE boot parameter. # Although I haven't requested that elilo be assigned an id for this yet, I've # used this to determine whether the kernel should use the EFI initialization # path as well as a check to see if the EFI_SYSTAB boot parameter contains # anything. If someone has a better suggestion for determining this, I'm # open... # # This patch also uses the existing ioremapping functions to map the efi tables # into kernel virtual address space. I've added an option such that I could # use Dave Hansen's boot_ioremap() before paging_init(). After paging_init, I # then remap the efi memmap using bt_ioremap for use later. This has # eliminated the need for several functions...thanks for the suggestions and # thanks for your help Dave. Still this could use a look-see. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.11 # [PATCH] compat_ioctl for i2c # # From: Benjamin Herrenschmidt # # I needed those for the G5 on ppc64, so here they are, I was only # able to test the SMBUS stuff though. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.12 # [PATCH] sqrt() fixes # # It turns out that the int_sqrt() function in oom_kill.c gets it wrong. # # But fb_sqrt() in fbmon.c gets its math right. Move that function into # lib/int_sqrt.c, and consolidate. # # (oom_kill.c fix from Thomas Schlichter ) # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.13 # [PATCH] scale the initial value of min_free_kbytes # # This tunable refers to the amount of free memory which the VM will attempt to # sustain. It is mainly needed for atomic allocations (eg, networking # receive). # # It is currently hardwired to 1024k, which is far too large for small machines # and too small for large machines. # # Rework it to be 128k on tiny machines and 16M on huge machines. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.14 # [PATCH] Use __GFP_REPEAT for cdrom buffer # # The cdrom driver does an order-4 allocation and the open will fail if that # allocation does not succeed. This happened to me on an unstressed 900MB # machine. # # So add the __GFP_REPEAT flag in there - this will cause the page allocator to # keep on freeing pages until the allocation succeeds. # # It can in theory livelock but in practice I expect it is OK: the user should # just stop running dbench or whatever it is which is gobbling all the memory # and the mount/open will then succeed. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.15 # [PATCH] make name_to_dev_t __init # # It calls __init functions anyway. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.16 # [PATCH] ext3 scheduling latency fix # # Sometimes kjournald has to refile a huge number of buffers, because someone # else wrote them out beforehand - they are all clean. # # This happens under a lock and scheduling latencies of 88 milliseconds on a # 2.7GHx CPU were observed. # # The patch forward-ports a little bit of the 2.4 low-latency patch to fix this # problem. # # Worst-case on ext3 is now sub-half-millisecond, except for when the RCU # dentry reaping softirq cuts in :( # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.17 # [PATCH] cmpci.c: remove pointless set_fs() # # It is doing a set_fs(KERNEL_DS) for no obvious reason. # # Spotted by margitsw@t-online.de (Margit Schubert-While) # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.18 # [PATCH] Fix dcache and icache bloat with deep directories # # This fixes the recently-reported "fsstress memory leak" problem. It has been # there since November 2002. # # shrink_dcache() has a heuristic to prevent the dcache (and hence icache) from # getting shrunk too far: it refuses to allow the dcache to shrink below # 2*nr_used. # # Problem is, _all_ non-leaf dentries (directories) count as used. So when you # have really deep directory hierarchies (fsstress creates these), nr_used is # really high, and there is no upper bound to the amount of pinned dcache. # # The patch just rips out the heuristic. This means that dcache (and hence # icache (and hence pagecache)) will be shrunk more aggressively. This could # be a problem, and tons of testing is needed - a new heuristic may be needed. # # However I am not able to reproduce the problem which cause me to add this # heuristic in the first place: # # Simple testcase: run a huge `dd' while running a concurrent `watch -n1 # cat /proc/meminfo'. The program text for `cat' gets loaded from disk once # per second. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.19 # [PATCH] NSL config fixes # # From: OGAWA Hirofumi # # - use "select" instead of "depend" # # - remove the unused SMB_NLS # # - remove unneeded "default y" of CONFIG_NLS # # - revert to postion of nls menu (middle of filessytem menus is strange) # # - fix "#ifdef CONFIG_NLS" on UDF (should this add new one to Kconfig?) # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.20 # [PATCH] Fix init_i82365 sysfs ordering oops # # From: Russell King # # This oops has been caused by the need to register the class before # registering any objects against it. Unfortunately, the class needs # to be registered asynchronously in a separate thread to avoid driver # model deadlock with yenta with cardbus cards inserted or standard # PCMCIA cards not being detected correctly due to a race. # # I think the only real solution is to remove the class_device_create_file # calls from all socket drivers. This is just a simple commenting out of # the calls, and should be suitable for the remainder of the -test kernels. # # Due to the number of cases that we're encountering with PCMCIA, I'm # beginning to wonder if the driver model could be fixed to be more kind # to PCMCIA by avoiding some of these ordering dependencies. None of this # would be a problem if the driver model would allow PCI device drivers to # register PCI devices while their probe or remove functions were executing. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.21 # [PATCH] Fix proc_pid_lookup vs exit race # # From: Manfred Spraul # # Fixes a race between proc_pid_lookup and sys_exit. # # - The inodes and dentries for /proc//whatever are cached in the dentry # cache. d_revalidate is used to protect against stale data: d_revalidate # returns invalid if the task exited. # # Additionally, sys_exit flushes the dentries for the task that died - # otherwise the dentries would stay around until they arrive at the end of # the LRU, which could take some time. But there is one race: # # - proc_pid_lookup finds a task and prepares new dentries for it. It must # drop all locks for that operation. # - the process exits, and the /proc/ dentries are flushed. Nothing # happens, because they are not yet in the hash tables. # - proc_pid_lookup adds the task to the dentry cache. # # Result: dentry of a dead task in the hash tables. # # The patch fixes that problem by flushing again if proc_pid_lookup notices # that the thread exited while it created the dentry. The patch should go # in, but it's not critical. # # # - task->proc_dentry must be the dentry of /proc/. That way sys_exit # can flush the whole subtree at exit time. proc_task_lookup is a direct # copy of proc_pid_lookup and handles /proc/<>/task/. It contains the # lines that set task->proc_dentry. This is bogus, and must be removed. # # This hunk is much more critical, because creates a de-facto dentry leak # (they are recovered after flushing real dentries from the cache). # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.22 # [PATCH] Add `gcc -Os' config option # # From: Adrian Bunk # # Allow the kernel to be built with `-Os'. # # It requires CONFIG_EMBEDDED. This is to make it "hard to get at" because # one gcc version (3.2.x I think) from RH9 generates crashy kernels with this # option set. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.23 # [PATCH] Fix sysenter disabling in vm86 mode # # From: Brian Gerst # # The current code disables sysenter when first entering vm86 mode, but does # not disable it again when coming back to a vm86 task after a task switch. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.24 # [PATCH] serial console registration bugfix # # From: Bjorn Helgaas # # uart_set_options() can dereference a null pointer. This happens if you # specify a console that hasn't previously been setup by early_serial_setup(). # # For example, on ia64, the HCDP typically tells us about line 0, so we calls # early_serial_setup() for it. If the user specifies "console=ttyS3", we # machine-check when trying to follow the uninitialized port->ops pointer. # # It's not entirely clear to me whether we should return 0 or -ENODEV or # something. The advantage of returning zero is that if the user specifies # "console=ttyS0" and we just lack the HCDP, the console doesn't work as early # as usual, but it does start working after the serial driver detects the port # (though the baud/parity/etc from the command line are lost). Returning # -ENODEV seems to prevent it from ever working. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.25 # [PATCH] vmscan: reset refill_counter after refilling the inactive list # # zone->refill_counter is only there to provide decent levels of work batching: # don't call refill_inactive_zone() just for a couple of pages. # # But the logic in there allows it to build up to huge values and it can # overflow (go negative) which will disable refilling altogether until it wraps # positive again. # # Just reset it to zero whenever we decide to do some refilling. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.26 # [PATCH] Be verbose about the ia32 time source # # From: john stultz # # The patch arranges for each timesource type to have a name, and uses that to # tell the user which timesource is in use at bootup time. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.27 # [PATCH] Get modpost to work properly with vmlinux in a different directory # # From: "Bryan O'Sullivan" # # The current version of modpost breaks if invoked from outside the build # tree. This patch fixes that, and simplifies the code a bit while it's at # it. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.28 # [PATCH] Restore /proc/pid/maps formatting # # The seq_file conversion of /proc/pid/maps caused altered behaviour with # respect to 2.4.22. Before the conversion, spaces and tabs in filenames were # displayed verbatim. After the conversion they are escaped as \040, etc. # # Also, if the mmapped file has been unlinked the output appears as # # 40017000-40018000 rw-p 00000000 03:02 1425800 /home/akpm/foo\040(deleted) # # instead of # # 40017000-40018000 rw-p 00000000 03:02 1425800 /home/akpm/foo (deleted) # # This could break applications which parse /proc/pid/maps (one person has # reported this). # # The patch restores the 2.4.20 behaviour. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.29 # [PATCH] ia32 WP test cleanup # # From: Zwane Mwaikambo # # Make the test unconditional - we can always run it now we have fixmap # support. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.30 # [PATCH] Fix for more than 256 CPUs # # From: Paul Jackson # # The patch is needed to build NR_CPUS > 256. # # Without this fix, you get compile errors: # include/linux/cpumask.h: In function `next_online_cpu': # include/linux/cpumask.h:56: structure has no member named `val' # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.31 # [PATCH] Use NODES_SHIFT to calculate ZONE_SHIFT # # From: jbarnes@sgi.com (Jesse Barnes) # # Now that we have a proper NODES_SHIFT value, we need to use it to define # ZONE_SHIFT otherwise we'll spill over 8 bits if we have more than 85 nodes. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.32 # [PATCH] optimize ia32 memmove # # From: Manfred Spraul # # The memmove implementation of i386 is not optimized: it uses movsb, which is # far slower than movsd. The optimization is trivial: if dest is less than # source, then call memcpy(). markw tried it on a 4xXeon with dbt2, it saved # around 300 million cpu ticks in cache_flusharray(): # # oprofile, GLOBAL_POWER_EVENTS, count 100k # Before: # c0144ed1 : /* cache_flusharray total: 21823 0.0165 */ # 6 4.5e-06 :c0144f8e: cmp %esi,%ebx # 11 8.3e-06 :c0144f90: jae c0144f9e # 3 2.3e-06 :c0144f92: mov %ebx,%edi # 7305 0.0055 :c0144f94: repz movsb %ds:(%esi),%es:(%edi) # 201 1.5e-04 :c0144f96: add $0x10,%esp # # After: # c0144f1d : /* cache_flusharray total: 17959 0.0136 */ # 1270 9.6e-04 :c0144f1d: push %ebp # [snip] # 6 4.6e-06 :c0144fdc: cmp %esi,%ebx # 13 9.9e-06 :c0144fde: jae c0145000 # 2 1.5e-06 :c0144fe0: mov %edx,%eax # 1 7.6e-07 :c0144fe2: mov %ebx,%edi # 11 8.4e-06 :c0144fe4: shr $0x2,%eax # 1 7.6e-07 :c0144fe7: mov %eax,%ecx # 4129 0.0031 :c0144fe9: repz movsl %ds:(%esi),%es:(%edi) # 261 2.0e-04 :c0144feb: test $0x2,%dl # 27 2.1e-05 :c0144fee: je c0144ff2 # :c0144ff0: movsw %ds:(%esi),%es:(%edi) # 95 7.2e-05 :c0144ff2: test $0x1,%dl # 96 7.3e-05 :c0144ff5: je c0144ff8 # :c0144ff7: movsb %ds:(%esi),%es:(%edi) # 121 9.2e-05 :c0144ff8: add $0x1c,%esp # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.33 # [PATCH] Fix writev atomicity on pipe/fifo # # From: OGAWA Hirofumi # # Current writev() of pipe/fifo can be interleaved with data from other # processes doing writes even when the requests size is <= PIPE_BUF. These # writes should in fact be atomic. # # The readv() side is also supported for same behavior with read(). And it # is faster. # # readv/writev version of bw_pipe in LMbench # # 2.6.0-test9-bk12 # hirofumi@devron (i686-pc-linux-gnu)[1010]$ ./bw_pipe -m 4096 -M 5 # Pipe bandwidth: 45.53 MB/sec # hirofumi@devron (i686-pc-linux-gnu)[1009]$ ./bw_pipe -m 1024 -M 5 # Pipe bandwidth: 20.08 MB/sec # # 2.6.0-test9-bk12 + patch # hirofumi@devron (i686-pc-linux-gnu)[1001]$ ./bw_pipe -m 4096 -M 5 # Pipe bandwidth: 65.98 MB/sec # hirofumi@devron (i686-pc-linux-gnu)[1002]$ ./bw_pipe -m 1024 -M 5 # Pipe bandwidth: 32.19 MB/sec # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.34 # [PATCH] lockless semop # # From: Manfred Spraul # # attached is the lockless semop patch. I did another test run with # idle=poll on an pentium III, and it remained unchanged: 99.9% direct # fast path, 0.1% race with wakeup against writing the final result code: # # http://khack.osdl.org/stp/282936/environment/proc/slabinfo # # That means there is no immediate need to add the two-stage # implementation to finish_wait. # # It reduces the spinlock operations on the semaphore array spinlock by 1/3. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.35 # [PATCH] use alloc_percpu in percpu_counters # # From: Martin Hicks # # Once NR_CPUS exceeds about 300 ext2 and ext3 will not compile, because the # percpu counters in the superblocks are so huge that they cannot be kmalloced. # # Fix this by converting the percpu_counter mechanism to use alloc_percpu() # rather than an NR_CPUS-sized array. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.36 # [PATCH] find_busiest_queue() commentary fix # # From: Ingo Molnar # # Clarify a comment in the CPU scheduler. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.37 # [PATCH] fix SOUND_CMPCI Configure help entry # # From: Adrian Bunk # # the issue below is only a minor documentation fix, but it has confused # me when configuring a kernel for such a card. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.38 # [PATCH] eicon/ and hardware/eicon/ drivers using the same symbols # # From: Adrian Bunk # # The legacy eicon driver in drivers/isdn/eicon is the old one and will be # removed as soon as all features went to the new driver. Anyway this old # driver was never meant to be non-module. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.39 # [PATCH] seq_file version of /proc/interrupts # # From: corbet@lwn.net (Jonathan Corbet) # # This converts all architectures' /proc/interrupts implementation over to # seq_file. We need this for SMP machines with ridiculous numbers of CPUs and # if you convert one arch, you have to convert them all... # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.40 # [PATCH] Intel 440gx PCI IDs # # - Add missing PCI ID # # - Forward-port IRQ routing workaround from 2.4. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.41 # [PATCH] support centrino 1GHz # # From: Jeremy Fitzhardinge # # I've been getting quite a lot of people mailing me about this CPU. It # seems Toshiba has released a machine with it. It would be nice if this # patch gets into a kernel soonish. It's very low-impact. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.42 # [PATCH] document elevator= parameter # # From: Valdis.Kletnieks@vt.edu # # Nick wrote a nice as-iosched.txt file, but apparently nobody updated the # kernel-parameters.txt file... # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.43 # [PATCH] missing padding in cpio_mkfile in usr/gen_init_cpio.c # # From: Olaf Hering # # We need to update `offset' here so that the subsequent push_pad() (which # uses `offset') will do the right thing. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.44 # [PATCH] watchdog write() return value fixes # # From: gleb@nbase.co.il (Gleb Natapov) # # There is inconsistency in fops->write() implementation in different # watchdog drivers. Some of them return number of bytes written while others # return 1. # # I think the correct implementation should always return number of bytes # written (we examine all the buffer after all) otherwise "echo V > # /dev/watchdog" doesn't work as expected (it doesn't stop watchdog). # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.45 # [PATCH] Minor bug fixes to the compat layer # # From: Arun Sharma # # - Several instances where we were using pid_t instead of uid_t # # - If the caller passed a NULL `oldact' pointer into sys_sigprocmask then # don't try to write the old sigmask there. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.46 # [PATCH] ide-tape update # # From: Bartlomiej Zolnierkiewicz , # Stuart Hayes # # - Check drive's write protect bit, try to return appropriate # errors when attempting to write a write-protected tape. # # - Moved "idetape_read_position" call in idetape_chrdev_open # after the "wait_ready" call. # # - Added IDETAPE_MEDIUM_PRESENT flag so driver would know # not to rewind tape after ejecting it. # # - Fixed bug with ide_abort_pipeline (it was deleting stages # from tape->next_stage to end, instead of from # new_last_stage->next (tape->next_stage was set to NULL # by idetape_discard_read_pipeline before calling!). # # - Made improvements to idetape_wait_ready. # # - Added a few comments here and there. # # - Made MTOFFL unlock tape drive door before attempting to eject. # # - Added fixes to get Seagate STT3401A Travan working: # Handle drives that don't support 0-length reads/writes increased timeout # (retension takes ~10 minutes before irq is returned). # Fixed request mode page packet command byte 3. # # Also remove code depending on NO_LONGER_REQUIRED to match 2.4.x (me). # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.47 # [PATCH] PIIX5 Doesn't work on IA64 # # From: Peter Chubb # # The PIIX5 IDE controller on I2000 IA64 boxen using the 460GX chipset will # hang on startup if an ordinary harddrive is plugged into it (it seems to # workj for the LSI120 and the CDROM drives). # # This is because the 460GX chipset contains a PCI expanssion bridge that # works like the 450NX PXB, and has the same PCI ID (but a later revision). # The PIIX driver, to work around interactions between PIIX4 and the 450NX # PXB, tries to disable DMA. # # Unfortunately, the way it tries to disable DMA doesn't work, and the higher # layers think that DMA is still on, and so timeout waiting for DMA, and then # hang on bootup. # # A simple workaround is to tighten the check for the buggy chipset, as in # the attached patch. However, someone with more time (and who actually # *understands* the IDE subsystem) needs to fix the real bug as well. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.48 # [PATCH] Can't disable IDE DMA # # From: Peter Chubb # # If you try to disable IDE DMA from Kconfig, you'll end up with an undefined # symbol, ide_hwif_setup_dma(). # # The attached rather ugly patch fixes the problem by defining a dummy # function. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.49 # [PATCH] IDE MMIO fix # # From: Alan Cox # # IDE core code had the mmio==2 (ioremap) mode supported but two small changes # had been missed for ide-dma.c. Without this fix mmio IDE controllers bomb if # you have plenty of memory as it uses request_mem_region on an ioremap return. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.50 # [PATCH] IDE capability elevation fix # # From: Alan Cox # # Capability elevation bug in 2.6.0 IDE. Long fixed in 2.4.x, trivial to cure # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.51 # [PATCH] Add lib/parser.c kernel-doc # # From: Will Dyson # # Add documentation and comments to lib/parser.c and include/linux/parser.h # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.52 # [PATCH] cpumask.h reorg # # From: Paul Jackson # # Push the cpumask implementation from linux/cpumask.h into asm/cpumask.h, so # that ia64 can do special things without breaking sparc64. # # 1) Each arch has its own include/asm-/cpumask.h file # # 2) That arch-specific header file can include , # if it wants to make use of the generic cpumask implementation. # # 3) Using code should continue to include linux/cpumask.h, which # in turn includes asm/cpumask.h. Some common implementation # independent cpumask related items, such as the cpu_online_map, # are declared directly in linux/cpumask.h. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.53 # [PATCH] new /proc/irq cpumask format; consolidate cpumask display and input code # # From: Paul Jackson # # This patch is a followup to one from Bill Irwin. On Nov # 17, he had consolidated the half-dozen chunks of code # that displayed cpumasks in /proc/irq/prof_cpu_mask and # /proc/irq//smp_affinity into a single routine, which he # called format_cpumask(). # # I believe that Andrew Morton has accepted Bill's patch into # his 2.6.0-test10-mm1 patch set as the "format_cpumask" patch. # I hope that the following patch will replace Bill's patch. # I look forward to Bill's feedback on this patch. # # The following patch carries Bill's work further: # # 1) It also consolidates the input side (write syscalls). # 2) It adapts a new format, same on input and output. # 3) The core routines work for any multi-word bitmask, # not just cpumasks. # 4) The core routines avoid overrunning their output # buffers. # # Note esp. for David Mosberger: # # The small patch I sent you and the linux-ia64 list # yesterday entitled: "check user access ok writing # /proc/irq//smp_affinity" for arch ia64 only is # _separate_ from the following patch. Neither presumes the # other. However, they do collide on one line. Last one in # is a Monkey's Uncle and will need an updated patch from me # (or otherwise need to resolve the one obvious collision). # # Details of the following patch: # # Both the display and input of cpumasks on 9 arch's are # consolidated into a single pair of routines, which use the # same format for input and output, as recommended by Tony # Luck. The two common routines work on any multi-word bitmask # (array of unsigned longs). A pair of trivial inline wrappers # cpumask_snprintf() and cpumask_parse() hide this generality # for the common case of cpumask input and output. # # My real motivation for consolidating this code will become # visible later - when I seek to add a nodemask_t that resembles # cpumask_t (just a different length). These common underlying # routines will be used there as well, following up on a suggestion # of Christoph Hellwig that I investigate implementing nodemask_t # as an ADT sharing infrastructure with cpumask_t. However, I # believe that this patch stands on its own merit, consolidating # a couple hundred lines of duplicated code, and making the # cpumask display format usable on very large systems. # # There are two exceptions to the consolidation - the alpha and # sparc64 arch's manipulate bare unsigned longs, not cpumask_t's, # on input (write syscall), and do stuff that was more funky than # I could make sense of. So the input side of these two arch's # was left as-is. I'd welcome someone with access to either of # these systems to provide additional patches. # # The new format consists of multiple 32 bit words, separated by # commas, displayed and input in hex. The following comment from # this patch describes this format further: # # * The ascii representation of multi-word bit masks displays each # * 32bit word in hex (not zero filled), and for masks longer than # * one word, uses a comma separator between words. Words are # * displayed in big-endian order most significant first. And hex # * digits within a word are also in big-endian order, of course. # * # * Examples: # * A mask with just bit 0 set displays as "1". # * A mask with just bit 127 set displays as "80000000,0,0,0". # * A mask with just bit 64 set displays as "1,0,0". # * A mask with bits 0, 1, 2, 4, 8, 16, 32 and 64 set displays # * as "1,1,10117". The first "1" is for bit 64, the second # * for bit 32, the third for bit 16, and so forth, to the # * "7", which is for bits 2, 1 and 0. # * A mask with bits 32 through 39 set displays as "ff,0". # # The essential reason for adding the comma breaks was to make # the long masks from our (SGI's) big 512 CPU systems parsable by # humans. An unbroken string of 128 hex digits is pretty difficult # to read. For those who are compiling systems with CONFIG_NR_CPUS # of 32 or less, there should be no visible change in format. # # There are of course a thousand possible output formats that # meet similar criteria. If someone wants to lobby for and seek # consensus behind another such format, that's fine. Now that # the format is consolidated into a single pair of routines, # it should be easy to adapt whatever we choose. # # Internally, the display routine uses snprintf to track the # remaining space in its output buffer, to avoid the risk of # overrunning it. # # A new file, lib/mask.c, is added to the lib directory, to # hold the two common routines. I anticipate adding a few more # common routines for generic support of multi-word bit masks to # lib/mask.c, in subsequent patches that will add a nodemask_t # type as an ADT sharing implementation with cpumask_t. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.54 # [PATCH] Add support for SGI's IOC4 chipset # # From: Aniket Malatpure # # Adds support for the IOC4 IDE part. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.55 # [PATCH] Remove CLONE_FILES from init kernel thread creation # # From: James Morris # # The patch below removes the CLONE_FILES flag from the kernel_thread() call # which starts init. # # This is to prevent other kernel threads from sharing file descriptors # opened by init (try 'lsof /dev/initctl' on a 2.6 system :-). # # The reason this patch is being proposed is so that usermode helper apps # launched via kernel threads (e.g. modprobe, hotplug) do not then inherit # any such file descriptors. This is not a problem in itself so far (other # than being messy), but it is a problem for SELinux, which will otherwise # need to grant access to /dev/initctl by modprobe and hotplug, a somewhat # undesirable scenario. # # As far as I can tell, there is no reason why init needs to be spawned with # CLONE_FILES. Please let me know if there are any objections to the # change, which I would like to propose for 2.6.0+ as a cleanup. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.56 # [PATCH] pagefault accounting fix # # From: William Lee Irwin III # # Our accounting of minor faults versus major faults is currently quite wrong. # # To fix it up we need to propagate the actual fault type back to the # higher-level code. Repurpose the currently-unused third arg to ->nopage # for this. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.57 # [PATCH] fix oops in proc_kill_inodes() # # proc_kill_inodes() walks the s_files list, playing with ->f_dentry. # # But there is a window in which __fput() will leave a file on that list with a # null f_dentry and f_vfsmnt. # # I'm not sure it was ever confirmed that this fixed the reported oops, but it # seems much better to set those fields to null _after_ removing the filp from # the list. # # (Actually, there's no need to null those pointers out at all. But whatever; # it caught a bug). # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.58 # [PATCH] remove lock_kernel() from proc_bus_pci_lseek() # # Remove pointless lock_kernel(), replace with the standard-but-still-odd # i_sem-based lseek locking. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.59 # [PATCH] remove include recursion from linux/pagemap.h # # From: Arnaldo Carvalho de Melo # # pagemap.h, do not include thyself. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.60 # [PATCH] ext3: bd_claim for journal device # # From: Neil Brown # # Change ext3 to run bd_claim() against external journal devices. It is # significant only for those who have ext3 journals on a separate device, and # gets exclusive access to that device. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.61 # [PATCH] dm and bounce buffer panic fix # # From: Mark Haverkamp # # About three weeks ago markw at osdl posted a mail about a panic that he # was seeing: # # http://marc.theaimsgroup.com/?l=linux-kernel&m=106737176716474&w=2 # # I believe what is happening, is that the dm __clone_and_map function is # generating bio structures with the bi_idx field non-zero. When # __blk_queue_bounce creates a new bio with bounce pages, it sets the bi_idx # field to 0 rather than the bi_idx of the original. This causes trouble since # bv_page pointers will be dereferenced later that are zero. The following # uses the original bio structure's bi_idx in the new bio structure and in # copy_to_high_bio_irq and bounce_end_io. # # This has cleared up the panic when using the volume. # # (acked by Joe Thornber) # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.62 # [PATCH] statfs64 fix # # From: Andi Kleen # # It fixes the statfs64 emulation on x86-64. The problem is that x86-64 # needs an __attribute__((aligned)) on the compat_statfs64 structure. The # conclusion last time this was discussed was that the structure should be # duplicated. # # Essentially it is the old shared structure copied to every user and x86-64 # uses __attribute__((packed)). # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.63 # [PATCH] Add a.out support for x86-64 # # From: Andi Kleen # # Add 32bit a.out support for x86-64. # # Not exactly an important bug fix, but maybe it will help someone. This # should increase the current 98% compatibility to i386 to perhaps 98.1% @) # # I tested an old a.out SuSE 4.2 installation in chroot and it worked. It # also ran some very old linux binaries from '92 found on ftp.funet.fi. The # only program that didn't was the SuSE a.out GNU emacs, but I was too lazy # to track that down. Core dumps are not supported. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.64 # [PATCH] Critical x86-64 IOMMU fixes for 2.6.0 # # From: Andi Kleen # # Please consider applying this patch, I would consider it critical for x86-64. # # The 2.6.0 x86-64 IOMMU code unfortunately had a few problems, leading # to non booting systems and in a few cases to data corruption. # # It fixes a two serious bugs in handling special kinds of scatter gather # lists in pci_map_sg. # # AGP was completely broken with IOMMU because of a wrong #ifdef. # Fix that. # # One TLB flush optimization I did a long time ago seems to break on # some 3ware boards (who require IOMMU because they don't support 64bit # addresses). The breakage lead to data corruption. This patch diables # the optimization for now and fixes a potential SMP race in the flush # code too. The TLB flush is done in a slower, but more reliable way # now too. # # This patch fixes them. Please consider applying, because some of these # problems hit quite many people. # # This also disables the IOMMU_DEBUG in the defconfig. A lot of people # were using the IOMMU when they didn't need to, which multiplied the # problems. # # IOMMU merge is disabled for now. This was an experimental optimization # which helped with some block devices, but for production it seems to # be better to disable it for now because there are some questionable # corner cases when the IOMMU aperture fragments. The same is done # for IOMMU SAC force, which was related to that. # # i386 has quite broken semantics for pci_alloc_consistent(). It uses # the standard device DMA mask instead of the consistent mask. Make us # bug-to-bug compatible here. This fixes problems with some sound # drivers that don't support full 32bit addressing. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.65 # [PATCH] Fix CPUID compilation on x86-64 # # From: Andi Kleen # # A lot of people have run into this: the x86-64 cpuid driver didn't # compile as module. # # Using a kludge suggested by Sam Ravnsborg. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.66 # [PATCH] Fix sysrq-t on x86-64 # # From: Andi Kleen # # From Badari Pulavarty # # Without this sysrq-t shows the same backtrace for all processes on x86-64 # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.67 # [PATCH] Fix 32bit truncate on x86-64 # # From: Andi Kleen # # Another potential data corruption fix. # # The 32bit truncate64 on x86-64 did silently truncate # offsets >32bit. That broke mysql for example. Fix that. # # From Chris Wilson # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.68 # [PATCH] Add more paranoid checking in x86-64 prefetch checker # # From: Andi Kleen # # Make sure we never access anything in kernel mapping while # doing the prefetch workaround checks on x86-64. # # Originally suggested by Jamie Lockier. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.69 # [PATCH] Merge i386 fix for page fault to x86-64 # # From: Andi Kleen # # Merge the i386 fix for the page fault from Linus to x86-64 # (I'm not actually sure what it fixes, but if it's good for 32bit # it is likely good for 64bit too) # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.70 # [PATCH] Signal fixes for x86-64 # # From: Andi Kleen # # Merge signal race fixes from i386 to x86-64. # # Fix a bug in system call restart, noted by John Blackwood. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.71 # [PATCH] Don't panic in mpparse on x86-64 # # From: Andi Kleen # # Merge i386 fix. Don't panic in MP table parsing when the table is bad. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.72 # [PATCH] Fix 32bit siginfo problems on x86-64 # # From: Andi Kleen # # 32bit siginfo would sometimes get passed incorrectly on x86-64. This # change fixes the conversion function to be a bit dumber, but more # correct. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.73 # [PATCH] remove mm->swap_address # # From: William Lee Irwin III # # This field is 100% unused. This patch removes it. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.74 # [PATCH] sis comparison / assignment operator fix # # From: Geoffrey Lee # # This fixes what seems to be an obvious = vs == bug in the init301.c sis # file. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.75 # [PATCH] Fix possible oops in vfs_quota_sync() # # From: Jan Kara # # I'm sending you a fix of possible Oops in vfs_quota_sync(). Actually # nobody has run into that I found it when I was looking through the code. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.76 # [PATCH] Ext3+quota deadlock fix # # From: Jan Kara # # here's patch which should fix deadlock with quotas+ext3 reported in 2.4 # (the same problem existed in 2.6 but nobody found it). # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.77 # [PATCH] BINFMT_ELF=m is not an option # # From: glee@gnupilgrims.org # # I think Adrian had forgotten to update the help text. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.78 # [PATCH] md: Limit max_sectors on md when merge_bvec_fn defined on underlying device. # # From: NeilBrown # # As no md personalities honour the merge_bvec_fn of underlying devices, # we must make sure never to submit a bio larger than 1 page when a # merge_bvec_fn is defined. # # raid5 already does this (it never submits bios larger than one page). # With this patch, all other raid personalities limit their # max_sectors when a merge_bvec_fn is present. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.79 # [PATCH] md: set ra_pages for raid0/raid5 devices properly. # # From: NeilBrown # # stripe to be effective. This patch sets ra_pages # appropriately. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.80 # [PATCH] Erronous use of tick_usec in do_gettimeofday # # From: Joe Korty # # do_gettimeofday() is using tick_usec which is defined in terms of USER_HZ # not HZ. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.81 # [PATCH] fix ELF exec with huge bss # # From: Roland McGrath # # The following test program will crash every time if dynamically linked. # I think this bites all 32-bit platforms, including 32-bit executables on # 64-bit platforms that support them (and could in theory bite 64-bit # platforms with bss sizes beyond the bounds of comprehension). # # volatile char hugebss[1080000000]; # main() { printf("%p..%p\n", &hugebss[0], &hugebss[sizeof hugebss]); # system("cat /proc/$PPID/maps"); # hugebss[sizeof hugebss - 1] = 1; # return 23; # } # # The problem is that the kernel maps ld.so at 0x40000000 or some such place, # before it maps the bss. Here the bss is so large that it overlaps and # clobbers that mapping. I've changed it to map the bss before it loads the # interpreter, so that part of the address space is reserved before ld.so's # mapping (which doesn't really care where it goes) is done. # # This patch also adds error checking to the bss setup (and interpreter's bss # setup). With the aforementioned change but no error checking, "ulimit -v # 65536; ./hugebss" will crash in the store after the `system' call, because # the kernel will have failed to allocate the bss and ignored the error, so # the program runs without those pages being mapped at all. With this change # it dies with a SIGKILL as for a failure to set up stack pages. It might be # even better to try to detect the case earlier so that execve can return an # error before it has wiped out the address space. But that seems like it # would always be fragile and miss some corner cases, so I did not try to add # such complexity. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.82 # [PATCH] O_DIRECT memory leak fix # # From: Badari Pulavarty # # I found the problem with O_DIRECT memory leak. # # The problem is, when we are doing DIO read and crossed the end of file - we # don't release referencess on all the pages we got from get_user_pages(). # (since it is a success case). # # The fix is to call dio_cleanup() even for sucess cases. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.83 # [PATCH] JBD: b_committed_data locking fix # # The locking rules say that b_committed_data is covered by # jbd_lock_bh_state(), so implement that during the start of commit, while # throwing away unused shadow buffers. # # I don't expect that there is really a race here, but them's the rules. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.84 # [PATCH] dvb i2c timeout fix # # From: Gerd Knorr # # Below is a ObviouslyCorrect[tm] patch which fixes the i2c bus timeout # handling in the saa7146 driver. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.85 # [PATCH] more correct get_compat_timespec interface # # From: Joe Korty # # The API for get_compat_timespec / put_compat_timespec is incorrect, it # forces a caller with const args to (incorrectly) cast. The posix message # queue patch is one such caller. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.86 # [PATCH] MAINTAINERS vger.rutgers.edu # # From: Geert Uytterhoeven # # Mailing lists at vger.rutgers.edu are obsolete, use vger.kernel.org # instead. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.87 # [PATCH] list_empty_careful() documentation. # # From: Ingo Molnar # # I'd also suggest the following patch below, to clarify the use of # unsynchronized list_empty(). list_empty_careful() can only be safe in the # very specific case of "one-shot" list entries which might be removed by # another CPU. (but nothing else can happen to them and this is their only # final state.) list_empty_careful() is otherwise completely unsynchronized # on both the compiler and CPU level and is not 'SMP safe' in any way. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.88 # [PATCH] Clear dirty bits etc on compound frees # # From: "Martin J. Bligh" , # Guillaume Morin # # We need to clear the software dirty bit on the tail pages of a compound page # when freeing it up. # # The tail pages can become dirtied by mmap'ing /dev/mem, and writing into # any clustered page group (that a driver might have created or whatever). # # Plus it's better to run all these pages through the free_pages_check checks # anyway. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.89 # [PATCH] Allow unimap change on non fg console # # From: Kurt Garloff # # The comment in front of vt_ioctl() reads # /* # * We handle the console-specific ioctl's here. We allow the # * capability to modify any console, not just the fg_console.=20 # */ # # Unfortunately, this does not apply to PIO_UNIMAPCLR, nor # GIO_/PIO_UNIMAP. They always operate on the current foreground # console, which is inconsistent at least. For most ioctls, the # comment is applicable. # # It also causes problems, as setfont can't do the full job on # the non-fg consoles. (OK, our setfont is slightly changed to # even try it ... as you know.) # # The attached patch does fix this. # # I have a similar patch for 2.4, but it never got merged :-( # because not many people seem to care and I submitted in the middle # of the 2.4 series ... # It has been in UnitedLinux/SUSE kernels for ages, though. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.90 # [PATCH] fix outdated comment in jiffies.h # # From: Tim Schmielau # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.91 # [PATCH] slab reclaim accounting fix # # From: Manfred Spraul # # slab_reclaim_pages is increased even if get_free_pages fails. The attached # patch moves the update to the correct position. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.92 # [PATCH] struct_cpy compilation warning # # From: Ingo Molnar # # i've attached a minor fix for the 2.6.1 timeframe - we clearly meant # __struct_cpy_bug(). Newest versions of gcc warn about this. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.93 # [PATCH] More MODULE_ALIASes # # From: Rusty Russell # Steve Youngs, Stephen Hemminger # # Three more MODULE_ALIASes. Trivial, but useful if people want things # to "just work" in 2.6.0. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.94 # [PATCH] nr_slab accounting fix # # From: Manfred Spraul # # if alloc_slabmgmt fails, then kmem_freepages() calls sub_page_state(), # altough nr_slab was not yet increased. The attached patch fixes that by # moving the inc_page_state into kmem_getpages(). # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.95 # [PATCH] isdn_ppp_ccp.c uses uninitialized spinlock # # From: Tonnerre Anklin # # This spinlock was used uninitialized. Gave me a lot of warnings. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.96 # [PATCH] fix userspace compiles with nbd.h # # From: Paul Clements # # A previous "cleanup" on the nbd.h header file broke userspace compiles. # I've added an #ifdef __KERNEL__ so that userspace doesn't need to worry # about the nbd_device structure, which is only used in-kernel. The patch # allows me to compile my nbd tools with the 2.6 nbd.h. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.97 # [PATCH] DAC960 request queue per disk # # From: Dave Olien # # Here's a patch that changes the DAC960 driver from having one request # queue for ALL disks on the controller, to having a request queue for # each logical disk. This turns out to make little difference for deadline # scheduler, nor for AS scheduler under light IO load. But under AS # scheduler with heavy IO, it makes about a 40% difference on dbt2 # workload. Here are the measured numbers: # # The 2.6.0-test11-D kernel version includes this mutli-queue patch to the # DAC960 driver. # # For non-cached dbt2 workload (heavy IO load) # # Scheduler kernel/driver NOTPM(bigger is better) # AS 2.6.0-test11-D 1598 # AS 2.6.0-test11 973 # deadline 2.6.0-test11 1640 # deadline 2.6.0-test11-D 1645 # # For cached dbt2 workload (lighter IO load) # # AS 2.6.0-test11-D 4993 # AS 2.6.-test6-mm4 4976, 4890, 4972 # deadline 2.6.0-test11-D 4998 # # Can this be included in 2.6.0? I know it's not a "critical patch" # in the sense that something won't work without it. On the other hand, # the change is isolated to a driver. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.98 # [PATCH] synchronize use of mm->core_waiters # # From: Roland McGrath # # I believe I have identified a failure mode that Linus saw a couple weeks # back when tracking down some other fork/exit sorts of races. We saw this # come up on rare occasions with the RHEL3 kernel's backport of the new code # (while trying to track down other race failure modes we have yet to fix, sigh). # # I am talking about the following scenario: # # > Btw, even with the fix, doing a "while : ; ./crash t 10 ; done" will # > eventually result in a stuck process: # > # > 1415 tty1 D 0:00 ./crash # > # > This is some kind of deadlock: most of the fifty threads are in "D" # > state, with a trace something like # > # > [] schedule+0x360/0x7f8 # > [] wait_for_completion+0xd4/0x1c3 # > [] do_exit+0x627/0x6a4 # > [] do_group_exit+0x3d/0x177 # > [] dequeue_signal+0x2d/0x84 # > [] get_signal_to_deliver+0x390/0x575 # > [] do_signal+0x6c/0xf1 # > [] default_wake_function+0x0/0x12 # > [] default_wake_function+0x0/0x12 # > [] do_futex+0x6d/0x7d # > [] sys_futex+0x116/0x12f # > [] do_notify_resume+0x3b/0x3d # > [] work_notifysig+0x13/0x15 # > # > except for one that is trying to core-dump: # > # > [] wait_for_completion+0xd4/0x1c3 # > [] default_wake_function+0x0/0x12 # > [] default_wake_function+0x0/0x12 # > [] rwsem_wake+0x86/0x12d # > [] coredump_wait+0xa8/0xaa # > [] do_coredump+0x175/0x26c # > # > and three that are just doing a regular "exit()" system call: # > # > [] schedule+0x360/0x7f8 # > [] recalc_task_prio+0x90/0x1aa # > [] wait_for_completion+0xd4/0x1c3 # > [] default_wake_function+0x0/0x12 # > [] default_wake_function+0x0/0x12 # > [] rwsem_wake+0xe3/0x12d # > [] do_exit+0x627/0x6a4 # > [] next_thread+0x0/0x53 # > [] syscall_call+0x7/0xb # > # > However, the rest of the system is totally unaffected by this deadlock: # > it's only deadlocked withing the thread group itself, nobody else cares. # # What happens here is a race between an exiting thread checking # mm->core_waiters in __exit_mm, and the thread taking the core-dump signal # (in coredump_wait) examining the first thread's ->mm pointer and # incrementing mm->core_waiters to account for it. There is no # synchronization at all in __exit_mm's use of mm->core_waiters. If the # coredump_wait thread reads tsk->mm when tsk is in __exit_mm between # checking mm->core_waiters and clearing tsk->mm, then it will increment # mm->core_waiters and the total count will later exceed the number of # threads that will ever decrement it and synchronize. Hence it blocks forever. # # The following patch fixes the problem by using mm->mmap_sem in __exit_mm. # The read lock must be held around checking mm->core_waiters and clearing # tsk->mm so that coredump_wait (which gets the write lock) cannot come in # between and do bogus bookkeeping. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.99 # [PATCH] Rename legacy_bus to platform_bus # # From: Jeff Garzik # # I've seen this patch floating around. Not sure the origin, but it's # surfaced on lkml and also when I was poking around handhelds.org CVS for # iPAQ patches: on non-PCs, particularly system-on-chip devices but not # just there, you have a custom "platform bus" that is the root of pretty # much all other devices and buses. # # It's something I wanted to make sure people didn't forget; to make sure # the legacy_bus didn't get "legacied out of existence." ;-) # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.100 # [PATCH] Fix ioctl related warnings in userspace # # From: Johannes Stezenbach # # the patch below removes warnings like: # # warning: signed and unsigned type in conditional expression # # when compiling userspace applications against a glibc built with 2.6 kernel # headers (like on Debian unstable). # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.101 # [PATCH] Winbond w83627hf driver # # From: Pádraig Brady # # Watchdog driver for the Winbond w83627hf which is on the last 3 motherboards # I got here for test (tyan, advantech, force). # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.102 # [PATCH] update sn2 MAINTAINERS file entry # # From: jbarnes@sgi.com (Jesse Barnes) # # Just a quick patch to fix MAINTAINERS for sn2. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.103 # [PATCH] SCC warning fix # # From: Alan Cox # # Just a warning fix and behaviour tidy. Changing the kiss.mintime variable isn't # going to work as its exposed to user space # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.104 # [PATCH] cycx_drv warning fix # # From: Alan Cox # # Type errors, just fixes a warning # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.105 # [PATCH] VIA audio fixes # # From: Alan Cox # # VIA audio had a fix from 2.4 missing so any user could spam the system log. Also # include a fix for a bug which is pending 2.4 fixing too and causes a bogus # warning to be displayed on close of audio file handle. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.106 # [PATCH] Kernel Locking Documentation update # # From: Rusty Russell # # Entirely revised, and largely rewritten. Has a continuing example now, which # I think makes things clearer. Also covers Read Copy Update. This version # further deprecates rwlock_t, shuffles sections for better organization. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.107 # [PATCH] name_to_dev_t() fix # # From: viro@parcelfarce.linux.theplanet.co.uk # # When we register disks, we mangle the disk names that contain slashes (e.g. # cciss/c0d0) replacing them with '!' in corresponding sysfs names. So # name_to_dev_t() should mangle the name in the same way before looking for it # in /sys/block. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.108 # [PATCH] dm: fix block device resizing # # From: Joe Thornber # # When setting the size of a Device-Mapper device in the gendisk entry, also # try to set the size of the corresponding block_device entry's inode. This is # necessary to allow online device/filesystem resizing to work correctly. # [Kevin Corry] # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.109 # [PATCH] dm: remove dynamic table resizing # # From: Joe Thornber # # The dm table size is always known in advance, so we can specify it in # dm_table_create(), rather than relying on dynamic resizing. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.110 # [PATCH] dm: make v4 of the ioctl interface the default # # From: Joe Thornber # # Make the version-4 ioctl interface the default kernel configuration option. # If you have out of date tools you will need to use the v1 interface. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.111 # [PATCH] dm: set io restriction defaults # # From: Joe Thornber # # Make sure that a target has a sensible set of default io restrictions. # -------------------------------------------- # 03/12/29 akpm@osdl.org 1.1474.48.112 # [PATCH] dm: dm_table_event() sleep on spinlock bug # # From: Joe Thornber # # You can no longer call dm_table_event() from interrupt context. # -------------------------------------------- # 03/12/29 torvalds@home.osdl.org 1.1474.48.113 # Merge bk://kernel.bkbits.net/davem/net-2.6 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/12/29 torvalds@home.osdl.org 1.1474.48.114 # Merge bk://bk.arm.linux.org.uk/linux-2.6-serial # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/12/29 torvalds@home.osdl.org 1.1474.1.56 # Merge ia64 conflicts # -------------------------------------------- # 03/12/29 torvalds@home.osdl.org 1.1474.1.57 # Merge bk://gkernel.bkbits.net/net-drivers-2.5 # into home.osdl.org:/home/torvalds/v2.5/linux # -------------------------------------------- # 03/12/30 davem@nuts.ninka.net 1.1474.1.58 # Merge nuts.ninka.net:/disk1/davem/BK/sparcwork-2.6 # into nuts.ninka.net:/disk1/davem/BK/sparc-2.6 # -------------------------------------------- # 03/12/30 davem@nuts.ninka.net 1.1474.49.1 # Merge nuts.ninka.net:/disk1/davem/BK/network-2.6 # into nuts.ninka.net:/disk1/davem/BK/net-2.6 # -------------------------------------------- # 03/12/30 davem@nuts.ninka.net 1.1474.49.2 # Merge nuts.ninka.net:/disk1/davem/BK/net-2.6.1 # into nuts.ninka.net:/disk1/davem/BK/net-2.6 # -------------------------------------------- # 03/12/30 davem@nuts.ninka.net 1.1474.1.59 # [SPARC64]: Fix build after show_interrupts() changes. # -------------------------------------------- # 03/12/30 davem@nuts.ninka.net 1.1474.1.60 # [SPARC32]: Fix build after show_interrupts() changes. # -------------------------------------------- # 03/12/30 bcollins@debian.org 1.1474.1.61 # Merge http://linux.bkbits.net/linux-2.5 # into debian.org:/usr/src/kernel/linux-2.6 # -------------------------------------------- # 03/12/30 bcollins@debian.org 1.1474.1.62 # MAINTAINERS: # [IEEE1394]: Update maintainer info # -------------------------------------------- # 03/12/30 bcollins@debian.org 1.1474.1.63 # video1394.c: # [IEEE1394] # Patch from Damien Douxchamps to fix video1394 when image size is less than # page size. # -------------------------------------------- # 03/12/30 amir.noam@intel.com 1.1592 # [netdrvr bonding] fix build breakage # -------------------------------------------- # diff -Nru a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c --- a/drivers/net/bonding/bond_main.c Wed Dec 31 10:13:11 2003 +++ b/drivers/net/bonding/bond_main.c Wed Dec 31 10:13:11 2003 @@ -1657,8 +1657,8 @@ bond_change_active_slave(bond, NULL); } - if ((bond->params.mode == BOND_MODE_TLB) || - (bond->params.mode == BOND_MODE_ALB)) { + if ((bond_mode == BOND_MODE_TLB) || + (bond_mode == BOND_MODE_ALB)) { /* Must be called only after the slave has been * detached from the list and the curr_active_slave * has been cleared (if our_slave == old_current),