Summary of changes from v2.6.5 to v2.6.6 ============================================ Can not mount from cifs vfs client built with gcc 3.3.1 due to compiler optimization of unsafe global variable. Remove unsafe global variable. Fix problem reconnecting additional mounts to the same server after session failure. Fix invalid dentry when race in mkdir between two clients fix oops in send_sig on unmount of cifs vfs due to sending signal to demultiplex thread after it has exited. Do not treat invalid handle warning in response to oplock break (of file that is now closed) as an error. Fix EIO caused by network timeouts on changing file size. To avoid spurious oplock breaks from server, in the case of inodes that we already have open, avoid doing path based setting of file size if we can do it by handle. This keeps our caching token (oplock) and avoids timeouts when the local oplock break takes longer to flush writebehind data than the SMB timeout for the SetPathInfo request would allow fix to not retime out the same session twice since it can invalidate the newly reestablished session unnecessarily Do not return buffer if request has already timed out. move bad smb session retry to correct location, up one level in cifs vfs code fix endian bug in lockingX and add retry on EAGAIN have to reconnect open files safely, one at a time, as needed finish off move from reopening all files on reconnection (which takes too long under heavy stress) to reopen file as needed after reconnection to server. correct retry on remaining handles based calls Fix compile error Missing soft vs. hard retry mount option Do not grab i_sem (already taken in filemap.c across commit write calls) during reopen of invalidated file handle. Fix oops in mount error path when unload_nls called with bad pointer. Avoid smb data corruption under heavy stress missing message on timed out requests rcvtimeout set improperly for some cifs servers invalidate locally cached pages when server breaks oplock. Do not loop reconnecting for servers that drop tcp session rather than sending smb negprot response Oops on reopen files when dentry already freed invalidate cached pages when last local instance closed so we do not use stale data while someone may be modifying the file on the server. fix double incrementing of transaction counter Fix check of filldir return code during readdir to avoid incomplete search results displayed on very large directories. Fix cleanup of proc entries. Add config parm to allow disabling negotiating Linux extensions allow disabling cifs Linux extensions via proc Fix an incorrect mapping of open flags to cifs open disposition. Fix blocking byte range locks. These fix breakages that were notice running lock tests 1 and 7 of the connectathon posix file api tests set byte range locktimeouts properly fix cifs readme gracefully exit on failed mounts to win98 (which closes tcp session rather than erroring on smb protocol negotiation) fix failed mounts to win98 part II Fix global kernel name space pollution [netdrvr r8169] Conversion of Rx/Tx descriptors to consistent DMA: - use pci_alloc_consistent() for Rx/Tx descriptors in rtl8169_open() (balanced by pci_free_consistent() on error path as well as in rtl8169_close()); - removal of the fields {Rx/Tx}DescArrays in struct rtl8169_private as there is no need to store a non-256 bytes aligned address any more; - fix for rtl8169_open() leak when RxBufferRings allocation fails. Said allocation is pushed to rtl8169_init_ring() as part of an evil cunning plan. [netdrvr r8169] Conversion of Rx data buffers to PCI DMA - endianness is kept in a fscked state as it is in the original code (will be adressed in a later patch); - rtl8169_rx_clear() walks the buffer ring and releases the allocated data buffers. It needs to be used in two places: - rtl8169_init_ring() failure path; - normal device release (i.e. rtl8169_close); - rtl8169_free_rx_skb() releases a Rx data buffer. Mostly an helper for rtl8169_rx_clear(). As such it must: - unmap the memory area; - release the skb; - prevent the ring descriptor from being used again; - rtl8169_alloc_rx_skb() prepares a Rx data buffer for use. As such it must: - allocate an skb; - map the memory area; - reflect the changes in the ring descriptor. This function is balanced by rtl8169_free_rx_skb(). - rtl8169_unmap_rx() simply helps with the 80-columns limit. - rtl8169_rx_fill() walks a given range of the buffer ring and try to turn any descriptor into a ready to use one. It returns the count of modified descriptors and exits if an allocation fails. It can be seen as balanced by rtl8169_rx_clear(). Motivation: - partially abstract the (usually big) piece of code for the refill logic at the end of the Rx interrupt; - factorize the refill logic and the initial ring setup. - simple conversion of rtl8169_rx_interrupt() without rx_copybreak (will be adressed in a later patch). [netdrvr r8169] rtl8169_start_xmit fixes: - it forgot to update stats if the skb couldn't be expanded; - it didn't free it either if the descriptor was not available; - move the spin_unlock nearer of the exit point instead of duplicating it in the new branch. [netdrvr r8169] Conversion of Tx data buffers to PCI DMA: - endianness is kept in a fscked state as it is in the original code (will be adressed in a later patch); - buf_addr of an unmapped descriptor is always set to the same value (cf rtl8169_unmap_tx_skb); - nothing fancy, really. [netdrvr r8169] Rx copybreak for small packets. - removal of rtl8169_unmap_rx() (unneeded as for now). [netdrvr r8169] Add {mac/phy}_version. - change of identification logic in rtl8169_init_board(); - {chip/rtl_chip}_info are merged in rtl_chip_info; - misc style nits (lazy braces, SHOUTING MACROS from realtek converted to functions). [netdrvr r8169] Merge of changes done by Realtek to rtl8169_init_one(): - phy capability settings allows lower or equal capability as suggested in Realtek's changes; - I/O voodoo; - no need to s/mdio_write/RTL8169_WRITE_GMII_REG/; - s/rtl8169_hw_PHY_config/rtl8169_hw_phy_config/; - rtl8169_hw_phy_config(): ad-hoc struct "phy_magic" to limit duplication of code (yep, the u16 -> int conversions should work as expected); - variable renames and whitepace changes ignored. [netdrvr r8169] Merge of timer related changes from Realtek: - changed their timeout value from 100 to HZ to trigger rtl8169_phy_timer(); - s/TX_TIMEOUT/RTL8169_TX_TIMEOUT/ to have RTL8169_{TX/PHY}_TIMEOUT. [netdrvr r8169] Merge of changes from Realtek: - register voodoo in rtl8169_hw_start(). [netdrvr r8169] Driver forgot to update the transmitted bytes counter. Originally done in rtl8169_start_xmit() by Realtek. [netdrvr r8169] Modification of the interrupt mask (RealTek). [netdrvr r8169] Suspend/resume code (Fernando Alencar Marótica). [netdrvr r8169] fix RX Brown paper bag time: the Rx descriptors are contiguous and EORbit only marks the last descriptor in the array. OWNbit implicitly marks the end of the Rx descriptors segment which is owned by the nic. [netdrvr r8169] Endianness update (original idea from Alexandra N. Kossovsky): - descriptors status (bitfields enumerated as _DescStatusBit); - address of buffers stored in Rx/Tx descriptors. [netdrvr r8169] Stats fix (Fernando Alencar Marótica ). [PATCH] 2.6.1-rc1-mm1 - typo of death in the r8169 driver silly bug in the r8169 driver. [netdrvr r8169] fix oops by removing __devinitdata marker [netdrvr r8169] fix rx counter masking bug [netdrvr r8169] fix phy initialization loop init Check return on failed dentry allocation. Suggested by Randy Dunlap Allow null password string pointer and passwords longer than 16 bytes finish handling commas in passwords [netdrvr r8169] fix TX race - possible tx descriptor index overflow (assume tp->dirty_tx = NUM_TX_DESC/2, tp->cur_tx = NUM_TX_DESC - 1 and watch TxDescArray for example); - the status of an inadequate descriptor is checked. NB: the bug will not necessarily noticed when tx_left == 1. finish off mount parm sep override Fix caching problem with multiply open files from different clients Relax requested CIFS permissions on open to simply request GENERIC_READ and GENERIC_WRITE (instead of GENERIC_ALL which can unnecessarily conflict with share permissions by asking implicitly for take ownership and other unneeded flags) fix remoting caching part 2 remove spurious debug messages fix problem not connecting to server when port not specified explicitly and port field unitialized reset searches properly when filldir fails ipv6 enablement for cifs vfs fixes Spurious white space and duplicated line cleanup NTFS: Set i_generation in VFS inode from seq_no in NTFS inode. NTFS: Make ntfs_lookup() NFS export safe, i.e. use d_splice_alias(), etc. NTFS: Make it compile... improve resume key resetting logic when filldir returns error and filename is in unicode allow nosuid mounts NTFS: Release 2.1.7 - Enable NFS exporting of mounted NTFS volumes. - Implement ntfs_get_parent() and ntfs_get_dentry() as the NTFS specific export operations ->get_parent() and ->get_dentry() respectively. NTFS: Add missing return -EOPNOTSUPP; in fs/ntfs/aops.c::ntfs_commit_nonresident_write(). fix problem with inode revalidation and cache page invalidation Fix the exec, suid, dev mount parms to not log warnings when specified [netdrvr r8169] Rx wrap bug: - rtl8169_rx_interrupt() can wrap and process an Rx descriptor that it has invalidated a few iterations before. The patch limits the number of allowed descriptors between two invocations of the Rx refill function; - rtl8169_rx_interrupt() now looks similar to rtl8169_tx_interrupt to highlight the issue. fix caching data integrity problem use safer i_size_write mechanism to update i_size NTFS: Fix off by one error in ntfs_get_parent(). [IEEE1394/OHCI]: Deal with some OHCI implementations that have an invalid max_rec field. IEEE1394/Lynx(r1182): Explicitly set LCtrl bit in phy register set. NTFS: Enforce no atime and no dir atime updates at mount/remount time as they are not implemented yet anyway. PPC32: Add CONFIG_MPC10X_BRIDGE. From: Adrian Cox . PPC32: In some cases we need to make all pages _PAGE_COHERENT. Controll this via the cpu_table flags since it's a requirement in some CPU and host bridge combinations. From: Adrian Cox [PATCH] PATCH [1/15] qla2xxx: Update copyright banner Update copyright banner for all source files. [PATCH] PATCH [2/15] qla2xxx: Track DSDs used by an SRB Track the number of DSDs and request entries required for an SRB in case of a request-entry or command-slot shortage. [PATCH] PATCH [3/15] qla2xxx: Increase MBX IOXB timeout Fix a problem where during heavy I/O the driver would improperly timeout an outstanding MBX IOCB before the firmware itself had a chance to issue and wait for the command to timeout. [PATCH] PATCH [4/15] qla2xxx: Endianess fix while reading stats Return firmware statistics retrieved from qla2x00_get_link_status() in host-endian form. [PATCH] RE: PATCH [5/15] qla2xxx: request entries update For now, I'd say keep everything in the original patch except the hunk that changes SG_ALL -> 32, revised patch attached. [PATCH] PATCH [6/15] qla2xxx: Track error-state of SBRs Consistenly track the error-state of a failed SRB. [PATCH] PATCH [7/15] qla2xxx: Misc. updates with FO resync Misc. updates due to resync with non-embedded (failover-aware) driver. o Add ancillary support definitions. o Remove extraneous *_IOCTL #ifs. o Make qla2x00_cmd_timeout() and its support routines visible to the non-embedded driver. [PATCH] PATCH [8/15] qla2xxx: Use proper HA references Fix issue where the driver would reference the incorrect HA during loop state check. [PATCH] PATCH [9/15] qla2xxx: NVRAM id-list updates Resync with latest NVRAM subsystem ID list. [PATCH] PATCH [10/15] qla2xxx: Use fcports list for targets Consistently use the fcports list of an HA to iterate through the known target devices. [PATCH] PATCH [11/15] qla2xxx: Add login-retry-count override Add a module parameter to override the NVRAM's login retry count value. [PATCH] PATCH [12/15] qla2xxx: Restore update state during resync Restore the UPDATE state of the HA if a resync event occurs during a device (re)discovery. [PATCH] PATCH [13/15] qla2xxx: Device reset fix During a back-door device reset call, hold off execution of commands until the reset is complete. PATCH [14/15] qla2xxx: 23xx/63xx firmware updates Andrew Vasquez Resync with latest released firmware -- 3.02.26. [PATCH] PATCH [15/15] qla2xxx: Update driver version Update version number to 8.00.00b11-k (to indicate embedded driver). [PATCH] USB multi-card reader blacklist updates Here's a couple more blacklist entries. Seems everyone suddenly rushed out and bought one of these multi-card readers. Dave [PATCH] Fix error handler offline behaviour No-one seems to have noticed, but there's a bug in our offline handling which can cause the eh to loop forever when it tries to offline a device (basically offline I/O rejections are done in prep, which doesn't work for already prepped commands). The attached fixes this, and also sweeps offline up into a fairly fully fledged scsi state model. With this applied I can now offline my root device under load without causing a SCSI hang (ext2 BUG()s rather unhappily but at least that's not a SCSI problem). [PATCH] aacraid reset handler update This is an update from the Adaptec version of the driver to the aacraid reset handler. The current code has a logic error that is fixed by this version. This builds against 2.6.5-rc1. [PATCH] Replace scsi_host flags with scsi_device sdev_bflags Replace the scsi_host flags with scsi_device sdev_bflags. Change USB to set sdev_bflags in its new slave_alloc function. [PATCH] Add 192 byte MODE SENSE flag Add a BLIST_MS_192_BYTES_FOR_3F flag. If it is set, sends a 192 byte MODE SENSE in sd.c. SCSI: correct blacklist entry [TG3]: Jumbo frames and FTQ reset patch. 1. Set extended packet length bit in phy register 0x18 shadow register 0 on all chips that support jumbo frames (i.e. all chips except 5705 and its variants). Jumbo frame reception is less reliable (more CRC errors) if this bit is not set. This bit can be set regardless of the current MTU setting. 2. Remove FTQ reset during chip init. This is the best fix for the ASF race condition problem that I mentioned a few months ago. The FTQ reset is redundant as it is already reset during GRC reset. [TG3]: Just completely delete the disabled FTQ reset code. [CPUFREQ] If ->init fails, unregister cpufreq driver. Some cpufreq drivers can only tell whether they work while the per-CPU ->init() function is executed [e.g. the acpi driver]. So that cpufreq_driver isn't blocked by such stale drivers, unload them unless the driver sets a special flag. [CPUFREQ] Use KERN_WARNING for warning. [CPUFREQ] Move the centrino table matching into an own function Only the FEATURE_EST bit for CPU 0 is checked in module_init() directly. As cpufreq drivers aren't sticky any longer (see previous patch), this will not change user-visible behaviour. [CPUFREQ] Merge ACPI perflib. Use ACPI _PSS data to determine valid frequency and voltage pairs on Enhanced SpeedStep-capable processors. An original form of such ACPI-PentiumM-cpufreq interaction was sent to the cpufreq list by David Moore in June last year; the attached patch utilizes his code to set _PDC. The new ACPI "P-States library" is utilized to obtain the correct frequency and MSR value pairs for the speedstep-centrino driver. Only if no such proper table exists (!CONFIG_ACPI, broken ACPI tables, etc.), fall back to the existing hard-coded table. If anyone has a better idea for the Kconfig section, please tell me so. This version of this patch has proper acpi_state setting included, and also has a hint in the banner of the centrino_cpu_init_acpi() function, as Jeremey Fitzhardinge suggested. [CPUFREQ] Export an array of available frequency settings of the centrino driver. [CPUFREQ] Fix up centrino initcall level centrino_init needs to be late_initcall so that the ACPI processor module is completely up and running. [CPUFREQ] SPEEDSTEP_RELAXED_CAP_CHECK option. A few SpeedStep-capable systems don't perform according to specification: the CPUID and/or some MSRs don't tell us the CPU is SpeedStep capable even though it definitely is. Allow a relaxed checking for one such issue by a module parameter only available if a config option is turned on. This is done to avoid the risk of doing invalid speedstep instructions on systems which do not support it, and which might even lead to (hardware) failure. Patch originally from Andres Aeriksson (?) aeriksson at fastmail (dot) fm [CPUFREQ] Fix an off-by-10 value in the detection of the Pentium M processor frequency. [CPUFREQ] Extra __init section function for longrun driver. From Luiz Fernando Capitulino [CPUFREQ] Extra __init section function for longhaul driver. From Luiz Fernando Capitulino Driver Core: fix spaces instead of tabs problem in the Kconfig file. add sysfs support for vc devices. VC: fix bug in vty_init() where vcs_init() was not called early enough. It was being used before initialized, not nice :( [PATCH] I2C: w83781d fan_div code refactoring Quoting myself: > This tends to increase the size of the three set_store_regs_fan_div > functions, and I am considering refactoring them at some point. Later > though. Here is the promised refactoring. Tested on my AS99127F rev.1, seems to work. As for the previous patch, there is a part that I cannot test with the AS99127F, so additional testing is welcome. I agree this makes the code slightly less readable, but this saves 60 lines of code (1754 bytes, around 3% of the driver total), and is actually far less complex that I first feared. [PATCH] I2C: add new chip driver: pcf8574 Please find below a patch against kernel 2.6.5-rc1 to add the pcf8574 driver (an I/O expander for the I2C bus). I have ported it from the 2.4 version, and it includes some fixes and simplifications. It has been reviewed by Jean Delvare on IRC. Driver class: remove possible oops This happens when the device associated with a class device goes away before the class does. [PATCH] QIC-02 tape drive hookup to classes in sysfs Here is a patch to hook up the qic02 tape device to have class support in sysfs. I have verified it compiles. I do not have access to the hardware to test. Could someone who does please verify? From the file: * This is a driver for the Wangtek 5150 tape drive with * a QIC-02 controller for ISA-PC type computers. * Hopefully it will work with other QIC-02 tape drives as well. [PATCH] add class support to floppy tape driver zftape-init.c Here is a patch to add class support to zftape-init.c: MODULE_DESCRIPTION(ZFTAPE_VERSION " - " "VFS interface for the Linux floppy tape driver. " "Support for QIC-113 compatible volume table " "and builtin compression (lzrw3 algorithm)"); I have verified it compiles but do not have the hardware to test it. [PATCH] Fix scsi_transport_spi.c for gcc-2.95.3 Work around the gcc-2.95 token pasting bug. [libata] Add driver for SiS 964/180 SATA. [libata sata_sis] minor cleanups [PATCH] More domain validation fixes and additions Following testing in more extreme situations, the following problems turned up: - The error handler can offline the device during DV (most particularly true when transport parameters are undetectably mismatched). Fixed by modifying the state model to allow this and then having DV set the device back online for the retry. - DV needs to be serialised. Fixed by introducing a per device semaphore. - Cosmetically, it's nice to trigger DV from userland, so added a revalidate sysfs entry. [PATCH] Sysfs for framebuffer the following patch (against 2.6.5-rc2) teaches fb to use class_simple. With this patch udev will automagically create device nodes for each framebuffer registered. Once all drivers are converted to framebuffer_{alloc,release} we can switch to our own class. This is what sysfs dir looks like: notebook:~# tree /sys/class/graphics/ /sys/class/graphics/ `-- fb0 `-- dev Remove mention of non-existent tulip.txt from Doc/netwrk/00-INDEX [BK] ignore build-generated files in scripts/basic/ and drivers/md/ [MAINTAINERS] remove mention of defunct linux-via mailing list Noticed by Adrian Bunk. [libata] use new pci_dma_error() to check for pci_map_single() failure [libata] use kmap_atomic() rather than kmap() [libata ata_piix] do not disable SATA port on module unload We were disabling the SATA port, but not enabling it on module load. So, modprobe+rmmod+modprobe would fail. [libata ata_piix] clean up combined mode handling [libata ata_piix] fix combined mode device detection SATA port detection should not have assumed that a single SATA port mapped to a single struct ata_port. Combined mode breaks this assumption. Change code to simply detect if one or more devices are present on the struct ata_port, which is what we really wanted to do. [libata sata_promise] check for PATA port on PDC20375 We don't handle it yet, but this prints out a message in its presence, permitting verification of the check and informing users why their PATA device is not recognized. [libata] set up some of the per-command data beforehand The data transfer mode and the set of read/write commands we generate during normal operation remains constant until we change the data transfer mode. This removes a series of branches in the read/write fast path, and in general cleans up that particular spot of code. [libata] consolidate data transfer mode handling The various ways you can send data to/from your ATA device is known as the ATA taskfile protocol: PIO single sector, PIO multiple sector, DMA, DMA TCQ, DMA NCQ, ... Prior to this change, the data direction (read/write) was encoded implicitly into the ATA_PROT_xxx value itself. This increased complexity in some areas, and inhibited flexibility in others. This change separates data direction from taskfile protocol, and also moves the data direction flag (ATA_QCFLAG_WRITE) down to a lower level (ATA_TFLAG_WRITE). [ata] move some generic stuff linux/libata.h -> linux/ata.h struct ata_taskfile is generic, and so far its flags (ATA_TFLAG_xxx) Also, move ATA_PROT_xxx definitions into their own enum. [PATCH] added class support to stallion.c Here is a patch to add class support to the Stallion multiport serial driver. [PATCH] added class support to istallion.c Here is a patch to add class support to the Stallion Intelligent multiport serial driver. [PATCH] I2C: Discard out-of-date comment in adm1021 driver This simple patch discards an out-of-date comment in the adm1021 driver. I've done the same in our CVS repository where many more drivers were affected. I agree it's not very important, but I prefer it to be done before any driver with the error is used as a base to port a new driver, and the misinformation spreads. [PATCH] I2C: initialize fan_mins in w83781d, asb100 and lm78 Quoting myself: > While testing, I found a corner case that isn't handled properly. It > doesn't seem to be handled by the lm78 and the asb100 either. Setting > fanN_div before ever reading from the chip or setting fanN_min will > make use of fanN_min while it was never initialized. The following patch addesses the issue. Tested to work on my AS99127F rev.1 (which means that only the changes to the w83781d driver were actually tested). Testers welcome. [PATCH] USB: FTDI 232BM "USB-RS232 OptoBridge" we (the german company Gude Analog und Digitalsysteme GmbH, http://www.gude.info) have manufactored a USB<->RS232 adapter with galvanic isolated RS232 Interface. Data is transmitted by optical signals only. The Product's name is "USB-RS232 OptoBridge". We used the FTDI 233BM Chip with PID 0xE889 (VID 0x0403). The Product will be released this Cebit 2004. Could you please extend the ftdi_sio code with this PID. You find a .diff file attached which I have tested with kernel 2.6.4 At http://ftdi-usb-sio.sourceforge.net/ I saw that you provide a patch for 2.4.x kernels. Will our PID also find it's way in this back-ported driver patch? In the future (in the next 10 month), our company will have some more Products using the FTDI Chip. The PID's FTDI already allocated for us are: E888 to E88F and E808 to E80F Thank you very much, Martin Bachem [PATCH] USB: kernel-doc comment tweak Correct kernel-doc comment with incorrect parameters documented [PATCH] USB: gadget zero does endpoint autoconfig Here's where all those preceding autoconfig patches start to fit together: one gadget driver gets rid of almost all the controller-specific #ifdeffery. Two of the other gadget drivers can do the same thing, and just as easily: file storage, and serial. (I'll hope their maintainers do those changes though.) The "ether.c" gadget driver is a lot more complicated to do this way since it has to cope with some differences by switching to alternate protocols (CDC Ethernet vs a subset) and soon be able to handle RNDIS. So that'll be a while yet. Gadget Zero learns to autoconfigure. - Gets rid of remaining controller-specific #ifdeffery. Now hardware choices can be made at run time too (not just compile time). - Simplifies its use of the "DEBUG" CPP symbol. - Force device to report itself consistently as self-powered. [PATCH] USB: rtl8150 update adds two more vid/did and better packet error statistics. Link detection also has been added. [libata] pci_dma_error() was renamed to pci_dma_mapping_error() [libata] reduce diff with 2.4 libata backport [libata] use scsi host lock In 2.4 we release io_request_lock and take our own per-host lock, in the ->queuecommand() hook. In 2.6, the SCSI layer provides a useful to simply use the lock we already have, via scsi_assign_lock(). [PATCH] USB: new cypress thermometer driver [PATCH] USB: add cytherm driver to the build [PATCH] USB: USB gadgets can autoconfigure endpoints This adds some code that gadget drivers can call from driver initialization, to simplify the "configure against this hardware" step. Add endpoint autoconfiguration for gadget drivers. Endpoint selection is currently being done with conditional compilation. That doesn't look nice, but more importantly it doesn't work well with the model that some distributions won't be custom-matched to hardware. Say, a PDA distro running on iPaq (pxa2xx_udc) or Axim (mq11xx_udc). This code just makes it easier for drivers to match to hardware at run-time. It's a convenience function for something they could have been doing already, but weren't. [libata] documentation, and a couple tiny cleanups Add more per-function source code documentation. Some of this stuff is esoteric ATA crapola, and definitely needed to be documented. Also, two tiny cleanups spotted while documenting: * kill unused arg from internal function ata_dev_try_classify() * kill unused return value from ata_dev_id_string() [PATCH] USB: Improve core/config.c error messages This patch improves error reporting in the configuration parsing routines. It also adds a few extra minor tweaks. #include linux/config.h and make the usual DEBUG settings available. Use the driver-model dev_xxx() macros for log output. Be much more explicit about the nature of errors, including configuration, interface, and altsetting numbers where appropriate. Log fatal problems as errors, non-fatal ones as warnings. Remove a #define'd constant that is already set in linux/usb.h. Fix some variables declared as pointer to char that really should be pointers to unsigned char. Replace a whole bunch of "out-of-memory" error messages with a single message. Wrap source lines that are longer than 80 columns (but not log output lines!). Clean up the logic for detecting errors when retrieving a configuration descriptor. Apart from the log messages themselves, this introduces no functional changes. [PATCH] USB: Code improvements for core/config.c This patch makes some improvements to the code in config.c. Create a subroutine to handle the repeated task of skipping forward to the next descriptor of a certain type. Remove some fairly useless debugging messages (they could never even have been enabled in the pre-as221 code). Verify that endpoint descriptors don't have an address equal to 0 (as well as not being above 15). Rename some local variables so they are a little more consistent and meaningful. Despite all the changes, the functionality should remain the same. Please apply. [PATCH] USB: fix osdl bugid 481 (USB boot messages) Some boot-time messages were obnoxiously long because they used "old-style" diagnostics. OSDL bugid 481 Get rid of most remaining "old style" diagnostics from usbcore. Most messages use driver model style diagnostics. Messages that don't have an associated device use the standard kernel printk wrappers and label themselves as from "usbcore". (Except that there's no such wrapper for KERN_ERR.) This doesn't touch usbfs, "config.c" (Alan's patches do this), or usb_reset_device() (needs a more substantial overhaul). Or any other USB drivers (notably HID). [PATCH] USB: fix osdl bugid 2006 (timer init and fault paths) Need to initialize timers a bit earlier to handle certain initialization faults. OSDL bug 2006 Need to initialize some timers a bit earlier to clean up safely after very early init HCD failures. Those early init faults were needlessly mysterious since they didn't emit diagnostics except at HCD discretion. [PATCH] USB: Unusual_devs update On Tue, 16 Mar 2004, John Katzmaier wrote: > Hi, > > Just wanted to let you know that when using my Panasonic PV-SD4090 digital > camera with kernel 2.6.3, I found this entry in my logs: > > Mar 16 21:43:27 rocket kernel: usb-storage: Vendor: Panasonic > Mar 16 21:43:27 rocket kernel: usb-storage: Product: LS-120 Camera > Mar 16 21:43:27 rocket kernel: usb-storage: This device (04da,0901,0109 S 00 P > 00) has an unneeded Protocol entry in unusual_devs.h > Mar 16 21:43:27 rocket kernel: Please send a copy of this message to > > > I thought it might be best to follow its instructions and so I did. > > Thanks. > > -John Katzmaier Thank you for sending this in. An update will appear in a forthcoming kernel. Greg, here's the patch. [PATCH] USB: Regularize unusual_devs entries for Genesys Logic I saw that you just added another unusual_devs.h entry submitted by Henning Schild, for vendor ID 0x05e3. It turns out this is our old friend Genesys Logic. A recent message from Brad Campbell included a Windows driver file by Genesys, and it included these lines: USB\VID_05E3&PID_0700.DeviceDesc="USB Card Reader" USB\VID_05E3&PID_0701.DeviceDesc="USB Optical Device" USB\VID_05E3&PID_0702.DeviceDesc="USB Mass Storage Device" Based on this information, we can clean up the 0x05e3 entries in unusual_devs.h. This patch puts all three entries into a regularized form. [PATCH] USB: kernel-doc comment tweak in vicam.c Correct kernel-doc comment with incorrect parameters documented fixes for fsx truncate/readahead/writebehind bug [PATCH] USB: fix race in ati_remote and small cleanup On Thu, 2004-03-18 at 07:44, Oliver Neukum wrote: > Hi, > > you must use set_current_state() only after usb_submit_urb() with GFP_KERNEL > as second argument, because it may sleep to allocate memory and is woken up > resetting the state to TASK_RUNNING. In that case you had a busy polling loop. > Furthermore, always use wake_up unconditionally. It checkes anyway. Thanks for reviewing this code, I'm new to Linux driver development and more eyes on my work is a good thing. I've actually been working on some more cleanups to the driver to fix the race between open and disconnect, and was just about to send it in... So, the attached patch against 2.6.5-rc1-mm1 includes a mutex to lock the open/disconnect paths, modelled after the usb-skeleton driver. It includes Oliver Neukum's fixes and other cleanups as well. [PATCH] USB: Unusual_devs.h update On Thu, 18 Mar 2004, Urban Borstnik wrote: > The 2.6.4 and 2.6.3 (and possibly some earlier) kernels log the > following message when I plug in a Lexar CompactFlash Reader: > > usb-storage: This device (05dc,b002,0113 S 06 P 50) has unneeded > SubClass and Protocol entries in unusual_devs.h > Please send a copy of this message to > > Otherwise it has been working very well with the devepment kernels on at > least 4 machines ever since a trivial fix was introduced for this device > to unusual_devs.c over a year ago. > > Best regards, > Urban. Thank you for sending this in. An update will appear soon. [PATCH] USB: race condition in open of w9968cf there's a race in how open handles multiple openers. You implement exclusive opening and wait for close in case of further openers. However if there are more than one waiter, only one of them must be allowed to proceed. [PATCH] USB: Don't trust raw descriptor length in devioc. This is a very minor point, unlikely ever to come up. But just in case... It's conceivable that a device might transmit different values for a configuration descriptor's wTotalLength the first time we ask for it (in order to get the length) and the second time (to get the entire descriptor). Should that improbable event occur, the rawdescriptor buffer could be allocated using a size that's smaller than the length recorded in the rawdescriptor itself. This patch protects devio.c against such a problem. If you feel this sequence of events is too unlikely to worry about, then don't bother to apply the patch. [PATCH] USB: UHCI: Do short packet detection correctly This patch makes some simple changes to the way the UHCI driver does short packet detection. The current implementation is incorrect in several ways: The Short-Packet-Detect flag is set for OUT transfers, which yields undefined behavior according to the UHCI spec. It's not set for URBs with URB_SHORT_NOT_OK, which is just the opposite of what we want! Those are the ones where short packets do matter. It is set for the last packet in a transfer, which causes an unnecessary pause in the data flow (except of course that the pause _is_ necessary when URB_SHORT_NOT_OK is set). The patch also implements the URB_NO_INTERRUPT flag for bulk transfers, which can help improve system performance by reducing interrupt overhead. [PATCH] USB: UHCI: Improved handling of short control transfers This patch simplies the way the UHCI driver handles short control transfers. When a transfer is short the HC will stop handling that endpoint, and it's necessary to get it going again so that the status stage of the control transfer can take place. Currently the driver does this by allocating a new QH for the transfer and setting its element pointer to point at the final status TD. The old QH is recycled. But it's not necessary to go to all that trouble; the element pointer in the original QH can be updated directly. Normally the element pointer is supposed to be owned by the HC, and it's not safe to just change its value since the HC may overwrite it at any time. But when a transfer is stopped because of a short packet, the current TD is marked inactive and the HC will not update the element pointer. To write an unchanged pointer value back to memory would be a waste of PCI bus cycles. Now the UHCI spec doesn't say explicitly that an HC _can't_ do this, but I've tested both Intel and VIA hardware and neither of them does. As a side effect of this change, some of the code for removing QHs can be eliminated. [PATCH] USB: UHCI: Get rid of excessive spinlocks This patch introduces a major simplification into the UHCI driver by replacing its multiple spinlocks with a single one. The protected area of code is slightly larger and there's more possibilities for contention on an SMP system, but I think that shouldn't be a problem. Stephen Hemminger has been kind enough to test this on his SMP computer and he hasn't encountered any difficulties. [PATCH] USB: fix error paths in kobil_sct some error codes are incorrect and there's an URB leak in an error path. [PATCH] USB: usb hiddev stack usage patch Patch below fixes some obscenely high stack uage; struct hiddev_usage_ref_multi is well over 4Kb in size so really doesn't belong on the stack. ia64: Patch by Stephane Eranian: remove irq_stat from cpuinfo_ia64. irq_stat isn't needed anymore since its members got rolled into thread_info.preempt_count. [libata sata_promise] minor initialization updates * remove incorrect PATA port check * enable undocumented bit 13 in flash control register, because the Promise driver does so. * wait 10 ms after setting TBG mode, for the same reason. [libata] clean up command queue/submit path a bit This change is part of a series that compartmentalizes and consolidates ATA taskfile submission. Here, the device-location-related checks are moved out of the ->queuecommand() hook and into an inline helper function. [libata] more command queue path cleanup A new helper ata_scsi_xlat_possible(), and the command queue path gets a bit more compact. As side effects we kill the 'cmd_size' argument from two functions, and mark ata_scsi_rw_queue() as static, as its only needed in libata-scsi.c. [libata] more cmd queue path cleanups Final part in tonight's series of changes to clean up the command queueing path. The simulate-ATA-over-SCSI code is moved to a new function, ata_scsi_simulate(), and ata_scsi_rw_queue() is renamed to ata_scsi_translate(). With the SCSI CDB debugging dump function also moved into its own function, the queue-command path is now nice, compact, and readable. [PATCH] USB: fix bug in usb-skeleton.c [PATCH] USB: fix DMA to stack in ftdi driver this driver is doing DMA to the stack. Here's the obvious fix. [PATCH] USB: cleanup of st5481 you are using __devinit which must not be used with USB drivers, in addition you are using some false GFP values and fail to check some error codes. - check for unlink due to removal of controller - correct GFP values - no __devinit in USB [PATCH] USB: fix typo in previous patch I screwed up. This corrects it. [PATCH] USB: fix hfc_usb sleeping in irq you are using GFP_KERNEL in irq and __devinit with hotpluggable code. - use proper GFP flags - kill __devinit [PATCH] USB: Fix drivers/usb/net/Kconfig This allows the pegasus driver to actually be seen as a config option. Apparently it's not that popular, though I have confirmed that it still works on at least the netgear fv101. [PATCH] USB: fix race in whiteheat serial driver Patch below fixes an obvious race in the whiteheat usb serial driver... [PATCH] USB: define USB feature bit indices This patch provides standard symbols for the various USB device and endpoint feature bits, so that drivers can use symbolic names for them. It also changes the code relating to endpoint halts so it uses those symbols. [PATCH] USB: usbnet, minor probe() fault fix Some hardware had the poor taste to misbehave during probe(), which turned up a minor bug. This fixes it: don't try to free a network device that hasn't been registerd. [PATCH] USB: g_ether does endpoint autoconfig too Here's an update for the Ethernet gadget that corresponds to the earlier one for Gadget Zero ... it gets rid of almost all the remaining controller-specific #ifdefs in this driver. (And also lets the driver initialize using "dummy_hcd".) This is a significant step towards doing hardware-specific configuration at run time (or at least init-time) rather than compile time, but other patches will be needed to take it the rest of the way there. (Especially considering the RNDIS support...) The runtime footprint of the driver shrank a bit, mostly because things moved into the init section. [PATCH] USB: fix whiteheat USB serial compile failure on PPC > Bah, looks like PPC doesn't ever define CMSPAR :( > > How about adding something like: > #ifndef CMSPAR > #define CMSPAR 0 > #endif > To the beginning of the driver like the cdc-acm.c driver does? If that > works, care to send me a patch? Yes, it compiles. USB: mark pwc driver as broken, as it is. And the maintainer doesn't seem to want to fix it :( [PATCH] USB: Add dummy_hcd to the main kernel This is a resubmission of as225, together with appropriate changes for the g_serial driver. David Brownell's latest g_ether update makes it unnecessary to change that file or gadget_chips.h. dummy_hcd is simultaneously a host controller driver and a device controller driver. It creates a simulated HC together with a simulated UDC plugged into it. Gadget drivers can run under the simulated UDC and will appear as regular USB devices on the simulated HC. The simulation is reasonably (although not totally) realistic. It's a wonderful tool for testing and developing gadget drivers without the need for lots of additional hardware: Both the host driver and the gadget driver can run on the same computer. It's been available for quite some time in David's gadget-2.6 tree and it works well. I couldn't have gotten the file-storage gadget running in any reasonable length of time without it. [PATCH] USB: more ftdi_sio ids USB: ftdi_sio merge fixups. [PATCH] USB: add ftdi_sio product ids USB: fix compiler warning in whiteheat driver. [PATCH] I2C: adm1021 (probably) does something VERY,VERY BAD Quoting myself: > 3* Drop adm1021's limit init. This was already done in the 2.4 driver > and should have been done in 2.6 as well. Here is a patch that does that. It also prevents bit 7 (and unused bits) of configuration register from being reset, as was discussed before: http://archives.andrew.net.au/lm-sensors/msg04593.html That second part needs to be backported to the 2.4 driver, and I will do so. Additionally, we get rid of a useless label. The patch is untested (I don't own any supported chip) but quite straightforward IMHO. [PATCH] I2C: Setting w83627hf fan_div preserves fan_min Here is a patch that updates the w83627hf driver in the exact same way I did recently for the w83781d driver. There were two problems: 1* Fan divisor storing code was ugly, badly ripped from the 2.4 w83627hf driver and/or the 2.6 w83781d driver. 2* Setting fan divisors wouldn't preserve fan mins. Exactly the same as w83781d: http://archives.andrew.net.au/lm-sensors/msg06952.html http://archives.andrew.net.au/lm-sensors/msg07008.html No surprise since the w83627hf driver is a fork of the w83781d driver. Since the two drivers are strongly similar, I took the code directly from the updated w83781d driver. I cannot test the w83627hf driver (testers welcome BTW) but this makes me feel confident that the code is correct. To make it clear, this single patch is the w83627f equivalent of the three patches I submitted for the w83781d: * Cleanup * Refactoring * Setting fan_div preserves fan_min All in one (much better looking BTW). [PATCH] tipar char driver (divide by zero) A patch about the tipar.c char driver has been sent on lkml by Sebastien Bourdeau. It fixes a divide-by-zero error when we try to read/write data after setting the timeout to 0. [PATCH] IXP425 -> IXP4XX conversion for USB-gadget The 2.6 code for Intel's IXP4xx NPU line has been updated to remove all references to IXP42x or IXP425 and replace it with IXP4XX, including config options and file names. This patch updates the USB-gadget pxa-udc driver with these changes. [PATCH] USB: ohci misc updates Mostly from Benjamin Herrenschmidt: - prevent usbcore from asking the HCD root hub code to read registers on one more suspend path (some hardware gets upset in those cases); - try handling a "device died" cleanup case better - add some wmb() calls in spots that could matter on some hardware clean up compiler warnings [PATCH] USB: Altsetting update for USB input drivers This patch continues the update process for the cur_altsetting change. The drivers in usb/input were all in good shape and needed only minimal changes. PPC32: Remove an unneeded include in arch/ppc/boot/ PPC32: Add more useful information to the oops output. PPC32: Fix two typos in arch/ppc/boot/ From: Arthur Othieno [libata] more documentation libata-scsi.c should now be fully documented. PCI: add ability to access pci extended config space for PCI Express devices Patch originally written by Intel, cleaned up and made sane by Matthew Wilcox and then tweaked a bit more by me. From Matt's original email: - Add cfg_size to struct pci_dev. - Use it in sysfs and procfs. - Introduce pci_find_ext_capability() for finding extended capabilities. - Change the PCI_X_STATUS defines to match the spec (mea culpa there). - Add defines for the extended capabilities. [PATCH] PCI: Updates for PCI Express hot-plug driver [PATCH] PCI Hotplug: Don't up() twice in acpiphp On the error path, we currently try to up() a semaphore twice. There was also a typo in an error message. [PATCH] PCI Hotplug: Rewrite acpiphp detect_used_resource There are two unrelated problems in acpiphp that are fixed by this patch. First, acpiphp can be a module, so it is unsafe to probe the BARs of each device while it initialises -- the device may be active at the time. Second, it does not know about PCI-PCI bridge registers and so it reads garbage for the last 4 registers of the PCI-PCI bridge card and doesn't take into account the ranges that are forwarded by the bridge. This patch avoids all that by using the struct resources embedded in the pci_dev. Note that we no longer need to recurse as all the devices on the other side of a PCI-PCI bridge have their resources entirely contained within the PCI-PCI bridge's ranges. [libata sata_promise] better locking and error handling * Prefer spin_lock() to spin_lock_irq() in interrupt handler * Reset each port, before probing the SATA phy * Reset port when every time an error occurs [libata] fix bug with READ(6) and WRITE(6) SCSI commands Must set the LBA bit on all transfers, not just {read,write}{10,16} scsi commands. [libata] remove synchronize-cache dead code Just a placeholder, and now that a better way to do this is coming, we don't even need the [unused] placeholder anymore. [PATCH] ia64: implement SN2 version of dma_mapping_error() On sn2, dma_mapping_error is trivial. pci_map_single was already returning 0 in case of failure (0 is an invalid DMA address on sn2), so make dma_mapping_error check for that. [PATCH] ia64: only scan SN2 PCI busses that exist sn_pci_init was unconditionally scanning 255 PCI busses, even though only a few are actually present on most systems. This patch adds a check to make sure a given bus exists before doing the scan, which saves a little memory and also makes /sys/devices reflect reality a bit more closely. [PATCH] stack reduction: aic7xxx_old From: Arjan van de Ven aic7xxx_old: constant array of PCI ID's can be static since it's read only [PATCH] Update FC transport attributes API This patch brings the FC transport attributes up to date with the SPI attributes API. The only major change I made was to separate read-only attributes from read-write attributes. [PATCH] Add FC transport attributes support to qla2xxx Here is a patch that adds FC transport attributes to the qla2xxx driver. The patch should apply cleanly to a recent 2.6 kernel with the FC attributes update that I just sent to linux-scsi. MPT Fusion driver 3.01.03 update From: "Moore, Eric Dean" Changelog for mpt version 3.01.03: (1) Fix fifo memory allocation under 64bit systems by merging 3 seperate memory allocations into one call. Before this fix, it was possible that these seperate pci_alloc_consistent() calls were crossing the 4GB hardware boundary. Delete the MPTBASE_MEM_ALLOC_FIFO_FIX logic. Backout recent ak@muc.de workaround. (2) Replace wrappers for CHIPREG_XXX with defines; per request from Jeff Garzik [jgarzik@pobox.com] (3) Remove support for FC909. (4) Remove PortIo modules parameter. (5) Move procmpt_destroy function before pci_unregister_driver, as the memory allocated for the proc was not being deallocated. (6) Remove mptscshi_reset_timeouts function. The timer was already expired when mod_timer is called. (7) Fix small bug in slave_destroy, which could prevent domain validation on hidden drive in a RAID volume. ---------------------------------------------------------------------- Changelog for mpt version 3.01.02: (1) Andi Kleen[ak@suse.de] put warning "Device (0:0:0) reported QUEUE_FULL!" into debug messages (2) Alexander Stohr[Alexander.Stohr@gmx.de] fix warnings from mptscsih_setup when driver isn't compiled as module (3) Randy.Dunlap[rddunlap@osdl.org] Remove unnecessary min/max macros and change calls to use kernel.h macros instead. ServeRAID ( ips ) 7.00.15 ith the completion of testing at Adaptec and IBM, the latest version of the ServeRAID Linux device driver ( ips Version 7.00.15 )is now available. Attached is the patches against the previous ServeRAID releases. Basically, this is a convergence to a common ips driver code base for the 2.4 and 2.6 kernels. This driver is based on the driver currently in 2.6, so you while there appears to be lots of changes to the 2.4 driver, the changes to the current 2.6 driver are trivial ( the only changes are version number changes and the addition of some new adapter ID's ). For 2.4, this was primarily a testing effort to ensure that the 2.6 driver code was stable when built for a 2.4 kernel. [PATCH] Fix template size calculation in transport attributes This small patch fixes the template size calculation in {spi,fc}_attach_transport(). [TG3]: Kill 'force' arg to tg3_phy_reset, it is always set. [TG3]: At start of tg3_phy_copper_begin, force phy out of loopback mode. [TG3]: Do not allow illegal ethtool advertisement bits. [libata] back out duplicated upstream fix We already fixed this bug locally, so fix up the automerge by removing the upstream change. [NETFILTER]: Optimization of ip_conntrack_proto_tcp:tcp_packet() A: Pablo Neira D: This patch cleans up tcp_packet(). No semantical change, just juggling D: code pieces. [NETFILTER]: Locking optimization in ip_conntrack_core A: Pablo Neira D: This patch puts tightens up a lock protected section in D: ip_ct_refresh() [NETFILTER]: Cleanup conntrack helper API A: Pablo Neira D: This patch changes the conntrack helper API. Rather than having the D: helper allocate an expect on the stack and then have the core D: kmalloc and memcpy, it is now the job of a helper to call D: ip_conntrack_expect_alloc() [NETFILTER]: Add nf_log handler, from Jozsef Kadlecsik. [NETFILTER]: Missed these files in nf_log commit. [NETFILTER]: Add 'raw' table, from Jozsef Kadlecsik. [PATCH] USB; minor usbfs locking updates These are "obvious" locking fixes: using the right lock to protect interface claim/release (should be the driver model bus lock, not BKL). [PATCH] USB: usb/core/config.c null pointers after kfree Prevents an oops with some other patchsets. Clear some pointers after the memory is kfreed, to avoid making some other patch combinations oops. [PATCH] USB: ohci unlink tweaks Minor unlink tweaks, including a case where SMP could oops if it were abused, as if from 'usbtest' or 'stir4200'. [PATCH] USB Gadget: RNDIS/Ethernet Gadget Driver (1/2) This patch adds the RNDIS message engine and kbuild/kconfig support for it. This is currently labeled EXPERIMENTAL. Patch contributed by Robert Schwebel, and developed with support from Auerswald GmbH. [PATCH] USB Gadget: RNDIS/Ethernet Gadget Driver (2/2) This updates the existing Ethernet gadget driver to support an additional RNDIS configuration on all current USB controllers that can support one. It also includes a bit more work to address the complex autoconfiguration of this driver. Needs testing on PXA. Patch (mostly) contributed by Robert Schwebel, and developed with support from Auerswald GmbH. [PATCH] USB: set_configuration locking cleanups I've posted all these before, the only notable change is treating that one gphoto2 case as warn-and-continue rather than return-with-failure. usb_set_configuration() cleanup * Remove it from the USB kernel driver API. No drivers need it now, and the sysadmin can change bConfigurationValue using sysfs (say, when hotplugging an otherwise problematic device). * Simpler/cleaner locking: caller must own dev->serialize. * Access from usbfs now uses usb_reset_configuration() sometimes, preventing sysfs thrash, and warns about some dangerous usage (which gphoto2 and other programs may be relying on). (This is from Alan Stern, but I morphed an error return into a warning.) * Prevent a couple potential "no configuration" oopses. (Alan's?) * Remove one broken call from usbcore, in the "device morphed" path of usb_reset_device(). This should be more polite now, hanging that one device rather than khubd. [libata] fix broken delay Due to rounding and HZ==100, sometimes delays would not occur for the desired length of time, or even at all. Fix call to schedule_timeout() to ensure we delay -at least- for the correct amount of time. [PATCH] USB: drivers/usb/gadget/epautoconf.c gcc-3.5 build fix drivers/usb/gadget/epautoconf.c: In function `ep_matches': drivers/usb/gadget/epautoconf.c:175: error: `typeof' applied to a bit-field [PATCH] USB: ftdi_sio.c: not unlinking urb on ftdi_close This patch fixes a bug in ftdi_sio.c where the driver wouldn't unlink the read urb if the user application cleared the HUPCL flag on termios->c_cflag. [PATCH] USB Storage: datafab fix and unusual devices datafab.c has an often-seen bug: the SCSI READ_CAPACITY command does not need the number of sectors but the last sector. I just tried the CF and SM parts of a 5-in-1 card reader. The CF part works with US_PR_DATAFAB when the bug mentioned is fixed. The SM part works with US_PR_SDDR55. (Revision Number is 17.08 - that in case the 0000-ffff should prove to be too optimistic.) We still must discuss what setup to use for readers like this - I have several of them - that require different drivers for different LUNs. As it is now one has to compile usb-storage twice, once with CONFIG_USB_STORAGE_DATAFAB defined and once without, and remove one usb-storage.ko and insert the other to go from CF to SM. (And that hangs with 2.6.4 so a reboot is required..) [PATCH] USB: kill off CONFIG_USB_BRLVGER detritus. This died a while ago, but lingers on in defconfigs. [PATCH] USB: RNDIS/Ethernet Gadget Driver comment changes Whoops, I missed something. You should apply this patch too. The RNDIS spec license agreement does NOT require tacking any GPL-incompatible restrictions on the results of _using_ the spec: "... may be used solely for the purpose of implementing the RNDIS protocol message set to interface with ..." (the two cases identified in the text) And that's all the implementation does -- end of story. [PATCH] USB: Rename the USB HID driver > > I like to see this rename as soon as possible. So if nobody minds I send > > a patch to LKML and ask Linus for inclusion. > > Go ahead, but also please patch all relevant documentation in the > kernel. the attached patch should do the renaming everywhere hid or hid.o was mentioned. It also removes all references to *.o module names. [PATCH] USB: omninet patch here's a small patch for omninet.c . [PATCH] I2C: Prevent misdetections in adm1021 driver Yet another patch for the adm1021 chip driver. I refined the detection code a bit in order to prevent chip misdetection. Some chips handled by the adm1021 driver are hard to detect and identify (LM84 and MAX1617) so we tend to accept any chip it the valid I2C address range as one of these. It has caused much, much trouble already. See these threads for example: http://archives.andrew.net.au/lm-sensors/msg04448.html http://archives.andrew.net.au/lm-sensors/msg04624.html http://archives.andrew.net.au/lm-sensors/msg05560.html http://archives.andrew.net.au/lm-sensors/msg05871.html http://archives.andrew.net.au/lm-sensors/msg06754.html http://archives.andrew.net.au/lm-sensors/msg07181.html And this ticket: http://www2.lm-sensors.nu/~lm78/readticket.cgi?ticket=1434 So I thought it would be good to prevent this kind of problems if possible, and read the 8 datasheets again in search for ways to refine the detection method. I changed it in sensors-detect already, and had positive feedback from one user. I will also backport the changes to the driver to the 2.4 version we have in CVS. What the patch does: * Use unused bits of two more registers (configuration and conversion rate) to reduce misdetections. * Return with -ENODEV if the detection fails. * Change the order in which we try to identify the chips. We better finish with the LM84 and the MAX1617, in this order, because they are harder to identify and are more likely to result in false positives. * Refine LM84 detection. The LM84 has less features than the other chips(chip cannot be stopped, conversion rate cannot be set, no low limits) so it has extra unused bits. * Do not intialize the chip if it was detected as an LM84. This one cannot be stopped so why would we try to start it again? And as said right before, conversion rate isn't changeable either. Note that I couldn't test the changes on any supported chip since I don't own any. Still I believe that they should be applied, since the current code already broke one system and seriously harmed several others. I believe it's not critical if it turns out that we reject valid chips (which shouldn't happen if the datasheets are correct, anyway). People will simply let us know and we'll be less restrictive. In the meantime they can force the driver. That said, testers are welcome, as usual. [PATCH] I2C: i2c documentation update (1/2) Here is an update to my 2.4 to 2.6 i2c client porting guide. The changes were inspired by the feedback I got with the drivers that have been ported so far. [PATCH] I2C: i2c documentation update (2/2) Here is a patch to Documentation/i2c/sysfs-interface. This is mostly my intent to make the document more readable. There are also a few incorrectnesses fixed, and some comments added. [PATCH] I2C: Incorrect memset in eeprom.c Quoting Ralf Roesch: > currently I'm only working with Linux MIPS 2.4 kernel, > so it would be nice if you could forward the patch for 2.6. OK, so here we are. Greg, this is the port to 2.6 of Ralf patch that fixes an incorrect memset while initializing the eeprom driver. Please apply. [PATCH] I2C: Discard pointless comment in via686a The simple patch below discards a comment in via686a referencing a file that doesn't belong to the Linux tree. Now that I tell people not to do that in my porting guide, we better follow our own advice. SCSI: Add noretry check to the error handler path This still doesn't give us complete fast fail on the eh path because we still get delayed to recover the transport. [PATCH] USB: w9968cf driver misplaced ; [PATCH] USB: fix dvb-ttusb-budget driver due to set_configuration locking cleanups > Oops, you forgot to grep: > > CC [M] drivers/media/dvb/ttusb-dec/ttusb_dec.o > drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c: In function `ttusb_setup_interfaces': > drivers/media/dvb/ttusb-budget/dvb-ttusb-budget.c:1011: warning: implicit declaration of function `usb_set_configuration' Well, when I did the grep that bug wasn't there; it was just integrated on Feb 26! > Care to send a patch to fix it up before Andrew gets grumpy with me for > breaking his build? :) The first part makes it use usb_reset_configuration() like it did before ... I'm surprised this driver hasn't been generating "it deadlocks during probe" reports. The second part prints a diagnostic if the configuration wasn't set right; the fix would use hotplug and sysfs. Cset exclude: jgarzik@redhat.com|ChangeSet|20040323051558|61282 [PATCH] PCI: add DMA_{64,32}BIT constants On Tue, 23 Mar 2004 00:23:05 -0500 Jeff Garzik wrote: >>Yeah well... in the intervening time, somebody on IRC commented >> >>"so what is so PCI-specific about those constants?" >> >>They probably ought to be DMA_{32,64}BIT_MASK or somesuch. Here's an updated patch, applies to 2.6.5-rc2-bk9. I left the DMA_xxBIT_MASK defines in linux/pci.h, although they aren't necessarily PCI-specific. Would we prefer to have them in linux/dma-mapping.h ? [libata sata_via] Fix detection of device 1 VIA hardware thinks port 1 (second port) is "SATA primary slave". Since the hardware rarely configures SATA to present as slave devices, we must pretend that the second hardware port (as the user sees it) is the third port (as the VIA PCI config registers see it). [PATCH] USB Gadget: Use configuration-buffer library in file-storage This patch imports the config-buffer library into the file-storage gadget, simplifying and decreasing the amount of code needed for assembling configuration descriptors. It also changes the driver to remove any pretense at bus-powered operation and to use the new DUALSPEED configuration option. This is in line with recent changes made to other gadget drivers. [PATCH] USB Gadget: Use automatic endpoint selection in file-storage This patch imports the endpoint auto-config library into the file-storage gadget, simplifying the code needed for endpoint selection and removing almost all dependencies on the controller type from the driver. It also changes some log messages for reporting fatal problems from INFO to ERROR. [PATCH] USB: Complete all URBs in UHCI when releasing the bus This patch changes the UHCI driver's bus-release routine; now it will correctly finish all pending but not-yet-completed URBs. This fixes a reported bug, when trying to rmmod uhci-hcd while using a USB mouse under X. Also, the patch changes a variable name from ...hs... to ...fs... ("high speed" -> "full speed") -- something I accidentally omitted in an earlier patch. [PATCH] USB Gadget: Rename the dummy_hcd's gadget When David added an entry to the gadget_chips.h file for the dummy_hcd driver, he mistakenly used the name "dummy_udc" rather than "dummy_hcd". The mistake is understandable, since other controllers use "_udc" in their names and it is illogical to put "_hcd" in a _device_ controller's name. This patch updates the dummy_hcd driver and changes the gadget name to agree with the gadget_chips.h entry. [TG3]: Add missing 5704 BX workaround, and fix typo in autoneg fix. [PATCH] USB: RNDIS/Ethernet Gadget Driver .inf file [PATCH] USB: remove usb_interface.driver field Remove usb_interface.driver, and along with it the "half bound" state previously associated with drivers binding with claim() instead of probe(). This changes usb_driver_claim_interface() semantics slightly: drivers must now be prepared to accept disconnect() callbacks. Fixes more locking bugs, and a claim() oops that snuck in with a recent patch. [TG3]: Set GRC_MISC_CFG prescaler more safely. USB: remove "released" field from struct usb_interface as it is not needed. [TG3]: Fix serdes cfg programming on 5704. [TG3]: When link is down, set stats coalescing ticks to zero. [TG3]: Wait a bit for BMSR/BMCR bits to settle in PHY setup. USB: clean up usb_get_dev() as it was written quite horribly. USB: add usb_get_intf() and usb_put_intf() functions as they will be needed. SCSI: Updates to non-sector size completion calculations From: Jens Axboe , Mike Christie [PATCH] PCI: move DMA_nnBIT_MASK to linux/dma-mapping.h [PATCH] PCI Hotplug: RPA PCI Hotplug - redundant free Please commit the following patch, which removes a redundant call to a cleanup function from an error path of the module init code. [PATCH] PCI: Allow arch-specific pci_set_dma_mask and friends The patch provides the ability for architectures to have custom implementations of pci_set_dma_mask() and friends (dac_set_dma_mask and set_consistent_dma_mask). The reason I need this is b/c I have a chipset (Intel ARM IXP425) that has a broken PCI interface that only allows PCI dma to/from the bottom 64MB of system memory. To get around this limitation, I trap a custom dma-mapping implementation that bounces buffers outside the 64MB window. At device discover time, my custom platform_notify() function gets called and it sets the dma_mask to (64MB-1) and in ARM's dma-mapping code, I check for dma_mask != 0xffffffff and if that is true, I call the special bounce helpers. This works great except that certain drivers (e100, ide-pci) call pci_set_dma_mask() with 0xffffffff and the generic implementation only allows for the architecture-defined pci_dma_supported() to return true or false. There is no method for the architecture to tell the PCI layer "I can't set the mask to 0xffffffff, but I can set it to this other value" and there is no way to pass that back to the driver. What this means is that if I have pci_set_dma_supported() return failure on full 32-bit DMA, the driver will not initialize the card; however, if I return true, pci_set_dma_mask() will set the dma mask to full 32-bits and I can no longer trap and will have buffers that are not dma-able and cause PCI master aborts. Both of those are not acceptable. IMHO, the driver shouldn't care if the architecture has to bounce DMA outside of 64MB and since this is not something most architectures have to worry about, the easiest way to get around the issue is by allowing custom pci_set_dma_mask() for arches that need it but keeping the generic implementation for those that do not. In my case, it simply returns 0 to the driver but keeps the device mask set to 64MB-1 so I can trap. [PATCH] kobject_set_name() doesn't allocate enough space [SPARC]: Add C99 initializers to Sparc frame buffer devices. Renaming pplus_common.c to hawk_common.c to match gt64260_common.c, etc, plus minor cleanups. [NET]: Mark lock_sock and release_sock as FASTCALL. [AGPGART] VIA GART driver can use the new generic AGPv3 masks. [AGPGART] Efficeon GART driver can use generic masking routine. [AGPGART] SiS 746 chipset also needs extra recovery time when changing mode. [AGPGART] Fix SiS workaround printk. This happens on multiple chipsets. [AF_KEY]: pfkey_send_new_mapping marks dest address incorrectly. [TG3]: Verify link advertisement correctly on 10/100 only chips. [PATCH] ia64: clean up pcibr_slot.c warnings A few warnings crept into pcibr_slot.c that this patch takes care of. - forward declare pcibr_slot_pwr so it can be used w/o warning - fix argument passed to pcibr_slot_attach in pcibr_slot_enable [PATCH] ia64: fix sn_serial warning In my fixes to quiet the sn_serial driver, I made sn_debug_printf only get used when the DEBUG define was turned on in the driver but forgot to #ifdef out the function definition, causing an 'defined but not used' warning. This patch fixes that. [PATCH] ia64: small SN2 interface.c patch Change the calls to link_path_walk() to path_walk(). link_path_walk() doesn't initialze current->total_link_count and path_walk() does. Without the initialization, path_walks start to fail when 40 sym links have been followed. [IPV4]: Fix IGMP version number and timer printing for procfs. [CPUFREQ] Various updates/fixes to the powernow-k8 comment header. [BRIDGE]: Allow non-root to inspect the status of a bridge. [TG3]: All 5705 chips need PHY reset on link-down. [BRIDGE]: Lift ioctl limits on number of bridges/ports. Get rid of some arbitrary API restrictions that limit the kernel to 64 bridges and 256 ports. Retain compatibility in GET_PORT_LIST, the existing bridge API passes 0 for the third argument, and expects 256 entries. Note: there still is limit of 256 ports due to STP, but this shouldn't show up in the API, it needs to be handled by the 'add port to bridge ioctl'. [BRIDGE]: Correctly handle up to 256 ports per bridge. Bridge code is limited to 256 ports per bridge because the Spanning Tree Protocol has limit of one octet for port number. This code fixes: * bogus unlock in error path when port list is full. * passes different error status for out of memory, vs port list full. * O(n) vs O(n^2) lookup for free port number * since port and priority are both limited to one byte don't store them as int's * makes limit explicit in code [TG3]: More PHY programming fixes. - Break out advertisement register verification into a function, tg3_copper_is_advertising_all. - At device probe time, reset PHY if not Serdes and ASF is not enabled. - Add some missing necessary PHY init to PHY probe code as well. [TG3]: Bump driver version and reldate. [CPUFREQ] fix compilation of speedstep-lib with DEBUG set [CPUFREQ] powernow-k8 whitespace changes. Trying to get the diffsize down between me & Pavel. Add missing description about how to specify credentials file [AGPGART] Actually Call the SiS workaround on SiS 746 too. [PATCH] ia64: bring ia64 nodes online properly Andi's libnuma exposed the fact that we don't bring nodes online properly as we discover them in ia64. Here's a quick patch to fix that. Tested with Andi's numademo program; seems to work fine. [AGPGART] EM64T driver should only run when we have a supported CPU. Otherwise we see strange things at boottime if we compile in all drivers, like this.. agpgart: Unsupported Intel chipset (device id: 1a30) agpgart: Detected an Intel i845 Chipset. [CPUFREQ] Step 1 of SMP support for powernow-k8. Move lots of code to the cpu init routine from the detection routine. Do some SMP sanity checks in the detection routine. [CPUFREQ] powernow-k8 SMP work part 2. Introduce a per-cpu powernow_k8_data struct, and pass it around between all the functions that need to know about it. [PATCH] USB: ehci updates: CONFIG_PCI, integrated TT Generalize the driver a bit: - PCI-specific handling is restricted to a small chunk of init code. Non-PCI implementations are in the pipeline. - Merge support from ARC International (Craig Nadler) for their integrated root hub transaction translators (on PCI). Other implementations should be similar. [PATCH] USB Gadget: ethernet/rndis gadget updates This fixes an oops during "ifconfig usb0 down" after unplug from a Windows box. It also shrinks the driver size to something much more reasonable by leaving out debug messaging, and adds a few missing newlines. [PATCH] I2C: Add ALi 1563 Device ID to pci_ids.h [PATCH] I2C: Add support for the ALi 1563 in the PCI IRQ routing code. [PATCH] I2C: Add ALi 1563 i2c driver The i2c interface on the 1563 is totally different than on both the 1533 and the 1535. It supports i2c 2.0, and happens to be nearly identical to the interface on the i810 chipsets. [PATCH] I2C: Fix check for DEBUG in i2c-ali1563 [PATCH] USB: usbcore blinkenlights The per-port LEDs on the most USB 2.0 hubs are programmable. And the USB spec describes some ways to use them, blinking to alert users about hardware (amber) or software (green) problems. This patch is the infrastructure for that blinking. And if you should happen to "modprobe usbcore blinkenlights", the LEDs will cycle through all the ports ... which is not a USB-standard mode, but it can certainly handy be handy as a system heartbeat visible across the room. Invalidate readahead data properly when file closed, but other client changed it on server Updating mcpn765 for 2.6 [PATCH] sd_shutdown cannot be called when in state SDEV_DEL sd_remove calls sd_shutdown to finish I/O to the disc. However, the state model puts the device in SDEV_DEL before triggering the sd_remove (which won't allow any further I/O at all). Fix by making SDEV_CANCEL the intermediate state and only transitioning to SDEV_DEL after calling device_del(). [SPARC32]: Fix wraparound bug in bitmap allocator [TG3]: Print list of important probed capabilities at driver load. [TG3]: Two PHY fixes. - Do not probe PHY ID register if ASF firmware is running. - Fix two errors in PCI subsys to PHY ID table. [TG3]: Kill uninitialized var warning. [TG3]: Reset fixes. - Put more code into common area in tg3_chip_reset() - Set GRC_MODE, even sanes host-stackup bit, after enabling memory arbiter. - After every core-clock reset, reprobe ASF enabling state. [TG3]: Update driver version and release date. [IPV6]: Add MIBs counters in MLD. [SPARC]: Add sysctl to control serial console power-off restrictions. [SPARC64]: hugetlbpage.c needs module.h [ARM PATCH] 1777/1: Add TI OMAP support to ARM core files Patch from Tony Lindgren This patch updates the ARM Linux core files to add support for Texas Instruments OMAP-1510, 1610, and 730 processors. OMAP is an embedded ARM processor with integrated DSP. OMAP-1610 has hardware support for USB OTG, which might be of interest to Linux developers. OMAP-1610 could be easily be used as development platform to add USB OTG support to Linux. This patch is an updated version of an earlier patch 1767/1 with the dummy Kconfig added for OMAP as suggested by Russell King here: http://www.arm.linux.org.uk/developer/patches/viewpatch.php?id=1767/1 This patch is brought to you by various linux-omap developers. [ARM PATCH] 1780/1: Add TI OMAP support, include files Patch from Tony Lindgren This patch adds the include files for Texas Instruments OMAP-1510 and 1610 processors. OMAP is an embedded ARM processor with integrated DSP. OMAP-1610 has hardware support for USB OTG, which might be of interest to Linux developers. OMAP-1610 could be easily be used as development platform to add USB OTG support to Linux. This patch is an updated version of patch 1768/1 with Russell King's comments fixed. This patch requires patch 1777/1 applied. This patch is brought to you by various linux-omap developers. [ARM PATCH] 1781/1: Add TI OMAP support, arch files Patch from Tony Lindgren This patch adds the arch files for Texas Instruments OMAP-1510 and 1610 processors. OMAP is an embedded ARM processor with integrated DSP. OMAP-1610 has hardware support for USB OTG, which might be of interest to Linux developers. OMAP-1610 could be easily be used as development platform to add USB OTG support to Linux. This patch is an updated version of patch 1769/1 with Russell King's comments fixed. This patch requires patch 1777/1 applied. This patch is brought to you by various linux-omap developers. [PATCH] SCSI sense buffer size -> 96 some SCSI devices need more than 64bytes of sense buffer. I know about one: The IBM MagStar tapes report the necessity to be cleaned at bytes 70 and report 96 bytes in total. Attached patch increases the sense buffer size to 96 bytes. Fix scsi_device_get to allow NULL devices Modification of patch from SLES-9 [PATCH] sym 2.1.18j sym 2.1.18j: - Add SPI transport attributes (James Bottomley) - Use generic code to do Domain Validation (James Bottomley) - Stop using scsi_to_pci_dma_dir() (Christoph Hellwig) - Change some constants to their symbolic names (Grant Grundler) - Handle a race between a postponed command completing and the EH retrying it (James Bottomley) - If the auto request sense fails, issue a device reset (James Bottomley) [ARM PATCH] 1782/1: discontigmem support for PXA chips Patch from Nicolas Pitre [ARM PATCH] 1783/1: more PXA reg definitions Patch from Nicolas Pitre [Bluetooth] Remove architecture specific compat ioctl's The compat ioctl definitions are now maintained in a single place, so it is no longer needed to keep the architecture specific defines. This patch removes the leftover Bluetooth parts from x86_64 and sparc64. [Bluetooth] Fix broken HCI security filter The HCI security filter is broken on 64-bit architectures and this patch restores the version from 2.4, which is working perfect on 32-bit and 64-bit machines. [Bluetooth] Allocate hdev before device configuration The hdev structure must be allocated before the device is configured and before any interrupt is started. [Bluetooth] Add UART protocol id's for 3-Wire and H4DS This patch adds the id's for the 3-Wire and H4DS UART transport protocols. [ARM PATCH] 1788/1: SC2410 include/asm-arm/arch-s3c2410 [repost of 1778/1] Patch from Ben Dooks This patch is a repost of 1778/1 with the memory.h file fixed. This patch contains all the necessary include files for include/asm-arm/arch-s3c2410 for Samsing S3C2410 SoC CPU support. The patch also includes the support headers for IPAQ H1940, Simtec BAST and VR1000 board support. [ARM PATCH] 1793/1: S3C2410 - arch/arm/mach-s3c2410 [ repost of 1790/1 ] Patch from Ben Dooks Core support for S3C2410 based machines machine support for Simtec BAST, VR1000 and IPAQ H1940 repost of 1790/1 with configuration definition fixed [ARM PATCH] 1792/1: S3C2410 - arch/arm/boot [ fix for 1789/1 ] Patch from Ben Dooks arch/arm/boot support for S3C2410 support for boot (and debug) messages via EmbeddedICE (CP14) comms registers. fixed typos from 1789/1 [ARM PATCH] 1794/1: S3C2410 - arch/arm/kernel patches [ repost 1791/1 ] Patch from Ben Dooks arch/arm/kernel patch for S3C2410 support - default configurations for S3C2410 - build changes for S3C2410 - IRQ support for kernel entry - debug serial support [ARM] Clean up formatting of s3c2410 help texts. [CPUFREQ] Transmeta longrun driver fix. (From Stelian Pop) Upon investigation, the reason is that trying to set the performance to 80% in longrun_determine_freqs leaves the performance to 100%. The performance level, at least on this particular model, can be lowered only in 33% steps. And in order to put the performance to 66%, the code should try to set the barrier to 70%. The following patch does even more, it tries every value from 80% to 10% in 10% steps, until it succeeds in lowering the performance. I'm not sure this is the best way to do it but in any case, it works for me (and should continue to work for everybody else). [ARM] Fix silent build error caused by undefined symbol. Current binutils silently ignores certain undefined symbols; this cset fixes one such instance. [AGPGART] Previous AGPv3 SiS fixes broke AGPv2 users. Oops. [PATCH] ia64: Missing overflow check in mmap Calling mmap with len == -1 was silently accepted. The test in the generic code was fixed in July 2003, but the fix didn't make it into the ia64- specific code. [PATCH] ia64: Missing include in hugetlbpage.c This fixes a missing include file in arch/ia64/mm/hugetlbpage.c in 2.6.5. module.h is needed for EXPORT_SYMBOL. [ARM] Add ecard_(request|release)_resources(). [PATCH] update Compaq Personal Server URL Patch from Petri T. Koistinen Update of Compaq Personal Server URL. [PATCH] ia64: setup max dma addr earlier on hp boxes sba_iommu was setting up MAX_DMA_ADDRESS way too late to do any good. This patch makes it get setup via platform_setup, so it's ready for paging_init(). All pages should show up in zone DMA now. Against latest 2.6. [PATCH] make_coherent pgoff Patch from Hugh Dickins In wandering through the Linus 2.6 tree preparing for changeover of i_mmap and i_mmap_shared to Rajesh's prio tree for object-based rmap... I noticed that pgoff in make_coherent doesn't add up (plus, I think we need to mask out the word "don't" in the comment further down). 2.4.25 looks equally wrong. [IPV6]: Provide ipv6 multicast/anycast addresses through netlink. [NETLINK]: Split up netlink_unicast. [CPUFREQ] Fix up docbook parameters on x86 drivers. From Michael Still [CPUFREQ] Grammar fix in p4-clockmod.c Noted by Viktor Radnai. [CPUFREQ] Remove useless goto. (Pavel Machek) [CPUFREQ] Indentation fix. [NET]: Update networking config menu (v3) Networking support/options and Networking drivers have been, uhm, messy to navigate for some time now. BenH mentioned this and I was already looking into options to clean it up. This is a cleanup of Networking support/options and Networking Drivers. It presents a more consistent interface and lists similar driver groups and protocol groups closer together. It also moves the IBMVETH driver so that it no longer breaks the dependency tree, allowing other drivers (nearby in Kconfig file) to be presented in a more linear manner. Merge bk://linux.bkbits.net/linux-2.5 into linuxbox.(none):/src/linux/ppc/linux-2.5/linux Send NTCreateX with ATTR_POSIX if Linux/Unix extensions negotiated with server. This allows files that differ only in case and improves performance of file creation and file open to such servers [SCTP] Fix typo in entry name of the remove_proc_entry() call. [CPUFREQ] Kill off inlines in powernow-k8 driver. Gcc should be smart enough to do this itself. [CPUFREQ] make powernow-k8 use batps from powernow data struct instead of static struct. [CPUFREQ] Merge a bunch of extra powernow-k8 helpers. [CPUFREQ] Serialise fid/vid changes in powernow-k8 driver. [CPUFREQ] SMP fixes for powernow-k8's check_supported_cpu() [CPUFREQ] printk cleanup in powernow-k8's check_pst_table() [CPUFREQ] Add missing MSR define to fix the powernow-k8 compile. [IEEE-1394] Sync IEEE-1394 to r1203 [CPUFREQ] powernow-k8 header cleanups remove unused defines, introduce some new ones, and generally cleanup. [CPUFREQ] fill out the powernow_k8_data table. [CPUFREQ] Use the new fill_powernow_table() to fill struct instead of doing it inline. [PATCH] pcnet32.c add support for 79C976 Please include this patch to add support for the 79C976 device to the pcnet32 driver. [PATCH] pcnet32 all printk under netif_msg Please apply the following patch to 2.6.5. All printk's are now done under netif_msg debug level tests. [PATCH] pcnet32 correct name display This displays the device name (eth%d) instead of the device type when registering the interrupt handler. [PATCH] pcnet32 add led blink capability Please apply this patch to 2.6.5 to include the capability of blinking the LED's for device identification. Ethtool -p support. [CPUFREQ] More SMP/preempt fixes, this time powernowk8_target() Also some changes to use some helpers. Remove unused compatibility-defines include wan/lmc/lmc_ver.h. Noticed by Adrian Bunk. [CPUFREQ] Change powernow-k8 over to use its new KHz frequency helpers [CPUFREQ] Extra debugging foo. [CPUFREQ] Stuck pending bit is now checked in the init routine. [PATCH] dgrs: add missing iounmaps [resend] Insert missing iounmap's. From: Leana Ogasawara [PATCH] lmc header file not needed From: Domen Puncer [CPUFREQ] numerous powernow-k8 cpu_init() fixes/cleanups. [netdrvr r8169] DMA api resync. [netdrvr r8169] ethtool driver info Author: Krishnakumar R. [netdrvr r8169] Barrier against compiler optimization. [netdrvr r8169] DAC changes: - Rx and Tx descriptors rings handled on 64 bit; - enable DAC through use of CPlusCmd register (reserved bits apart, this is similar to the 8139cp driver); - use the higher 32 bits of addresses for the Rx/Tx buffers. [netdrvr r8169] TX irq handler looping fix If a few packets have been scheduled for Tx, it is possible to keep looping in the Tx irq handler as soon as the irq for the first packet has been received until the descriptor of the last packet has been sent (with interrupts disabled btw). [PATCH] remove magic '31' for netdev priv. alignment [resend/rediff] // linux-2.6.5 // remove magic number of '31' from net_device and private alignment; [CPUFREQ] ACPI support for powernow-k8. We fall back on the legacy PSB table if the ACPI tables don't work out. [PATCH] Support newer revisions of broadcoms in b44.c This adds support for newer revisions of the chips. The b44_disable_ints at the beggining actually kills machine with newer revision, but its removal has no ill effects. [CPUFREQ] Bump powernow-k8 revision. [CPUFREQ] As we're using ACPI in powernow-k8 now, we need ACPI to initialise first. [CPUFREQ] Fix %x printk's in powernow-k8. These are hex values. Prefix them all with 0x [netdrvr] Add S2IO 10gige network driver. Contributed by Leonid Grossman @ S2IO [netdrvr s2io] correct an incorrect cleanup I made [PATCH] tc35815 cleanup [PATCH] netdev_priv for xirc2ps_cs, nmclan_cs s/dev->priv/netdev_priv(dev)/ for xirc2ps_cs.c and nmclan_cs.c xircom one is tested. against 2.6.4-bk [net/fc iph5526] s/rx_dropped/tx_dropped/ in TX routines Spotted by Denis Valesko(sp?). Maybe one day we'll either kill this driver, or someone will fix it up for the current SCSI API. [netdrvr 8139cp] rearrange priv struct, add cacheline-align markers suggested by Jes Sorensen. [netdrvr s2io] NAPI build fixes [netdrvr 8139cp] locking cleanups * s/spin_lock_irq/spin_lock_irqsave/ where it was simple and easy to verify. * release spinlock earlier in interrupt routine. [NET] define HAVE_NETDEV_PRIV back-compat hook [netdrvr 8139cp] minor cleanups * update version, copyright date * remove unportable "pci_dev->irq < 2" check in ->probe * don't use ioremap_nocache() without a real reason [netdrvr 8139cp] use netdev_priv() [netdrvr 8139cp] complete 64-bit DMA (PCI DAC) support [netdrvr 8139cp] better dev->close() handling, and misc related stuff * don't synchronize_irq() in cp_stop_hw(). when necessary, do so in the callers. * call synchronize_irq() in cp_close(), after releasing the spinlock. * move netif_stop_queue() and netif_carrier_off() calls inside lock * flush last interrupt status write, in cp_stop_hw() * add unlikely() check for dev==NULL, first thing in the irq handler [netdrvr natsemi] correct DP83816 IntrHoldoff register offset Spotted by Manfred Spraul. [PATCH] Update MAINTAINERS with new e100/e1000/ixgb maintainers Jeff, Adding John/Ganesh/Ayyappan for e100/e100/ixgb in 2.6. Keeping myself on for e100 for a couple more 2.6.x releases. -scott [PATCH] com20020-isa.c warning fix From: "Luiz Fernando N. Capitulino" drivers/net/arcnet/com20020-isa.c:188: warning: unused variable `dev' drivers/net/arcnet/com20020-isa.c:189: warning: unused variable `lp' [PATCH] s2io.h: gcc-3.5 build fix In file included from drivers/net/s2io.c:68: drivers/net/s2io.h: In function `readq': drivers/net/s2io.h:757: error: invalid lvalue in assignment drivers/net/s2io.h:758: error: invalid lvalue in assignment [SCTP] Update sctp_ulpevent structure to include assoc pointer and only the receive specific fields of sctp_sndrcvinfo. [SCTP] Use id to ptr translation service in lib/idr.c to assign and validate ids of associations. This patch avoids the use of virt_addr_valid() to validate the address of associations passed by the user. Currently the address of an association is used as its id. virt_addr_valid doesn't work as expected when PAGEALLOC debugging is enabled. [CPUFREQ] Stop preempt count from going negative. Broken failure path spotted by Dominik Brodowski. [Bluetooth] Allocate the BCM203x URB buffer seperately The buffer shares cachelines with other fields of the structure. On architectures which require synchronisation before or after doing DMA to or from a buffer, any access to such fields sharing cachelines can corrupt the content of the buffer. The allocation primitives guarantee that cachelines are not shared. Noticed by Oliver Neukum Update amd8111 net driver. version 3.04 for 2.4 kernel: + 1. Added set_mac_address routine for bonding driver support. + 2. Tested the driver for bonding support + 3. Bug fix: Fixed mismach in actual receive buffer lenth and lenth + indicated to the h/w. + 4. Modified amd8111e_rx() routine to receive all the received packets + in the first interrupt. + 5. Bug fix: Corrected rx_errors reported in get_stats() function. version 3.05 for 2.6 kernel: + 1. Added NAPI support Fix SCSI cdrom disconnection race This fixes http://bugme.osdl.org/show_bug.cgi?id=2400 [AGPGART] Fix SiS 746 again. Turns out that this chipset won't work in AGPv3 mode with the generic AGPv3 routines. *somehow*, it works in AGPv3 mode with AGPv2 aperture sizing etc. Very, very strange. Still, until we get some docs from SiS, some support is better than none. [AGPGART] Whitespace cleanup in sis-agp use spaces instead of (borked) tabs. Fix 20 second hang on some deletes of reopened file due to semaphore conflict with vfs_delete on i_sem Add missing header changes from SCSI cdrom disconnection fix PPC32: Change all #if FOO to #ifdef FOO PPC32: Two minor Carolina PReP fixes. From Hollis Blanchard . [PATCH] PCI Hotplug: Fix interpretation of 0/1 for MRL in SHPC & PCI-E hot-plug This patch contains fixes for interpretation of 0/1 for MRL to match pcihpview, bus speed definition in shpchp_hpc.c etc. [PATCH] USB: retry some descriptor fetches This helps Linux handle certain enumeration problems better, by retrying most stalled descriptor fetches; on some devices, those indicate temporary problems. This match makes at least one such (old) device enumerate reliably. [PATCH] USB: fix xsane breakage, hangs on device scan at launch Disable a usbfs disconnect() synchronization hack, which recently started deadlocking because this routine is now called in a different context. It shouldn't be needed any longer now that usbcore shuts down endpoints as part of driver unbinding. (Except maybe on UHCI, which will have canceled but not necessarily completed all requests.) [PATCH] USB: add missing usb entries to sysfs We have found in the course of hacking on HAL that some information that is in /proc/bus/usb/devices is not in sysfs. It would be nice to rely only on sysfs, so the attached patch adds three files to usb devices in sysfs: devnum, maxChild, and version. This patch is actually by David Zuethen, the HAL maintainer - I told him I would clean it up and get it upstream. [PATCH] USB: fix up previous sysfs patch to actually compile... [CPUFREQ] Quieten powernow-k7 in the built-in case. The other cpufreq drivers are quiet in the 'dont have hardware' case, so this should follow suit. [CPUFREQ] Don't bother checking if we need workarounds if we don't support powernow. [PATCH] I2C: Refactor swap_bytes in i2c chip drivers > Ick, no, we should be using the proper kernel call for this, swab16(), > right? Care to redo this patch to just fix the drivers and get rid of > our duplicating of this function. Oh, I didn't know such a function existed, sorry. Here's a new patch, hope you like it. Tested to work on my as99127f, btw (w83781d driver). Documentation update follows (well, tomorrow it does). [ARM PATCH] 1807/1: S3C2410 - onboard serial Patch from Ben Dooks Serial driver for S3C2410 on board UARTs. Re-post of 1796/1 Includes BAST driver to register on-board 16550s. PPC32: Assign an interrupt for the VME chip on PReP MVME* boards. From Lutz Rossa . [ARM PATCH] 1806/1: Adding barrier() to show_stack () for proper backtracing Patch from Marc Singer As suggested by Russell, we add a barrier() before returning from stack_trace(). This was helpful when diagnosing a problem with a kernel transition to user-space where the problem was a lack of floating point support in the kernel. Without this change, the backtrace reported an error. It is possible that this change has already been made. I don't see it in any of the applied patches that I can read. [ARM] Fix ordering of machine class selection. The machine class should be in alphabetical order. Swap ordering of the recently added TI and S3C2410 entries to return it to this ordering. [NET]: Use const args in eth_copy_and_sum and is_valid_ether_addr. [PATCH] SCSI: make DV check device capabilities the SPI transport class DV should check the data we derive from the inquiry to see if the device is capable of supporting wide/sync before trying to validate the settings. [PATCH] I2C: class fixup for the ali1563 driver [PATCH] I2C: i2c-ali1563.c section fix ali1563_shutdown() is called from __init ali1563_probe() and hence cannot be marked __init. USB: fix pl2303 handling of status bits. Patch originally from Kevin Watkins USB: fix empty write issue in pl2303 driver. Patch originally from Christian Groessler but cleaned up by me. [PATCH] add class support to dsp56k.c Here is a patch that adds sysfs class support to /drivers/char/dsp56k.c [ARM] Move definition of the kernel module space to asm-arm Since all machine classes define module space the same way, we move this into the common ARM code. [PATCH] Add sysfs class support to fs/coda/psdev.c Here is a patch to add class support to psdev.c. I have verified it compiles and works. [Bluetooth] Fix URB unlink race in the USB drivers The code in hci_usb_unlink_urbs() calls usb_unlink_urb() to perform a synchronous unlink of each pending URB. It then moves each URB to the completed list, and then frees everything on the completed list. By doing this, the code implicitly assumes that when usb_unlink_urb() returns the URB will have completed and be ready to be deallocated. That's not always true. The same applies to the BlueFRITZ! USB driver. Patch from Alan Stern [Bluetooth] Make use of request_firmware() for the 3Com driver The 3Com Bluetooth PCMCIA cards need a firmware download every time they are inserted. With request_firmware() the file BT3CPCC.bin is now loaded directly from the userspace and the external firmware loader program is no longer needed. [Bluetooth] Improve NULL pointer handling This small patch adds more checks for NULL pointers. [Bluetooth] Add support for Anycom CF-300 The Anycom CF-300 compact flash card contains a new Bluetooth chip and thus it needs some special handling for the faster UART baud rate. This patch detects this new card and does the different initialization. [PATCH] ia64: put URLs in documentation files inside angle-brackets Patch by Petri T. Koistinen. [PATCH] ia64: ACPI IRQ cleanup (arch part) Here's the ia64 part of the ACPI IRQ cleanup I proposed here: http://www.gelato.unsw.edu.au/linux-ia64/0403/8979.html After the arch bits are in, I'll post the corresponding ACPI changes. I removed the "Found IRQ" printk now because when the ACPI change goes in, dev->irq won't be initialized until *after* acpi_pci_irq_enable(). [PATCH] ia64: allow simscsi to be a module Requiring CONFIG_HP_SIMSCSI to be either "y" or "n" breaks allmodconfig, because simscsi ends up built-in, while scsi itself is a module. So allow simscsi to be a module also. [PATCH] ia64: perfmon update Here is a new perfmon patch. It is important because it fixes the problem of the close() when the file descriptor is shared between two related processes. The good thing is that it simplifies a lot the cleanup of the sampling buffer. Here is the ChangeLog: - fix bug in pfm_close() when the descriptor is shared between related processed. Introduce a pfm_flush() called for each invocation of close(). pfm_close() only called for the last user. - fix pfm_restore_monitoring() to also reload the debug registers. They could be modified while monitoring is masked. - fix pfm_close() to clear ctx_fl_is_sampling. - fix a bug in pfm_handle_work() which could cause the wrong PMD to be reset. - converted PROTECT_CTX/UNPROTECT_CTX into local_irq_save/restore to keep context protection but allow IPI to proceed. - updated pfm_syswide_force_stop() to use local_irq_save/restore now that the context is protected from the caller side. - updated pfm_mck_pmc_check() to check if context is loaded before checking for special IBR/DBR combinations. Clearing the debug registers is not needed when the context is not yet loaded. - updated perfmon.h to have to correct prototype definitions for the pfm_mod_*() functions. - got rid of the PFM_CTX_TERMINATED state. - cleanup the DPRINT() statements to remove explicit output of current->pid. This is done systematically by the macros. - added a systctl entry (expert_mode) to bypass read/write checks on PMC/PMD. As its name indicates this is for experts ONLY. Must be root to toggle /proc/sys entry. - corrected pfm_mod_*() to check against the current task. - removed pfm_mod_fast_read_pmds(). It is never needed. - added pfm_mod_write_ibrs() and pfm_mod_write_dbrs(). ia64: Make acpi.c compile again: there was an implicit declaration mismatch because the external declaration isn't in the arch- independent ACPI bits yet. [SBP2]: Fix compile for older gcc's [Kconfig]: eth1394 requires INET [SBP2]: Sync revision [Bluetooth] Allow normal users to release the previous created TTY In the case the RFCOMM device node can't be found, the user must be able to release the previous created TTY. [Bluetooth] Fix race in RX complete routine of the USB drivers The test of the HCI_RUNNING flags bit in the RX complete routine should be made while holding the completion lock. Otherwise there can be a race on SMP systems in which RX complete finds the bit is set and on another processor the close routine clears the bit, grabs and releases the lock and then unlinks all the active URB's. Then the first processor acquires the lock and resubmits the URB. Patch from Alan Stern Updating Force PCore to 2.6 [PATCH] USB: Updated unusual_dev.h entry On Thu, 8 Apr 2004, Marcin Juszkiewicz wrote: > usb-storage: This device (054c,0025,0100 S 04 P 01) has unneeded SubClass and > Protocol entries in unusual_devs.h Thank you for sending this in. [PATCH] Add sysfs class support for CAPI here is a patch that adds class support to the ISDN CAPI module. Without it udev won't create the /dev/capi20 device node. [PATCH] fix sysfs class support to fs/coda/psdev.c --On Friday, April 09, 2004 12:02:19 AM +0200 Marcel Holtmann wrote: >> +static struct class_simple coda_psdev_class; > > I think coda_psdev_class must be a pointer. > > Regards > > Marcel Doh! I tested on one system and fixed this there. Then accidentally mailed out the original. Sorry about that. Here is a patch to fix it: [PATCH] Fix for patch to add class support to stallion.c Oops. Realized I had a / in the file name in this patch too. Please apply to correct it: [PATCH] Fix class support to istallion.c Realized I put a / in the filename of this device too. Here is the fix: [PATCH] I2C: Enable changing fan_divs in lm80 driver For some reason the original lm80 driver in 2.6 cannot set fan_divs (while the 2.4 driver could). This patch brings support back. It was lightly tested by one user. This patch also suggests some code cleanups (fan code refactoring). I'll send a different patch later for these. [PATCH] I2C: New chip driver: pcf8591 Please find below a patch against kernel 2.6.5-rc2-mm4 to add the pcf8591 driver (a 8-bit A/D and D/A converter). I have ported it from the 2.4 version, and it includes some fixes, improvements and simplifications. It has been reviewed by Jean Delvare on IRC. Please also note that the patch also fixes a missing space in drivers/i2c/chips/Kconfig, introduced by the previous patch I sent you concerning the pcf8574. [PATCH] I2C: minor bugfixes for the pcf8591.c driver and formatting cleanups. [PATCH] I2C: clean up out of order bus Makefile and Kconfig entries. [netdrvr tulip] remove ChangeLog file It was out of date. BitKeeper logs are more recent and more accurate. [netdrvr tulip] add MII support for Comet chips Add MII support for ADMtek Comet (Linksys LNE100TX v4.1 & others): * tulip_core.c: add HAS_MII flag to COMET entry in tulip_tbl[] * timer.c (comet_timer): add missing call to tulip_check_duplex() and replace inl() calls with tulip_mdio_read() calls Changes modeled after Donald Becker's tulip.c:v0.98 1/8/2004 [SERIAL] Unuse old SERIAL_IO_xxx macros. 8250.c should be using the replacement UPIO_xxx macros instead. [SERIAL] Remove some dead declarations. [SERIAL] Correct minor debugging format string error. [SERIAL] Don't try to free resources we didn't request. [SERIAL] Pass device pointer through to tty_register_device. This allows drivers to pass their struct device through to tty_register_device, which in turn allows sysfs to show which device and driver owns the UART. [SERIAL] Pass sa11x0 struct device through to tty_register_device. [SERIAL] Remove UPF_HUP_NOTIFY; this is no longer used. [IPV6]: In ndisc_netdev_event, handle NETDEV_DOWN. Based upon patches and commentary from Thomas Spatzier, Stephen Hemminger, and Andi Kleen. [IPSEC]: Support draft-ietf-ipsec-udp-encaps-00/01, some ipec impls need it. [ISDN]: Add missing IPPP_FILTER entry to Kconfig. [ISDN]: Fix kernel PPP/IPPP active/passiv filter code. [IPV6]: Add missing MIB counter increments. [SOUND]: Proper deps for SND_BIT32_EMUL. [SOUND]: Add amd7930 to sndmagic.h [NET]: Kill __FUNCTION__ string literal concatenation. From Tony Breeds [NETFILTER]: Add more debug info to TFTP helper. From Vineet Mehta [ATM]: get atm_guess_pdu2truesize() right [ATM]: [nicstar] using dev_alloc_skb() (reported by Johnston, [IRDA]: Move IRDA device headers to more appropriate place. [IPV6]: Mark MLDv2 report as known. Mark MLDv2 Report as known ICMPv6 type. (We just ignore MLDv2 Reports on hosts as the spec says.) [NET]: Add random_ether_addr to ether_device.h [NET]: Use random address in dummy driver. [NET]: Use random address in usb gadget driver. [NET]: Use random address in usbnet driver. [SCTP]: Fix printk warnings. [ATM]: Fix printk warnings in ambassador driver. [IRDA]: Fix warnings in sir_dev.c [IRDA]: Fix 32-bit pointer bug in donauboe.c [NET]: Fix printk warnings in wireless/strip.c [NET]: Fix printk warnings in strip driver. [SERIAL] HCDP IRQ fixup Some pre-production firmware has incorrect GSI values in the HCDP, which tells us where the serial console port is, so we have to do the auto-IRQ thing after all. [SERIAL] Add extra suspend/resume functionality to serial_cs. This calls into the 8250 driver so that the serial port settings can be saved and restored over a suspend/resume cycle. Previous kernels have assumed that the port will be re-opened after such an event, which may not be the case. Convert sd to kref and fix sd_open/sd_remove race We actually fix this race by mediating the object release/get race (i.e. we destroy the scsi_disk object when its reference count goes 1->0, we use a semaphore to prevent something else trying to get a reference after or during this). The open/remove race is actually irrelevant because even if we open an already removed object, all that will happen is that we get a reference to a device that always returns EIO. Convert sr to a kref and fix sr_open/sr_remove race We actually fix this race by mediating the object release/get race (i.e. we destroy the scsi_cd object when its reference count goes 1->0, we use a semaphore to prevent something else trying to get a reference after or during this). The open/remove race is actually irrelevant because even if we open an already removed object, all that will happen is that we get a reference to a device that always returns EIO. [ARM] Reduce the number of unnecessary includes in decompressor. This appears to work around the gcc problem where gcc adds extra .globl directives into the assembly for misc.s for its internal libgcc functions. [PCMCIA] Fix resource handling for memory probe Add claim_region and free_region to claim/free resource regions. This ensures that we only attempt to probe memory regions which are directly related to the socket in question, rather than any memory region we happen to be able to request. This also fixes a memory leak where we don't kfree the resources we previously allocated. [PCMCIA] Remove racy check_io_resource() Convert do_io_probe() to use claim/free_region() rather than the racy check_io_resource(). Remove check_io_resource() and the now unused resource_parent() functions. [PCMCIA] Use kernel resource core as primary resource allocator. Turn the resource management on its head. Rather than using PCMCIA's resource database as the primary object to allocate resources, use Linux's standard resource allocation instead. When we have a socket on a PCI bus, we always use the PCI resource allocation functions rather than the kernels core resource allocation, so that we can take account of any bridges. [NET]: Fix memset args in sk_mca, noticed by Jean Delvare [ARM] Drop -traditional from assembler command line in decompressor. [PCMCIA] Re-export pci_bus_alloc_resource() from PCI code. Since PCMCIA now uses this, re-export it. [PCMCIA] Fix warning about truncated integer. [ARM] Fix spacing in arch/arm/boot/Makefile and arch/arm/mm/Kconfig. NFSv2/v3/v4: Prepare the nfs_page struct to allow for short reads. [SERIAL] Add support for TI16C750 hardware flow control. NFSv2/v3/v4: Add support for asynchronous reads even if rsize NFSv2/v3/v4: Add support for asynchronous writes even if wsize NFSv2/v3/v4: When pdflush() is trying to free up memory by calling our writepages() method, throttle all writes to that mountpoint. RPC,NFS: remove instances of tests for waitqueue_active(). Those can be racy. RPC: remove unnecessary support for sk->sk_sleep on those sockets that are owned by the RPC client. RPC: add fair queueing to the RPC scheduler. If a wait queue is defined as a "priority queue" then requests are dequeued in blocks of 16 in order to work well with write gathering + readahead on the server. There are 3 levels of priority. The high priority tasks get scheduled 16 times for each time the default level gets scheduled. The lowest level gets scheduled once every 4 times the normal level gets scheduled. Original patch contributed by Shantanu Goel. RPC: Close some potential scheduler races in rpciod. NFSv2/v3/v4: Deal with the case where the server reads/writes fewer bytes than we requested due to resource limitations etc. RPCSEC_GSS: Fix integrity checksum bugs. Need to take into account the starting offset when calculating the page length. NFSv2/v3/v4: Fix a slowdown of O_SYNC and O_DIRECT writes that resulted from over-aggressive attribute cache revalidation. NFSROOT: clean up the parser routines (patch by Fabian Frederic) RPCSEC_GSS: Fix RPC padding in two instances of RPCSEC_GSS code. RPC: Clean up XDR encoding of opaque data. NFSv4: attribute bitmap values need to be unsigned long integers. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating ACCESS RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating GETATTR RPC calls. NFSv4: Remove unnecessary post-op attributes from read/write/... calls. The new attribute revalidation scheme doesn't rely on them. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating LOOKUP RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for looking up the mountpoint. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating REMOVE RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating RENAME RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for hard linking NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating CREATE RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating PATHCONF RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating STATFS RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme when doing sillyrename() completion. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating READLINK RPC calls. NFSv4: use the (more efficient) NFSv2/v3-like XDR scheme for generating READDIR RPC calls. NFSv4: assorted code readability cleanups in the XDR NFSv4: clean up the FSINFO XDR code to conform to the new scheme for GETATTR. RPC: add a field to the xdr_buf that explicitly contains the maximum buffer length. RPC: make the client receive xdr_buf return the actual length of the RPC length. NFSv4/RPC: improved checks to prevent XDR reading beyond the actual end of the RPC reply. NFSv4: Check server capabilities at mount time so that we can optimize away requests for attributes that are not supported. In particular, we wish to determine whether or not the server supports ACLs. RPC: Fix a bug introduced by trond.myklebust@fys.uio.no|ChangeSet|20040314024328|33542. portmap can fail due to the call to xprt_close() in xprt_connect(): xprt_disconnect() wakes up xprt->snd_task, and sets -ENOTCONN, which again gets converted to EIO by xprt_connect_status() Fix is to remove call to xprt_disconnect(). We don't need it in the case when we are reconnecting. However we do need to ensure that we wake up xprt->snd_task if reconnection fails. Diagnosis & proposed solution by Olaf Kirch Lockd: Fix waiting on the server grace period. The old code was wrong in that it assumed that we are out the grace period as soon as the client is finished doing lock recovery. Also ensure that we respect signals when waiting for the server grace period to end. RPC: Ensure that we only schedule one RPC request at a time. In theory the current code could cause two to be scheduled if something wakes up xprt->snd_task before keventd has had a chance to run xprt_sock_connect() NFSv3: Fix an XDR overflow bug in READDIRPLUS [SPARC64]: Control -fomit-frame-pointer using CONFIG_FRAME_POINTER. [NET_SCHED]: Check for NULL opt in dsmark_init. [CRYPTO]: ARC4 Kconfig clarification. [SPARC64]: Provide _mcount as well as mcount. [PCMCIA] init_pcmcia_cs() to return error from class_register() Patch from: Randy Dunlap From: Walter Harms Now init_pcmcia_cs() returns the result of class_register(). Therefore init_pcmcia_cs() will possibly return an error. [ARM] use errno #defines in assembly Patch from: Randy Dunlap From: Danilo Piazzalunga Some assembly code (on various archs) either 1. uses hardcoded errno numbers instead of the canonical macro names, or 2. defines them locally, instead of including the appropriate header (while including other headers). This patch "fixes" such usage in - getuser.S for arm - putuser.S for arm JFS: Fix race in jfs_sync Don't let final iput happen while jfs_sync is processing inode. [PATCH] Fix unaligned stxncpy again Herbert Xu noted: "The current stxncpy on alpha is still broken when it comes to single word, unaligned, src misalignment > dest misalignment copies. I've attached a program which demonstrates this problem." Ugh, indeed. It fails when there is a zero byte before the data. Thanks. Here is the fix for this (both regular and ev6 version). [PATCH] x86-64 update From: Andi Kleen Current x86-64 patchkit for 2.6.5. - Add drivers/firmware/Kconfig - Clarify description of CONFIG_IOMMU_DEBUG - Use correct gcc option to optimize for Intel CPUs - Add EDD support (Matt Domsch) - Add workaround for broken IOMMU on VIA hardware. Uses swiotlb there now. - Handle more than 8 local APICs (Suresh B Siddha) - Delete obsolete mtrr Makefile - Add x86_cache_alignment and set it up properly for P4 (128 bytes instead of 64bytes). Also report in /proc/cpuinfo - Minor cleanup in in_gate_area - Make asm-generic/dma-mapping.h compile with !CONFIG_PCI Just stub out all functions in this case. This is mainly to work around sysfs. - More !CONFIG_PCI compile fixes - Make u64 sector_t unconditional [PATCH] Fix URLs in Kconfig files From: Rusty Russell From: "Petri T. Koistinen" 1) Various URLs in the Kconfig files are out of date: update them. 2) URLs should be of form . 3) References to files in the source should be of form 4) Email addresses should be of form [PATCH] feed devfs through Lindent Nobody seems to have any outstanding work against devfs, so... [PATCH] generalise system_running From: Olof Johansson It's currently a boolean, but that means that system_running goes to zero again when shutting down. So we then use code (in the page allocator) which is only designed to be used during bootup - it is marked __init. So we need to be able to distinguish early boot state from late shutdown state. Rename system_running to system_state and give it the three appropriate states. [PATCH] vt.c cleanup - Remove unneeded casts of a void * - whitespace consistency. [PATCH] con_open() speedup/cleanup con_open() is called on every open of the tty, even if the tty is already all set up. We only need to do that initialisation if the tty is being set up for the very first time (tty->count == 1). So do that: check for tty_count == 1 inside console_sem() and if so, bypass all the unnecessary initialisation. Note that this patch reintroduces the con_close()-vs-init_dev() race+oops. This is because that oops is accidentally prevented because when it happens, con_open() reinstalls tty->driver_data even when tty->count > 1. But that's bogus, and when the race happens we end up running vcs_make_devfs() and vcs_remove_devfs() against the same console at the same time, producing indeterminate results. So the race needs to be fixed again, for real. [PATCH] remove down_tty_sem() Remove the down_tty_sem() and up_tty_sem() and replace them with open-coded up() and down(). This is an equivalent transformation. I assume these functions were created to open the possibility of per-tty semaphores at some time in the future. But the code which is protected by this lock deals with two tty's at the same time, and the next patch will need to release the lock after the tty has been destroyed. [PATCH] Fix VT open/close race The race is that con_close() can sleep, and drops the BKL while tty->count==1. But another thread can come into init_dev() and will take a new ref against the tty and start using it. But con_close() doesn't notice that new ref and proceeds to null out tty->driver_data while someone else is using the resurrected tty. So the patch serialises con_close() against init_dev() with tty_sem. Here's a test app which reproduced the oops instantly on 2-way. It realy needs to be run against all tty-capable devices. /* * Run this against a tty which nobody currently has open, such as /dev/tty9 */ #include #include #include #include #include #include void doit(char *filename) { int fd,x; fd = open(filename, O_RDWR); if (fd < 0) { perror("open"); exit(1); } ioctl(fd, KDKBDREP, &x); close(fd); } main(int argc, char *argv[]) { char *filename = argv[1]; for ( ; ; ) doit(filename); } [PATCH] i4l: kernelcapi receive workqueue and locking rework From: Armin Schindler With this patch the ISDN kernel CAPI code uses a per application workqueue with proper locking to prevent message re-ordering due to the fact a workqueue may run on another CPU at the same time. Also some locks for internal data is added. Removed global recv_queue work, use per application workqueue. Added proper locking mechanisms for application, controller and application workqueue function. Increased max. number of possible applications and controllers. [PATCH] Fix get_wchan() FIXME wrt. order of functions From: William Lee Irwin III This addresses the issue with get_wchan() that the various functions acting as scheduling-related primitives are not, in fact, contiguous in the text segment. It creates an ELF section for scheduling primitives to be placed in, and places currently-detected (i.e. skipped during stack decoding) scheduling primitives and others like io_schedule() and down(), which are currently missed by get_wchan() code, into this section also. The net effects are more reliability of get_wchan()'s results and the new ability, made use of by this code, to arbitrarily place scheduling primitives in the source code without disturbing get_wchan()'s accuracy. Suggestions by Arnd Bergmann and Matthew Wilcox regarding reducing the invasiveness of the patch were incorporated during prior rounds of review. I've at least tried to sweep all arches in this patch. [PATCH] get_wchan() sparc64 fix From: William Lee Irwin III Now the scheduler text is in its own ELF section this branch is asking for an illegal displacement. [PATCH] ppc32: Fix thinko in the altivec exception code From: Benjamin Herrenschmidt Without this patch, executing an altivec instruction on an altivec capable CPU with a kernel that do not have CONFIG_ALTIVEC set would result in a kernel crash. (Fix forward ported from 2.4 by John Whitney ) [PATCH] ppc64: si_addr fix From: Benjamin Herrenschmidt This patch fixes si_addr on some segfaults in 64 bits mode, it used to be bogus (address not passed to do_page_fault by the asm code after a failure to set an SLB entry). [PATCH] ppc64: Fix bug in hugepage support From: David Gibson The PPC64 version of is_aligned_hugepage_range() is buggy. It is supposed to test not only that the given range is hugepage aligned, but that it lies within the address space allowed for hugepages. We were checking only that the given range intersected the hugepage range, not that it lay entirely within it. This patch fixes the problem and changes the name of some macros to make it less likely to make that misunderstanding again. [PATCH] ppc64: hugepage bugfix From: David Gibson Found this again while looking at hugepage extensions. Haven't actually had it bite yet - the race is small and the other bug will never be triggered in 32-bit processes, and the function is rarely called on 64-bit processes. This patch fixes two bugs in the (same part of the) PPC64 hugepage code. First the method we were using to free stale PTE pages was not safe with some recent changes (race condition). BenH has fixed this to work in the new way. Second, we were not checking for a valid PGD entry before dereferencing the PMD page when scanning for stale PTE page pointers. [PATCH] ppc64: fix failure return codes from {pci,vio}_alloc_consistent() From: Olof Johansson A bug snuck in during the rewrite of ppc64 IOMMU code. When a {pci,vio}_alloc_consistent() call fails, DMA_ERROR_CODE is returned instead of NULL. [PATCH] ppc64: Fix G5 build with DART (iommu) support From: Benjamin Herrenschmidt A recent patch that cleaned up some absolute/virt translation macros forgot one occurence, thus breaking g5 build with iommu support. [PATCH] disable VT on iSeries by default From: Paul Mackerras This patch from Julie DeWandel makes CONFIG_VT default to N on iSeries machines which are using the iSeries virtual console driver viocons.c. The VT console and the viocons code can't coexist because they use the same tty numbers, that is, viocons supplies /dev/tty1. Without this patch the user has to figure out somehow that s/he has to turn on CONFIG_EMBEDDED in order to be able to turn off CONFIG_VT, which is really very non-obvious. [PATCH] ppc64: export itLpNaca on iSeries From: Paul Mackerras This patch from Julie DeWandel exports the symbol itLpNaca on iSeries machines, for the use of the viodasd driver. [PATCH] PPC64: iSeries virtual ethernet driver From: Stephen Rothwell This is the iSeries virtual ethernet driver. David Gibson has taken you previous comments and hopefully sitisfied most of them. The driver has also undergone some more testing which showed up some bugs which have been addressed. Unfortunately, Anton is about to submit some other patches of mine which will sightly comflict with this. I will send a patch shortly that will (hopefully) fix that. [PATCH] ppc64: allow hugepages anywhere in low 4GB From: David Gibson On PPC64, to deal with the restrictions imposed by the PPC MMU's segment design, hugepages are only allowed to be mapping in two fixed address ranges, one 2-3G (for use by 32-bit processes) and one 1-1.5T (for use in 64-bit processes). This is quite limiting, particularly for 32-bit processes which want to use a lot of large page memory. This patch relaxes this restriction, and allows any of the low 16 segments (i.e. those below 4G) to be individually switched over to allow hugepage mappings (provided the segment does not already have any normal page mappings). The 1-1.5T fixed range for 64-bit processes remains. [PATCH] ppc64: Move EPOW log buffer to BSS From: Olof Johansson RTAS on IBM pSeries runs in real mode, so all pointers being passed in to it need to be in low memory. There's two places in the RAS code that passes in pointers to items on the stack, which might end up being above the limit. Below patch resolves this by creating a buffer in BSS + a lock for serialization. There's no reason to worry about contention on the lock, since rtas_call() also serializes on a single spinlock and this is an infrequent code path in the first place. [PATCH] ppc64: Disable SMT snooze by default From: Anton Blanchard Disable SMT snooze by default [PATCH] ppc64: Allow PCI devices to use address that happens to fall in the ISA range From: Jake Moilanen Allow PCI devices to use address that happens to fall in the ISA range, but still protect against ISA device accesses when there is not an ISA bus. [PATCH] ppc64: JS20 PHB devfn fix From: Jake Moilanen The JS20 uses devfn 0 for a HT->PCI bridge. The PHB devfn assumption does not hold for this case. [PATCH] ppc64: Correct comments for the offsets of fields in paca From: Will Schmidt Correct comments for the offsets of fields in paca [PATCH] ppc64: Make rtasd dump KERN_DEBUG From: Jake Moilanen Change the loglevel of an error log printed so it does not goto the console. Since error logs can be upto 2k in size, it can spam the console. [PATCH] ppc64: Fix xmon compile warning From: Joel Schopp Fix includes to avoid the compiler warning: arch/ppc64/xmon/start.c: In function `xmon_readchar': arch/ppc64/xmon/start.c:104: warning: implicit declaration of function `xmon_printf' [PATCH] ppc64: Misc rtasd fixes From: Jake Moilanen Misc rtasd fixes for some broken firmware versions. [PATCH] ppc64: Additional PVR value for power5 processor From: Will Schmidt Additional PVR value for power5 processor [PATCH] ppc64: Add support for hotplug cpus From: Joel Schopp Add support for hotplug cpus [PATCH] ppc64: Add RTAS os-term call for panic on pSeries From: Michael Strosaker Add RTAS os-term call for panic on pSeries [PATCH] ppc64: Fix xics irq affinity bug From: Anton Blanchard Fix xics irq affinity bug. We were anding with cpu_online_map but werent using the result later on. [PATCH] ppc64: irq cleanups From: Paul Mackerras Create and use irq_offset_up/down, get_irq_desc, for_each_irq [PATCH] ppc64: Create xics get_irq_server From: Anton Blanchard Create xics get_irq_server and use it in enable/disable code. [PATCH] ppc64: Put SMT threads into global interrupt queue From: David Engebretsen Put SMT threads into global interrupt queue [PATCH] ppc64: Update CPU features From: Anton Blanchard Update CPU features. Remove DABR feature, all cpus have it. Add MMCRA, PMC8, SMT, COHERENT_ICACHE, LOCKLESS_TLBIE features [PATCH] ppc64: Move sysfs specific stuff into sysfs.c From: Anton Blanchard Move sysfs specific stuff into sysfs.c [PATCH] ppc64: Add some POWER5 specific optimisations From: Anton Blanchard Add some POWER5 specific optimisations: - icache is coherent, no need to explicitly flush - tlbie lock no longer required [PATCH] ppc64: Add PMCs to sysfs From: Anton Blanchard Add PMCs to sysfs. [PATCH] ppc64: Add HW PMC support to oprofile From: Anton Blanchard Add HW PMC support to oprofile [PATCH] ppc64: Register secondary threads in NUMA init code From: Anton Blanchard Register secondary threads in NUMA init code [PATCH] ppc64: Use enum dma_data_direction for the vio DMA api routines. From: Stephen Rothwell This patch uses enum dma_data_direction for the vio DMA api routines. This allows us to remove some include of linux/pci.h. Also missed some pci_dma_mapping_error uses. [PATCH] ppc64: Use enum dma_data_direction for all APIs From: Stephen Rothwell This is just a cleanup to use enum dma_data_direction for all APIs except the pci_dma_ ones (since they are defined generically). Also make most of the functions in arch/ppc64/kernel/pci_iommu.c static. [PATCH] ppc64: Consolidate some of the iommu DMA mapping routines. From: Stephen Rothwell This patch consolidates some of the iommu DMA mapping routines. [PATCH] ppc64: change the iSeries virtual device drivers to use the vio infrastructure for DMA mapping From: Stephen Rothwell This patch changes the iSeries virtual device drivers to use the vio infrastructure for DMA mapping instead of the PCI infrastructure. This is a step along the way to integrating them correctly into the driver model. [PATCH] ppc64: replace vio_dma_mapping_error with dma_mapping_error everywhere. From: Stephen Rothwell James Bottomley is right, this was a mistake. This patch replaces vio_dma_mapping_error with dma_mapping_error everywhere. [PATCH] ppc64: add platform identification to oops messages From: Anton Blanchard [PATCH] ppc64: Oops cleanup From: Anton Blanchard Oops cleanup: - Move prototypes into system.h - Move the debugger hooks into die, all the calls sites were calling them. - Handle bad values passed to prregs [PATCH] ppc64: Add smt_snooze_delay cpu sysfs attribute From: Anton Blanchard Add smt_snooze_delay cpu sysfs attribute [PATCH] ppc64: DMA API updates From: Anton Blanchard DMA API updates, in particular adding the new cache flush interfaces. [PATCH] ppc64: Remove unused rtas functions From: Joel Schopp I was looking at rtas serialization for reasons I won't go into here. While wandering through the code I found that two functions were not properly serialized. phys_call_rtas and phys_call_rtas_display_status are the functions. After looking further they are redundant and not used anywhere at all. [PATCH] ppc64: Quieten NVRAM driver From: Anton Blanchard Quieten NVRAM driver [PATCH] ppc64: UP compile fixes From: Anton Blanchard UP compile fixes [PATCH] ppc44x: fix memory leak From: Matt Porter This fixes a memory leak when freeing pgds on PPC44x. [PATCH] Quota locking fixes From: Jan Kara Change locking rules in quota code to fix lock ordering especially wrt journal lock. Also some unnecessary spinlocking is removed. The locking changes are mainly: dqptr_sem, dqio_sem are acquired only when transaction is already started, dqonoff_sem before a transaction is started. This change requires some callbacks to ext3 (also implemented in this patch) to start transaction before the locks are acquired. [PATCH] fs/inode.c list_head cleanup Teach inode.c about list_move(). [PATCH] search for /init for initramfs boots From: Olaf Hering initramfs can not be used in current 2.6 kernels, the files will never be executed because prepare_namespace doesn't care about them. The only way to workaround that limitation is a root=0:0 cmdline option to force rootfs as root filesystem. This will break further booting because rootfs is not the final root filesystem. This patch checks for the presence of /init which comes from the cpio archive (and thats the only way to store files into the rootfs). This binary/script has to do all the work of prepare_namespace(). [PATCH] knfsd: Return -EOPNOTSUPP when unknown mechanism name encountered From: NeilBrown It's better than oopsing. [PATCH] knfsd: Minor fix to error return when updating server authentication information From: NeilBrown [PATCH] knfsd: fix a problem with incorrectly formatted auth_error returns. From: NeilBrown From: Fred Isaman [PATCH] knfsd: Remove name_lookup.h that noone is using anymore. From: NeilBrown [PATCH] knfsd: Add server-side support for the nfsv4 mounted_on_fileid attribute. From: NeilBrown [PATCH] knfsd: Improve UTF8 checking. From: NeilBrown From: Fred. We don't do all the utf8 checking we could in the kernel, but we do some simple checks. Implement slightly stricter, and probably more efficient, checking. [PATCH] knfsd: Export a symbol needed by auth_gss From: NeilBrown From: "J. Bruce Fields" Without this compiling auth_gss as module fails. [PATCH] knfsd: Add data integrity to serve rside gss From: NeilBrown From: "J. Bruce Fields" rpcsec_gss supports three security levels: 1. authentication only: sign the header of each rpc request and response. 2. integrity: sign the header and body of each rpc request and response. 3. privacy: sign the header and encrypt the body of each rpc request and response. The first 2 are already supported on the client; this adds integrity support on the server. [PATCH] md: merge_bvec_fn needs to know about partitions. From: Neil Brown Addresses http://bugme.osdl.org/show_bug.cgi?id=2355 It seems that a merge_bvec_fn needs to be aware of partitioning... who would have thought it :-( The following patch should fix the merge_bvec_fn for both linear and raid0. We teach linear and raid0 about partitions in the merge_bvec_fn. ->merge_bvec_fn needs to make decisions based on the physical geometry of the device. For raid0, it needs to decide if adding the bvec to the bio will make the bio span two drives. To do this, it needs to know where the request is (what the sector number is) in the whole device. However when called from bio_add_page, bi_sector is the sector number relative to the current partition, as generic_make_request hasn't been called yet. So raid_mergeable_bvec needs to map bio->bi_sector (which is partition relative) to a bi_sector which is device relative, so it can perform proper calculations about when chunk boundaries are. [PATCH] posix message queues: code move From: Manfred Spraul cleanup of sysv ipc as a preparation for posix message queues: - replace !CONFIG_SYSVIPC wrappers for copy_semundo and exit_sem with static inline wrappers. Now the whole ipc/util.c file is only used if CONFIG_SYSVIPC is set, use makefile magic instead of #ifdef. - remove the prototypes for copy_semundo and exit_sem from kernel/fork.c - they belong into a header file. - create a new msgutil.c with the helper functions for message queues. - cleanup the helper functions: run Lindent, add __user tags. [PATCH] posix message queues: syscall stubs From: Manfred Spraul Add -ENOSYS stubs for the posix message queue syscalls. The API is a direct mapping of the api from the unix spec, with two exceptions: - mq_close() doesn't exist. Message queue file descriptors can be closed with close(). - mq_notify(SIGEV_THREAD) cannot be implemented in the kernel. The kernel returns a pollable file descriptor . User space must poll (or read) this descriptor and call the notifier function if the file descriptor is signaled. [PATCH] posix message queues: implementation From: Manfred Spraul Actual implementation of the posix message queues, written by Krzysztof Benedyczak and Michal Wronski. The complete implementation is dependant on CONFIG_POSIX_MQUEUE. It passed the openposix test suite with two exceptions: one mq_unlink test was bad and tested undefined behavior. And Linux succeeds mq_close(open(,,,)). The spec mandates EBADF, but we have decided to ignore that: we would have to add a new syscall just for the right error code. The patch intentionally doesn't use all helpers from fs/libfs for kernel-only filesystems: step 5 allows user space mounts of the file system. Signal changes: The patch redefines SI_MESGQ using __SI_CODE: The generic Linux ABI uses a negative value (i.e. from user) for SI_MESGQ, but the kernel internal value must be posive to pass check_kill_value. Additionally, the patch adds support into copy_siginfo_to_user to copy the "new" signal type to user space. Changes in signal code caused by POSIX message queues patch: General & rationale: mqueues generated signals (only upon notification) must have si_code == SI_MESGQ. In fact such a signal is send from one process which caused notification (== sent message to empty message queue) to another which requested it. Both processes can be of course unrelated in terms of uids/euids. So SI_MESGQ signals must be classified as SI_FROMKERNEL to pass check_kill_permissions (not need to say that this signals ARE from kernel). Signals generated by message queues notification need the same fields in siginfo struct's union _sifields as POSIX.1b signals and we can reuse its union entry. SI_MESGQ was previously defined to -3 in kernel and also in glibc. So in userspace SI_MESGQ must be still visible as -3. Solution: SI_MESGQ is defined in the same style as SI_TIMER using __SI_CODE macro. Details: Fortunately copy_siginfo_to_user copies si_code as short. So we can use remaining part of int value freely. __SI_CODE does the work. SI_MESGQ is in kernel: 6<<16 | (-3 & 0xffff) what is > 0 but to userspace is copied (short) SI_MESGQ == -3 Actual changes: Changes in include/asm-generic/siginfo.h __SI_MESGQ added in signal.h to represent inside-kernel prefix of SI_MESGQ. SI_MESGQ is redefined from -3 to __SI_CODE(__SI_MESGQ, -3) Except mips architecture those changes should be arch independent (asm-generic/siginfo.h is included in arch versions). On mips SI_MESGQ is redefined to -4 in order to be compatible with IRIX. But the same schema can be used. Change in copy_siginfo_to_user: We only add one line to order the same copy semantics as for _SI_RT. This change isn't very portable - some arch have its own copy_siginfo_to_user. All those should have similar change (but possibly not one-line as _SI_RT case was sometimes ignored because i wasn't used yet, e.g. see ia64 signal.c). Update: mq: only fail with invalid timespec if mq_timed{send,receive} needs to block From: Jakub Jelinek POSIX requires EINVAL to be set if: "The process or thread would have blocked, and the abs_timeout parameter specified a nanoseconds field value less than zero or greater than or equal to 1000 million." but 2.6.5-mm3 returns -EINVAL even if the process or thread would not block (if the queue is not empty for timedreceive or not full for timedsend). [PATCH] posix message queues: linux-specific poll extension From: Manfred Spraul Linux specific extension: make the message queue identifiers pollable. It's simple and could be useful. [PATCH] posix message queues: made user mountable From: Manfred Spraul Make the posix message queue mountable by the user. This replaces ipcs and ipcrm for posix message queue: The admin can check which queues exist with ls and remove stale queues with rm. I'd like a final confirmation from Ulrich that our SIGEV_THREAD approach is the right thing(tm): He's aware of the design and didn't object, but I think he hasn't seen the final API yet. [PATCH] posix message queue update From: Manfred Spraul My discussion with Ulrich had one result: - mq_setattr can accept implementation defined flags. Right now we have none, but we might add some later (e.g. switch to CLOCK_MONOTONIC for mq_timed{send,receive} or something similar). When we add flags, we might need the fields for additional information. And they don't hurt. Therefore add four __reserved fields to mq_attr. - fail mq_setattr if we get unknown flags - otherwise glibc can't detect if it's running on a future kernel that supports new features. - use memset to initialize the mq_attr structure - theoretically we could leak kernel memory. - Only set O_NONBLOCK in mq_attr, explicitely clear O_RDWR & friends. openposix uses getattr, attr |=O_NONBLOCK, setattr - a sane approach. Without clearing O_RDWR, this fails. I've retested all openposix conformance tests with the new patch - the two new FAILED tests check undefined behavior. Note that I won't have net access until Sunday - if the message queue patch breaks something important either ask Krzysztof or drop it. Ulrich had another good idea for SIGEV_THREAD, but I must think about it. It would mean less complexitiy in glibc, but more code in the kernel. I'm not yet convinced that it's overall better. [PATCH] security bugfix for mqueue From: Manfred Spraul I found a security bug in the new mqueue code: a process that has only write permissions to a message queue could call mq_notify(SIGEV_THREAD) and use the returned notification file descriptor to read from the message queue. [PATCH] split netlink_unicast From: Manfred Spraul The attached patch splits netlink_unicast into three steps: - netlink_getsock{bypid,byfilp}: lookup the destination socket. - netlink_attachskb: perform the nonblock checks, sleep if the socket queue is longer than the limit, etc. - netlink_sendskb: actually send the skb. jamal looked over it and didn't see a problem with the netlink change. The actual use from ipc/mqueue.c is still open (just send back whatever the C library passed to mq_notify, add an nlmsghdr or perhaps even make it a specialized netlink protocol), but the attached patch is independant from the the message queue change. (acked by davem) [PATCH] posix message queues: send notifications via netlink From: Manfred Spraul SIGEV_THREAD means that a given callback should be called in the context on a new thread. This must be done by the C library. The kernel must deliver a notice of the event to the C library when the callback should be called. This patch switches to a new, simpler interface: User space creates a socket with socket(PF_NETLINK, SOCK_RAW,0) and passes the fd to the mq_notify call together with a cookie. When the mq_notify() condition is satisfied, the kernel "writes" the cookie to the socket. User space then reads the cookie and calls the appropriate callback. [PATCH] compat emulation for posix message queues From: Arnd Bergmann I have tested the code with the open posix test suite and found the same four failures for both 64-bit and compat mode, most tests pass. The patch is against -mc1, but I guess it also applies to the other trees around. What worries me more than mq_attr compatibility is the conversion of struct sigevent, which might turn out really hard when more fields in there are used. AFAICS, the only other part in the kernel ABI is sys_timer_create(), so maybe it's not too late to deprecate the current structure and create a structure that can be used properly for compat syscalls. [PATCH] IPMI driver updates From: Corey Minyard - Add support for messaging through an IPMI LAN interface, which is required for some system software that already exists on other IPMI drivers. It also does some renaming and a lot of little cleanups. - Add the "System Interface" driver. The previous driver for system interfaces only supported the KCS interface, this driver supports all system interfaces defined in the IPMI standard. It also does a much better job of handling ACPI and SMBIOS tables for detecting IPMI system interfaces. [PATCH] move job control fields from task_struct to signal_struct From: Roland McGrath This patch moves all the fields relating to job control from task_struct to signal_struct, so that all this info is properly per-process rather than being per-thread. [PATCH] Fix page allocator lower zone protection for NUMA From: Martin Hicks This changes __alloc_pages() so it uses precalculated values for the "min". This should prevent the problem of min incrementing from zone to zone across many nodes on a NUMA machine. The result of falling back to other nodes with the old incremental min calculations was that the min value became very large. [PATCH] ext3 fsync() and fdatasync() speedup ext3's fsync/fdatasync implementation is currently syncing the inode via a full journal commit even if it was unaltered. Fix that up by exporting the core VFS's inode sync function to modules and calling it if the inode is dirty. We need to do it this way so that the inode is moved to the appropriate superblock list and so that the i_state dirty flags are appropriately updated. This speeds up ext3 fsync() for file overwrites by a factor of four (disk non-writeback) to forty (disk in writeback mode). [PATCH] speed up ext2 fsync() and fdatasync() ext2_sync_file() forgets to clear the inode's dirty bits, so we write the inode on every fsync(), even if it hasn't changed. Fix that up via the new sync_file() API which correctly manages the inode state bits and the superblock inode lists. When performing file overwrite on IDE with and without writeback caching enabled this patch approximately doubles fsync() speed, bringing it into line with O_SYNC writes. Also, fix up the return value handling in ext2_sync_file(). Credit due to Jeffrey Siegal who noticed the performance discrepancy and wrote a test app. [PATCH] jbd: fix ordered-data writeout logic There's some nasty code in commit which deals with a lock ranking problem. Currently if it fails to get the lock when and local variable `bufs' is zero we forget to write out some ordered-data buffers. So a subsequent crash+recovery could yield stale data in existing files. Fix it by correctly restarting the t_sync_datalist search. [PATCH] JBD: ordered-data commit cleanup For data=ordered, kjournald at commit time has to write out and wait upon a long list of buffers. It does this in a rather awkward way with a single list. it causes complexity and long lock hold times, and makes the addition of rescheduling points quite hard So what we do instead (based on Chris Mason's suggestion) is to add a new buffer list (t_locked_list) to the journal. It contains buffers which have been placed under I/O. So as we walk the t_sync_datalist list we move buffers over to t_locked_list as they are written out. When t_sync_datalist is empty we may then walk t_locked_list waiting for the I/O to complete. As a side-effect this means that we can remove the nasty synchronous wait in journal_dirty_data which is there to avoid the kjournald livelock which would otherwise occur when someone is continuously dirtying a buffer. [PATCH] jbd: fix I/O error handling Fix a few buglets spotted by Jeff Mahoney . We're currently only checking for I/O errors against journal buffers if they were locked when they were first inspected. We need to check buffer_uptodate() even if the buffers were already unlocked. [PATCH] readv/writev range checking fix do-readv_writev() is trying to fail if a) any of the segments have a length < 0 or b) the sum of the segments wraps negative. But it gets b) wrong because local variable tot_len is unsigned. Fix that up. [PATCH] Fix scripts/kernel-doc to handle __attribute__ From: Tom Rini The following patch is needed so that kernel-doc can handle functions which have __attribute__'s on them (such as __attribute__ ((weak))). [PATCH] slab: updates for per-arch alignments From: Manfred Spraul Description: Right now kmem_cache_create automatically decides about the alignment of allocated objects. The automatic decisions are sometimes wrong: - for some objects, it's better to keep them as small as possible to reduce the memory usage. Ingo already added a parameter to kmem_cache_create for the sigqueue cache, but it wasn't implemented. - for s390, normal kmalloc must be 8-byte aligned. With debugging enabled, the default allocation was 4-bytes. This means that s390 cannot enable slab debugging. - arm26 needs 1 kB aligned objects. Previously this was impossible to generate, therefore arm has its own allocator in arm26/machine/small_page.c - most objects should be cache line aligned, to avoid false sharing. But the cache line size was set at compile time, often to 128 bytes for generic kernels. This wastes memory. The new code uses the runtime determined cache line size instead. - some caches want an explicit alignment. One example are the pte_chain objects: they must find the start of the object with addr&mask. Right now pte_chain objects are scaled to the cache line size, because that was the only alignment that could be generated reliably. The implementation reuses the "offset" parameter of kmem_cache_create and now uses it to pass in the requested alignment. offset was ignored by the current implementation, and the only user I found is sigqueue, which intended to set the alignment. In the long run, it might be interesting for the main tree: due to the 128 byte alignment, only 7 inodes fit into one page, with 64-byte alignment, 9 inodes - 20% memory recovered for Athlon systems. For generic kernels running on P6 cpus (i.e. 32 byte cachelines), it means Number of objects per page: ext2_inode_cache: 8 instead of 7 ext3_inode_cache: 8 instead of 7 fat_inode_cache: 9 instead of 7 rpc_tasks: 24 instead of 15 tcp_tw_bucket: 40 instead of 30 arp_cache: 40 instead of 30 nfs_write_data: 9 instead of 7 [PATCH] set mod->waiter before calling stop_machine From: Rusty Russell mod->waiter needs to be set before we try to stop the module: setting it in __try_stop_module means it gets set to the kthread, not rmmod. [PATCH] fs/proc/proc_tty.c comment fixes From: Marc-Christian Petersen [PATCH] sb_mixer bounds checking From: Muli Ben-Yehuda This patch add proper bounds checking to the sb_mixer.c code, found by the stanford checker[0]. It fixes bugzilla bugs 252[1], 253[2] and 254[3]. Patch is against 2.6.5-rc2. It was tested by Rene Herman on SN AWE64 gold and sound still works. The issue was previously discussed on lkml[4], but apparently no fix was applied. The patch is a bit more intrusive than I would've liked, but I don't think it can be helped without really intrusive changes. sb_devc has a pointer to an array (iomap) that is set at run time to point to arrays of variable sizes. The patch adds an 'iomap_sz' member to sb_devc that is set to the length of the array, and does bounds checking in sb_common_mixer_set() and smw_mixer_set() agains that. [PATCH] pmdisk: fix strcmp in sysfs store From: Herbert Xu This patch fixes the sysfs store functions for pmdisk when the input contains a trailing newline. [PATCH] add file_operations.fcntl From: Chuck Lever O_DIRECT|O_APPEND cannot possibly work on NFS, so NFS needs some way of preventing the user from setting this combination. We felt that the best way of implementing this restriction is to allow the filesytem to implement its own fcntl() handler. This patch does, that, and provide the appropriate handler for NFS. Additional details from Chuck: Forgetting O_DIRECT for a moment, O_APPEND writes on NFS don't work in any case when multiple clients are writing to a file, since an NFS client can never guarantee it knows where the true end of file is 100% of the time. it works as expected iff only one client writes to an O_APPEND file at a time. Multi-client O_APPEND writing doesn't seem to be a problem for any application I'm aware of. Since it can be made to behave in the multi-client case with careful application logic or by using file locking, I don't think we should disallow it. I want to drop the inode semaphore when doing NFS direct I/O because it is synchronous; holding the i_sem means we reduce direct I/O concurrency to one I/O per file at a time. the important thing sct was worried about was the case where a single client is writing with O_APPEND and O_DIRECT, and we don't hold the i_sem during the write. We must at least hold the i_sem when determining where the end of file is to do the O_APPEND write. In 2.6, I believe that is handled correctly in the VFS layer, so this is not an issue for 2.6, right? [PATCH] Fix sys_time() to get subtick correction from the new xtime From: "La Monte H.P. Yarroll" This is a Scott Wood patch against 2.6.3. Use gettimeofday() rather than xtime.tv_sec in sys_time(), since sys_stime() uses settimeofday() and thus subtracts the subtick correction from the new xtime. stime() used settimeofday(), but time() did not use gettimeofday(). Since settimeofday() subtracts out the current intra-tick correction, and nsec was 0 (since stime() only allows seconds), this resulted in xtime being slightly earlier than the time that was set. If time() had used gettimeofday(), the correction would have been applied, and everything would be fine. However, instead time just reads the current xtime.tv_sec, so if time() is called immediately after stime(), you'll usually get a value one second earlier. [PATCH] Broken bitmap_parse for ncpus > 32 From: Joe Korty This patch replaces the call to bitmap_shift_right() in bitmap_parse() with bitmap_shift_left(). I also prepended comments to the bitmap_shift_* functions defining what 'left' and 'right' means. This is under the theory that if I and all the reviewers were bamboozled, others in the future occasionally might be too. [PATCH] ver_linux fix From: Rusty Russell From: Adrian Bunk Some versions of ps print non-version lines when ps --version is invoked. grep them out. [PATCH] Update CodingStyle hints for Emacs users. From: Trivial Patch Monkey From: Ben Greear Depending on one's default emacs settings, the suggestion in the CodingStyle may or may not work. This patch adds a few more commands to ensure it works in more cases. [PATCH] document unused pte bits on i386 From: Rusty Russell From: Ed L Cashin This small patch documents that bits 9, 10, and 11 are unused by the Linux kernel. The IA-32 Intel Architecture Software Developer's Manual says that these bits are available for programmer use. [PATCH] Consistently use quotes for SGML attributes From: Rusty Russell From: Hans Ulrich Niedermann doc patch: Consistently use quotes for SGML attributes This makes it possible to process the SGML files without SHORTTAG YES. [PATCH] SGML: close tag with ">" From: Rusty Russell From: Hans Ulrich Niedermann doc patch: close tag with ">" [PATCH] fix sch_ingress help From: Rusty Russell From: John Levon [PATCH] i386 irq.c ifdef cleanup From: Rusty Russell From: Josef 'Jeff' Sipek I just noticed the nested ifdefs, and made it little more readable. [PATCH] Fix firmware loader docs From: Rusty Russell From: Pavel Machek sysfs should be mounted on /sys these days. [PATCH] Trivial Patch Monkey should be in MAINTAINERS From: Rusty Russell From: Petri Koistinen [PATCH] Fix genksyms parsing From: Rusty Russell From: Andreas Schwab I'm getting a warning when building for ia64 with MODVERSIONS enabled. This is a bug in genksyms, it can't cope with some arguments of __typeof__. The following patch will fix that. Actually the argument of __typeof__ is an abstract declarator, but the genksyms parser has no production for that; decl_specifier_seq also matches some invalid constructs, but I don't think this is a problem in practice, since the compiler will reject them. [PATCH] CONFIG_X86_GENERIC description fixup From: Rusty Russell From: Stewart Smith A better explanation of the X86_GENERIC config option follows. [PATCH] updating email info in CREDITS From: Rusty Russell From: Thomas Molina [PATCH] Kill duplicate #include From: Rusty Russell include/linux/device.h includes include/linux/ioport.h twice. [PATCH] Use valid node number when unmapping x86 CPUs From: Rusty Russell From: colpatch@us.ibm.com The cpu_2_node[] array for i386 is initialized to all 0's, meaning that until modified at CPU bring-up, all CPUs are mapped to node 0. When CPUs are brought online, they are mapped to the appropriate node by various mechanisms, depending on the underlying hardware. When we unmap CPUs (hotplug time), we should return the mapping for the CPU that is going away to its original state, ie: 0. When this code was initially submitted, the misguided poster (me) made the mistake of putting a -1 in the cpu_2_node[] array for the CPU going away. This patch fixes this mistake, and allows code to get a valid node number for all valid CPU numbers. This is important, because most (if not all) callers do not error check the value returned by the cpu_to_node() macro, and they should not have to. The API specifies that a valid node number be returned for any valid CPU number. [PATCH] Add CC Trivial Patch Monkey to SubmittingPatches From: Rusty Russell From: maximilian attems Add the Monkey to SubmittingPatches. [PATCH] ne2k-pci.c compile fix on ppc[64] From: Rusty Russell These macros are redefined here. Previously definitions are in asm-ppc(64)/io.h [PATCH] Update Documentation/Changes From: Trivial Patch Monkey From: Thomas Molina [PATCH] i830 DRM missing put_user From: Arjan van de Ven The patch below adds a few missing put_user()'s to the i810/i830 drm modules. Users reported oopses with 4g/4g split in action, and sparse annotations indeed found the offender in the function in question. I've kept the sparse __user annotations since those are generally useful anyway. I can't test it myself but a few people reported that the oopses went away so far. [PATCH] export complete_all() From: Mike Waychison Export complete_all for module use. [PATCH] /dev/urandom scalability improvement From: David Mosberger Somebody recently pointed out a performance-anomaly to me where an unusual amount of time was being spent reading from /dev/urandom. The problem isn't really surprising as it happened only on >= 4-way machines and the random driver isn't terribly scalable the way it is written today. If scalability _really_ mattered, I suppose per-CPU data structures would be the way to go. However, I found that at least for 4-way machines, performance can be improved considerably with the attached patch. In particular, I saw the following performance on a 4-way ia64 machine: Test: 3 tasks running "dd if=/dev/urandom of=/dev/null bs=1024": throughput: [PATCH] cpu5wdt.c warning fix From: Heiko Ronsdorf - Remvoe a volatile which causes a warning via module_param() - Remove an unused variable. [PATCH] speed up fget() and fget_light() Eric Dumazet We can avoid evaluating `current' in a few places. [PATCH] Move __this_module to modpost From: Brian Gerst Move the __this_module structure to the modpost code where it really belongs. [PATCH] fix modversions now __this_module is created only in .ko From: Rusty Russell Brian Gerst's patch which moved __this_module out from module.h into the module post-processing had a side effect. genksyms didn't see the undefined symbols for modules without a module_init (or module_exit), and hence didn't generate a version for them, causing the kernel to be tainted. The simple solution is to always include the versions for these functions. Also includes two cleanups: 1) alloc_symbol is easier to use if it populates ->next for us. 2) add_exported_symbol should set owner to module, not head of module list (we don't use this field in entries in that list, fortunately). [PATCH] Support for floppies whose sectors are numbered from zero instead of one From: Marcelo Tosatti From: Alain Knaff This patch adds support for floppy disks whose sectors are numbered starting at 0 rather than 1 as usual disks would be. This format is used for some CP/M disks, and also for certain music samplers (such as Ensoniq Ensoniq EPS 16plus). In order to use it, you need an fdutils with the current patch from http://fdutils.linux.lu as well, and then do setfdrpm /dev/fd0 dd zerobased sect=10 or setfdprm /dev/fd0 hd zerobased sect. In addtion, the patch also fixes my email addresses. I no longer use pobox.com. [PATCH] Remove bitmap_shift_*() bitmap length limits From: William Lee Irwin III Chang bitmap_shift_left()/bitmap_shift_right() to have O(1) stackspace requirements. Given zeroed tail preconditions these implementations satisfy zeroed tail postconditions, which makes them compatible with whatever changes from Paul Jackson one may want to merge in the future. No particular effort was required to ensure this. A small (but hopefully forgiveable) cleanup is a spelling correction: s/bitmap_shift_write/bitmap_shift_right/ in one of the kerneldoc comments. The primary effect of the patch is to remove the MAX_BITMAP_BITS limitation, so restoring the NR_CPUS to be limited only by stackspace and slab allocator maximums. They also look vaguely more efficient than the current code, though as this was not done for performance reasons, no performance testing was done. [PATCH] Fix huge sparse tmpfs files From: Hugh Dickins Kevin P. Fleming pointed out that the 2.6 tmpfs does not allow writing huge sparse files. This is an unintended side-effect of the strict memory commit changes: which should make no difference. The solution is to treat the tmpfs files (of variable size) and the shmem objects (of fixed size) differently: sounds nasty but works out well. The shmem objects follow the VM preallocation convention as before, but the tmpfs files revert to allocation on demand as a filesystem would. If there's not enough memory to write to a tmpfs hole, it is reported as -ENOSPC rather than -ENOMEM, so the mmap writer gets SIGBUS rather than everyone else getting OOM-killed. [PATCH] Strip quotes from kernel parameters From: Rusty Russell Agustin Martin pointed out that this doesn't work: options ide-mod options="ide=nodma hdc=cdrom" The quotes are understood by kernel/params.c (ie. it skips over spaces inside them), but are not stripped before handing to the underlying function. They should be. [PATCH] summit: per-subarch NR_IRQ_VECTORS From: James Cleverdon Break out the definition of NR_IRQ_VECTORS, etc from irq_vectors.h into irq_vectors_limits.h, so we can change it per subarch without having code duplication for the rest of the file. Stick the same values back for mach-default, and override them for mach-summit/generic which needs bigger limits. [PATCH] summmit: increase MAX_MP_BUSSES From: James Cleverdon Bump up MAX_MP_BUSSES for summit/generic subarch to cope with big IBM x440 systems. [PATCH] ia64 MSI support From: "Nguyen, Tom L" Adds MSI support for ia64. - Modified existing code in drivers/pci/msi.c and drivers/pci/msi.h to include MSI support on IA64 platform. - Based on the comments received from Zwane Mwaikambo and David Mosberger, this patch consolidates the vector allocators as assign_irq_vector(AUTO_ASSIGN) has the same semantics as ia64_alloc_vector() by converting the existing uses of ia64_alloc_vector() to assign_irq_vector(AUTO_ASSIGN). - Based on the comments received from Zwane Mwaikambo, this patch consolidates the semantics of vector allocator assign_irq_vector() in drivers/pci/msi.c into the relevant architecture's vector allocator assign_irq_vector() in arch/i386/kernel/io_apic.c. - Regarding vector allocation, this patch modifies the existing function assign_irq_vector() to maximize the number of allocated vectors to 188 before going -ENOSPC. - Based on your comments, this patch creates , and , includes from within drivers/pci/msi.h and then places all the code which is currently under ifdef in msi.h into the relevant architecture's file. - Based on your comments, this patch places pci_vector_resources() in existing drivers/pci/msi.c in the relevant architecture implementations such as into arch/.../pci/irq.c. [PATCH] stv0299.c unused variable From: "Luiz Fernando N. Capitulino" drivers/media/dvb/frontends/stv0299.c:356: warning: unused variable `i' [PATCH] selinux: fix struct type From: Stephen Smalley This patch fixes the type of the ssec pointer in the sk_free_security function. This has no current impact as the magic element is the top of each structure. Thanks to Chad Hanson of TCS for discovering the bug and submitting the patch. [PATCH] missing NULL pointer check in pte_alloc_one. From: Martin Schwidefsky Just found an small bug in pgalloc for s390*. Comparing notes with other architectures I found that pte_alloc_one is sick for alpha and sparc64 as well. [PATCH] kill spurious MAKDEV scripts From: Christoph Hellwig Kill magic ide/sound makedev scripts in scripts/. The userland MAKEDEV is the proper place and already has support for them. [PATCH] oss/wavfront.c warning fix. From: "Luiz Fernando N. Capitulino" sound/oss/wavfront.c: At top level: sound/oss/wavfront.c:2498: warning: `errno' defined but not used [PATCH] remove bogus MOD_{INC,DEC}_USE_COUNT from hysdn From: Christoph Hellwig the maintainer doesn't response unfortauntely, but removing these from net_devices unconditionally is the 2.6 way to go, there's no more module refcounting on net devices. [PATCH] improve CONFIG_EMBEDDED help text From: Matt Mackall Make CONFIG_EMBEDDED description more accurate [PATCH] eliminate nswap and cnswap From: Matt Mackall The nswap and cnswap variables counters have never been incremented as Linux doesn't do task swapping. [PATCH] shrink inode when quota is disabled From: Matt Mackall drop quota array in inode struct if no quota support [PATCH] enable suspend-on-halt for NS Geode From: Matt Mackall From: Zwane Mwaikambo This enables deep powersaving mode on Geode boxes. [PATCH] O_DIRECT data exposure fixes From: Badari Pulavarty, Suparna Bhattacharya, Andrew Morton Forward port of Stephen Tweedie's DIO fixes from 2.4, to fix various DIO vs buffered IO exposures involving races causing: (a) stale data from uninstantiated blocks to be read, e.g. - O_DIRECT reads against buffered writes to a sparse region - O_DIRECT writes to a sparse region against buffered reads (b) potential data corruption with - O_DIRECT IOs against truncate due to writes to truncated blocks (which may have been reallocated to another file). Summary of fixes: 1) All the changes affect only regular files. RAW/O_DIRECT on block are unaffected. 2) The DIO code will not fill in sparse regions on a write. Instead -ENOTBLK is returned and the generic file write code would fallthrough to buffered IO in this case followed by writing through the pages to disk using filemap_fdatawrite/wait. 3) i_sem is held during both DIO reads and writes. For reads, and writes to already allocated blocks, it is released right after IO is issued, while for writes to newly allocated blocks (e.g file extending writes and hole overwrites) it is held all the way through until IO completes (and data is committed to disk). 4) filemap_fdatawrite/wait are called under i_sem to synchronize buffered pages to disk blocks before issuing DIO. 5) A new rwsem (i_alloc_sem) is held in shared mode all the while a DIO (read or write) is in progress, and in exclusive mode by truncate to guard against deallocation of data blocks during DIO. 6) All this new locking has been pushed down into blockdev_direct_IO to avoid interfering with NFS direct IO. The locks are taken in the order i_sem followed by i_alloc_sem. While i_sem may be released after IO submission in some cases, i_alloc_sem is held through until dio_complete (in the case of AIO-DIO this happens through the IO completion callback). 7) i_sem and i_alloc_sem are not held for the _nolock versions of write routines, as used by blockdev and XFS. Filesystems can specify the needs_special_locking parameter to __blockdev_direct_IO from their direct IO address space op accordingly. Note from Badari: Here is the locking (when needs_special_locking is true): (1) generic_file_*_write() holds i_sem (as before) and calls ->direct_IO(). blockdev_direct_IO gets i_alloc_sem and call direct_io_worker(). (2) generic_file_*_read() does not hold any locks. blockdev_direct_IO() gets i_sem and then i_alloc_sem and calls direct_io_worker() to do the work (3) direct_io_worker() does the work and drops i_sem after submitting IOs if appropriate and drops i_alloc_sem after completing IOs. [PATCH] Fix race between ll_rw_block() and block_write_full_page() Fix a race which was identified by Daniel McNeil If a buffer_head is under I/O due to JBD's ordered data writeout (which uses ll_rw_block()) then either filemap_fdatawrite() or filemap_fdatawait() need to wait on the buffer's existing I/O. Presently neither will do so, because __block_write_full_page() will not actually submit any I/O and will hence not mark the page as being under writeback. The best-performing fix would be to somehow mark the page as being under writeback and defer waiting for the ll_rw_block-initiated I/O until filemap_fdatawait()-time. But this is hard, because in __block_write_full_page() we do not have control of the buffer_head's end_io handler. Possibly we could make JBD call into end_buffer_async_write(), but that gets nasty. This patch makes __block_write_full_page() wait for any buffer_head I/O to complete before inspecting the buffer_head state. It only does this in the case where __block_write_full_page() was called for a "data-integrity" write: (wbc->sync_mode != WB_SYNC_NONE). Probably it doesn't matter, because kjournald is currently submitting (or has already submitted) all dirty buffers anyway. [PATCH] blockdev direct-io speedups From: Badari Pulavarty 1) blkdev_direct_IO() calls blockdev_direct_IO() instead of blockdev_direct_IO_no_locking(). 2) writev entry point is generic_file_writev() which grabs i_sem. It should use generic_file_write_nolock() instead. [PATCH] direct-io AIO fixes From: Suparna Bhattacharya Fixes the following remaining issues with the DIO code: 1. During DIO file extends, intermediate writes could extend i_size exposing unwritten blocks to intermediate reads (Soln: Don't drop i_sem for file extends) 2. AIO-DIO file extends may update i_size before I/O completes, exposing unwritten blocks to intermediate reads. (Soln: Force AIO-DIO file extends to be synchronous) 3. AIO-DIO writes to holes call aio_complete() before falling back to buffered I/O ! (Soln: Avoid calling aio_complete() if -ENOTBLK) 4. AIO-DIO writes to an allocated region followed by a hole, falls back to buffered i/o without waiting for already submitted i/o to complete; might return to user-space, which could overwrite the buffer contents while they are still being written out by the kernel (Soln: Always wait for submitted i/o to complete before falling back to buffered i/o) [PATCH] AIO+DIO bio_count race fix From: Suparna Bhattacharya , Daniel McNeil This patch ensures that when the DIO code falls back to buffered i/o after having submitted part of the i/o, then buffered i/o is issued only for the remaining part of the request (i.e. the part not already covered by DIO), rather than redo the entire i/o. Now, instead of returning written == -ENOTBLK, generic_file_direct_IO returns the number of bytes already handled by DIO, so that the caller knows how much of the I/O is left to be handled via fallback to buffered write. We need to careful not to access dio fields if its possible that the dio could already have been freed asynchronously during i/o completion. A tricky part of this involves plugging the window between the decrement of bio_count and accessing dio->waiter during i/o completion where the dio could get freed by the submission path. This potential "bio_count race" was tackled (by Daniel) by changing bio_list_lock into bio_lock and using that for all the bio fields. Now bio_count and bios_in_flight have been converted from atomics into int and are both protected by the bio_lock. The race in finished_one_bio() could thus be fixed by leaving the bio_count at 1 until after the dio_complete() and then doing the bio_count decrement and wakeup holding the bio_lock. It appears that shifting to the spin_lock instead of atomic_inc/decs is ok performance wise as well. Update: An AIO O_DIRECT request was extending the file so it was done synchronously. However, the request got an EFAULT and direct_io_worker() was calling aio_complete() on the iocb and returning the EFAULT. When io_submit_one() got the EFAULT return, it assume it had to call aio_complete() since the i/o never got queued. The fix is for direct_io_worker() to only call aio_complete() when the upper layer is going to return -EIOCBQUEUED and not when getting errors that are being return to the submit path. [PATCH] rw_swap_page_sync(): place the pages in swapcache This function is setting page->mapping = swapper_space, but isn't actually adding the page to swapcache. This triggers soon-to-be-added BUGs in the radix tree code. So temporarily add these pages to swapcache for real. Also, make rw_swap_page_sync() go away if it has no callers. [PATCH] radix-tree tags for selective lookup Add radix-tree tagging so we can look up dirty or writeback pages in O(log64(n)) time. Each radix-tree node gains two bits for each slot: one for page dirtiness and one for page writebackness. If a tag bit is set on a leaf node, it indicates that item at the corresponding slot is tagged (say, a dirty page). If a tag bit is set in a non-leaf node it indicates that the same tag bit is set in the subtree which lies under the corresponding slot. ie: "there is a dirty page under here somewhere, but you need to search down further to find it". A gang lookup function is provided which can walk the radix tree in logarithmic time looking for items which are tagged, starting from a specified offset. We use this for in-order searches for dirty or writeback pages. There is a userspace test harness for this code at http://www.zip.com.au/~akpm/linux/patches/stuff/rtth.tar.gz [PATCH] make the pagecache lock irq-safe. Intro to these patches: - Major surgery against the pagecache, radix-tree and writeback code. This work is to address the O_DIRECT-vs-buffered data exposure horrors which we've been struggling with for months. As a side-effect, 32 bytes are saved from struct inode and eight bytes are removed from struct page. At a cost of approximately 2.5 bits per page in the radix tree nodes on 4k pagesize, assuming the pagecache is densely populated. Not all pages are pagecache; other pages gain the full 8 byte saving. This change will break any arch code which is using page->list and will also break any arch code which is using page->lru of memory which was obtained from slab. The basic problem which we (mainly Daniel McNeil) have been struggling with is in getting a really reliable fsync() across the page lists while other processes are performing writeback against the same file. It's like juggling four bars of wet soap with your eyes shut while someone is whacking you with a baseball bat. Daniel pretty much has the problem plugged but I suspect that's just because we don't have testcases to trigger the remaining problems. The complexity and additional locking which those patches add is worrisome. So the approach taken here is to remove the page lists altogether and replace the list-based writeback and wait operations with in-order radix-tree walks. The radix-tree code has been enhanced to support "tagging" of pages, for later searches for pages which have a particular tag set. This means that we can ask the radix tree code "find me the next 16 dirty pages starting at pagecache index N" and it will do that in O(log64(N)) time. This affects I/O scheduling potentially quite significantly. It is no longer the case that the kernel will submit pages for I/O in the order in which the application dirtied them. We instead submit them in file-offset order all the time. This is likely to be advantageous when applications are seeking all over a large file randomly writing small amounts of data. I haven't performed much benchmarking, but tiobench random write throughput seems to be increased by 30%. Other tests appear to be unaltered. dbench may have got 10-20% quicker, but it's variable. There is one large file which everyone seeks all over randomly writing small amounts of data: the blockdev mapping which caches filesystem metadata. The kernel's IO submission patterns for this are now ideal. Because writeback and wait-for-writeback use a tree walk instead of a list walk they are no longer livelockable. This probably means that we no longer need to hold i_sem across O_SYNC writes and perhaps fsync() and fdatasync(). This may be beneficial for databases: multiple processes writing and syncing different parts of the same file at the same time can now all submit and wait upon writes to just their own little bit of the file, so we can get a lot more data into the queues. It is trivial to implement a part-file-fdatasync() as well, so applications can say "sync the file from byte N to byte M", and multiple applications can do this concurrently. This is easy for ext2 filesystems, but probably needs lots of work for data-journalled filesystems and XFS and it probably doesn't offer much benefit over an i_semless O_SYNC write. These patches can end up making ext3 (even) slower: for i in 1 2 3 4 do dd if=/dev/zero of=$i bs=1M count=2000 & done runs awfully slow on SMP. This is, yet again, because all the file blocks are jumbled up and the per-file linear writeout causes tons of seeking. The above test runs sweetly on UP because the on UP we don't allocate blocks to different files in parallel. Mingming and Badari are working on getting block reservation working for ext3 (preallocation on steroids). That should fix ext3 up. This patch: - Later, we'll need to access the radix trees from inside disk I/O completion handlers. So make mapping->page_lock irq-safe. And rename it to tree_lock to reliably break any missed conversions. [PATCH] tag dirty pages as such in the radix tree Arrange for all dirty pagecache pages to be tagged as dirty within their radix tree. [PATCH] tag writeback pages as such in their radix tree Arrange for under-writeback pages to be marked thus in their pagecache radix tree. [PATCH] stop using the address_space dirty_pages list Move everything over to walking the radix tree via the PAGECACHE_TAG_DIRTY tag. Remove address_space.dirty_pages. [PATCH] fix the kupdate function Juggle dirty pages and dirty inodes and dirty superblocks and various different writeback modes and livelock avoidance and fairness to recover from the loss of mapping->io_pages. [PATCH] remove address_space.io_pages Now remove address_space.io_pages. [PATCH] Stop using address_space.locked_pages Instead, use a radix-tree walk of the pages which are tagged as being under writeback. The new function wait_on_page_writeback_range() was generalised out of filemap_fdatawait(). We can later use this to provide concurrent fsync of just a section of a file. [PATCH] stop using address_space.clean_pages Remove remaining references to address_space.clean_pages. [PATCH] revert the slabification of i386 pgd's and pmd's This code is playing with page->lru from pages which came from slab. But to remove page->list we need to convert slab over to using page->lru. So we cannot allow the i386 pagetable code to go scribbling on the ->lru field of active slab pages. This optimisation was pretty thin, and it is more important to shrink the pageframe (on all architectures). [PATCH] slab: stop using page.list slab.c is using page->list. Switch it over to using page->lru so we can remove page.list. [PATCH] stop using page.list in the page allocator Switch the page allocator over to using page.lru for the buddy lists. [PATCH] stop using page->list in the hugetlbpage implementations Switch them over to page.lru [PATCH] stop using page.list in pageattr.c Switch it to ->lru [PATCH] stop using page.list in readahead The address_space.readapges() function currently takes a list of pages, strung together via page->list. Switch it to using page->lru. This changes the API into filesystems. [PATCH] stop using page->lru in compound pages The compound page logic is using page->lru, and these get will scribbled on in various places so switch the Compound page logic over to using ->mapping and ->private. [PATCH] arm: stop using page->list Switch the ARM `small_page' code over to page->lru. [PATCH] switch the m68k pointer-table code over to page->lru Switch the m68k pointer-table code over to page->lru. [PATCH] remove page.list Remove the now-unneeded page.list field. [PATCH] fdatasync integrity fix fdatasync can fail to wait on some pages due to a race. If some task (eg pdflush) is flushing the same mapping it can remove a page's dirty tag but not then mark that page as being under writeback, because pdflush hit a locked buffer in __block_write_full_page(). This will happen because kjournald is writing the buffer. In this situation __block_write_full_page() will redirty the page so that fsync notices it, but there is a window where the page eludes the radix tree dirty page walk. Consequently a concurrent fsync will fail to notice the page when walking the radix tree's dirty pages. The approach taken by this patch is to leave the page marked as dirty in the radix tree while ->writepage is working out what to do with it. This ensures that a concurrent write-for-sync will successfully locate the page and will then block in lock_page() until the non-write-for-sync code has finished altering the page state. [PATCH] don't allow background writes to hide dirty buffers If pdflush hits a locked-and-clean buffer in __block_write_full_page() it will just pass over the buffer. Typically the buffer is an ext3 data=ordered buffer which is being written by kjournald, but a similar thing can happen with blockdev buffers and ll_rw_block(). This is bad because the buffer is still under I/O and a subsequent fsync's fdatawait() needs to know about it. It is not practical to tag the page for writeback - only the submitter of the I/O can do that, because the submitter has control of the end_io handler. So instead, redirty the page so a subsequent fsync's fdatawrite() will wait on the underway I/O. There is a risk that pdflush::background_writeout() will lock up, repeatedly trying and failing to write the same page. This is prevented by ensuring that background_writeout() always throttles when it made no progress. [PATCH] writeback efficiency and QoS improvements The radix-tree walk for writeback has a couple of problems: a) It always scans a file from its first dirty page, so if someone is repeatedly dirtying the front part of a file, pages near the end may be starved of writeout. (Well, not completely: the `kupdate' function will write an entire file once the file's dirty timestamp has expired). b) When the disk queues are huge (10000 requests), there can be a very large number of locked pages. Scanning past these in writeback consumes quite some CPU time. So in each address_space we record the index at which the last batch of writeout terminated and start the next batch of writeback from that point. [PATCH] Add mpage_writepages() scheduling point From: Jens Axboe Takashi did some nice latency testing of the current kernel (with -mm writeback changes), and the biggest offender in general core is mpage_writepages(). [PATCH] mpage_writepages() cleanup Rework the code layout a bit. No logic change. [PATCH] use compound pages for hugetlb pages only The compound page logic is a little fragile - it relies on additional metadata in the pageframes which some other kernel code likes to stomp on (xfs was doing this). Also, because we're treating all higher-order pages as compound pages it is no longer possible to free individual lower-order pages from the middle of higher-order pages. At least one ARM driver insists on doing this. We only really need the compound page logic for higher-order pages which can be mapped into user pagetables and placed under direct-io. This covers hugetlb pages and, conceivably, soundcard DMA buffers which were allcoated with a higher-order allocation but which weren't marked PageReserved. The patch arranges for the hugetlb implications to allocate their pages with compound page metadata, and all other higher-order allocations go back to the old way. (Andrea supplied the GFP_LEVEL_MASK fix) [PATCH] fork vma ordering during fork From: Hugh Dickins First of six patches against 2.6.5-rc3, cleaning up mremap's move_vma, and fixing truncation orphan issues raised by Rajesh Venkatasubramanian. Originally done as part of the anonymous objrmap work on mremap move, but useful fixes now extracted for mainline. The mremap changes need some exposure in the -mm tree first, but the first (fork one-liner) is safe enough to go straight into 2.6.5. From: Rajesh Venkatasubramanian. Despite the comment that child vma should be inserted just after parent vma, 2.5.6 did exactly the reverse: thus a racing vmtruncate may free the child's ptes, then advance to the parent, and meanwhile copy_page_range has propagated more ptes from the parent to the child, leaving file pages still mapped after truncation. [PATCH] mremap: copy_one_pte cleanup From: Hugh Dickins Clean up mremap move's copy_one_pte: - get_one_pte_map_nested already weeded out the pte_none case, now don't even call copy_one_pte if it has nothing to do. - check pfn_valid before passing page to page_remove_rmap. [PATCH] mremap: move_vma fixes and cleanup From: Hugh Dickins Partial rewrite of mremap's move_vma. Rajesh Venkatasubramanian has pointed out that vmtruncate could miss ptes, leaving orphaned pages, because move_vma only made the new vma visible after filling it. We see no good reason for that, and time to make move_vma more robust. Removed all its vma merging decisions, leave them to mmap.c's vma_merge, with copy_vma added. Removed duplicated is_mergeable_vma test from vma_merge, and duplicated validate_mm from insert_vm_struct. move_vma move from old to new then unmap old; but on error move back from new to old and unmap new. Don't unwind within move_page_tables, let move_vma call it explicitly to unwind, with the right source vma. Get the VM_ACCOUNTing right even when the final do_munmap fails. [PATCH] mremap: vma_relink_file race fix From: Hugh Dickins Subtle point from Rajesh Venkatasubramanian: when mremap's move_vma fails and so rewinds, before moving the file-based ptes back, we must move new_vma before old vma in the i_mmap or i_mmap_shared list, so that when racing against vmtruncate we cannot propagate pages to be truncated back from new_vma into the just cleaned old_vma. [PATCH] mremap: check map_count From: Hugh Dickins mremap's move_vma should think ahead to lessen the chance of failure during its rewind on failure: running out of memory always possible, but it's silly for it to embark when it's near the map_count limit. [PATCH] Fix rmap comment From: Hugh Dickins rmap's try_to_unmap_one comments on find_vma failure, that a page may temporarily be absent from a vma during mremap: no longer, though it is still possible for this find_vma to fail, while unmap_vmas drops page_table_lock (but that is no problem for file truncation). [PATCH] kswapd: remove pages_scanned local This is always equal to constant zero. [PATCH] laptop mode From: Bart Samwel Adds /proc/sys/vm/laptop-mode: a special knob which says "this is a laptop". In this mode the kernel will attempt to avoid spinning disks up. Algorithm: the idea is to hold dirty data in memory for a long time, but to flush everything which has been accumulated if the disk happens to spin up for other reasons. - Whenever a disk request completes (read or write), schedule a timer a few seconds hence. If the timer was already pending, reset it to a few seconds hence. - When the timer expires, write back the whole world. We use sync_filesystems() for this because it will force ext3 journal commits as well. - In balance_dirty_pages(), kick off background writeback when we hit the high threshold (dirty_ratio), not when we hit the low threshold. This has the effect of causing "lumpy" writeback which is something I spent a year fixing, but in laptop mode, it is desirable. - In try_to_free_pages(), only kick pdflush if the VM is getting into distress: we want to keep scanning for clean pages, deferring writeback. - In page reclaim, avoid writing back the odd random dirty page off the LRU: only start I/O if the scanning is working harder. The effect is to perform a sync() a few seconds after all I/O has ceased. The value which was written into /proc/sys/vm/laptop-mode determines, in seconds, the delay between the final I/O and the flush. Additionally, the patch adds tools which help answer the question "why the heck does my disk spin up all the time?". The user may set /proc/sys/vm/block_dump to a non-zero value and the kernel will print out information which will identify the process which is performing disk reads or which is dirtying pagecache. The user should probably disable syslogd before setting block-dump. [PATCH] Add commit=0 to ext3, meaning "set commit to default". From: Bart Samwel Add support for the value "0" to ext3's "commit" option. When this value is given, ext3 substitutes it by the default commit interval. Introduce a constant JBD_DEFAULT_MAX_COMMIT_AGE for this. [PATCH] Honour the readahead tunable in filemap_nopage() Remove the hardwired pagefault readaround distance in filemap_nopage() and use the per-file readahead setting. The main reason for this is in fact laptop-mode. If you want to prevent the disk from spinning up then you want all of your application's pages to be pulled into memory in one hit. Otherwise the disk will spin up each time you use a new part of whatever application(s) you are running. [PATCH] Fix logic in filemap_nopage() The filempa_nopage() logic will go into a tight loop if do_page_cache_readahead() doesn't actually start I/O against the target page. This can happen if the disk is read-congested, or if the filesystem doesn't want to read that part of the file for some reason. We will accidentally break out of the loop because (ra->mmap_miss > ra->mmap_hit + MMAP_LOTSAMISS) will eventually become true. Fix that up. [PATCH] acpi printk fix drivers/acpi/events/evmisc.c: In function `acpi_ev_queue_notify_request': drivers/acpi/events/evmisc.c:143: warning: too many arguments for format [PATCH] ia32: 4Kb stacks (and irqstacks) patch From: Arjan van de Ven Below is a patch to enable 4Kb stacks for x86. The goal of this is to 1) Reduce footprint per thread so that systems can run many more threads (for the java people) 2) Reduce the pressure on the VM for order > 0 allocations. We see real life workloads (granted with 2.4 but the fundamental fragmentation issue isn't solved in 2.6 and isn't solvable in theory) where this can be a problem. In addition order > 0 allocations can make the VM "stutter" and give more latency due to having to do much much more work trying to defragment The first 2 bits of the patch actually affect compiler options in a generic way: I propose to disable the -funit-at-a-time feature from gcc. With this enabled (and it's default with -O2), gcc will very agressively inline functions, which is nice and all for userspace, but for the kernel this makes us suffer a gcc deficiency more: gcc is extremely bad at sharing stackslots, for example a situation like this: if (some_condition) function_A(); else function_B(); with -funit-at-a-time, both function_A() and _B() might get inlined, however the stack usage of both functions of the parent function grows the stack usage of both functions COMBINED instead of the maximum of the two. Even with the normal 8Kb stacks this is a danger since we see some functions grow 3Kb to 4Kb of stack use this way. With 4Kb stacks, 4Kb of stack usage growth obviously is deadly ;-( but even with 8Kb stacks it's pure lottery. Disabling -funit-at-a-time also exposes another thing in the -mm tree; the attribute always_inline is considered harmful by gcc folks in that when gcc makes a decision to NOT inline a function marked this way, it throws an error. Disabling -funit-at-a-time disables some of the agressive inlining (eg of large functions that come later in the .c file) so this would make your tree not compile. The 4k stackness of the kernel is included in modversions, so people don't load 4k-stack modules into 8k-stack kernels. At present 4k stacks are selectable in config. When the feature has settled in we should remove the 8k option. This will break the nvidia modules. But Fedora uses 4k stacks so a new nvidia driver is expected soon. [PATCH] procfs LoadAVG/load_avg scaling fix From: Ingo Molnar Dave reported that /proc/*/status sometimes shows 101% as LoadAVG, which makes no sense. the reason of the bug is slightly incorrect scaling of the load_avg value. The patch below fixes this. [PATCH] ppc64: NUMA fix for 16MB LMBs From: Olof Johansson As discussed on the ppc64 list yesterday and today: On some ppc64 systems, Open Firmware will give memory device nodes that are only 16MB in size, instead of the 256MB that our NUMA code currently expects (see MEMORY_INCREMENT in mmzone.h). Just changing the defines from 256MB to 16MB makes the table blow up from 32KB to 512KB, so this patch also makes it dynamically allocated based on actual memory size. Since all this is done before (well, during) bootmem init so we need to use lmb_alloc(). Finally, there's no need to use a full int for node ID. Current max is 16 nodes, so a signed char still leaves plenty of room to grow. [PATCH] build fails on sparc64 in hugetlbpage.c From: Romain Francoise arch/sparc64/mm/hugetlbpage.c does not include linux/module.h so EXPORT_SYMBOL prints out warnings, and since sparc64 Makefiles have -Werror, the build fails. [PATCH] epoll comment fix From: Davide Libenzi When I split evenpoll_release() in an inline fast path plus an eventpoll_release_file() slow path, I forgot to change comments. [PATCH] add stop_machine barriers From: Andrea Arcangeli We need a barrier before checking for kthread_should_stop in do_stop. [PATCH] sunrpc: connection dropping tweaks From: Olaf Kirch Some NFS clients respond badly to a TCP connection being reset immediately after it has been accepted so: - Accept more connections before starting to drop them - Always drop the oldest connection - Random Early Drop doesn't really help here, and can hurt - ratelimit the friendly warnings. [PATCH] ACL version mismatch error code fix From: Andreas Gruenbacher Return EOPNOTSUPP rather than EINVAL when we discover an ACL version mismatch. [PATCH] v4l: cropcap ioctl fix From: Gerd Knorr The VIDIOC_CROPCAP ioctl had wrong R/W bits, this patch fixes it. [PATCH] v4l: v4l1-compat fix From: Gerd Knorr Minor tweak in the v4l1 compatibility layer: Make sure that capture actually is active before going to wait for a frame so we don't block forever. [PATCH] v4l: tuner fix From: Gerd Knorr This patch fixes a bug in the tuner descriptions and prepares for the removal of the type= insmod option by printing a warning when it is used. [PATCH] v4l: msp3400 update From: Gerd Knorr This patch allows to use switch to the second external input of the msp34xx chips. Also has some minor cleanups and more verbose debug info. [PATCH] v4l: add support for pv951 remote to ir-kbd-i2c From: Gerd Knorr Trivial patch, $subject says all, just a new keytable. [PATCH] v4l: saa7134 driver update From: Gerd Knorr This is a update for the saa7134 driver. Changes: * add cropping support. * fix Makefile to build the saa6752hs module. * fix locking bug in oss dsp driver. * infrared remote keytable update. * some card-specific fixes. [PATCH] v4l-saa7134-update fix drivers/built-in.o(.text+0x32912b): In function `dsp_buffer_init': drivers/media/video/saa7134/saa7134-oss.c:77: undefined reference to `videobuf_dma_init' [PATCH] v4l: bttv driver update From: Gerd Knorr This patch updates the bttv driver. Changes: (1) several card-specific tweaks. (2) make software vs. hardware i2c configurable per TV card. (3) reinitialize image parameters after chip reset. (4) make bttv quite by default on frame drops. (5) new insmod option: "debug_latency=1" to enable frame drop debug messages. bttv is quite sensitive to irq latencies, especially when capturing both video and vbi. There are several reports about problems due to this, I don't see that on my machines through. (5) dumps a stracktrace if the driver thinks the frame drop is is caused by high latencies as experiment, lets see whenever that helps ... [PATCH] v4l: documentation update From: Gerd Knorr This patch updates the documentation for the v4l drivers. [PATCH] cx88 update. From: Gerd Knorr This is a update for the cx88 driver. There are *lots* of changes: * vbi support was added. * plenty of fixes for audio support (there are still problems through). * new cards added. * serveral minor tweaks. [PATCH] drivers/base/platform.c typo fix From: Geert Uytterhoeven [PATCH] Subject: [PATCH] Fix overflow bug in READDIRPLUS... From: Trond Myklebust Fixes the Oops reported by Paul Blazejowski. Bug turned out to be in the page overflow checking for READDIRPLUS. [PATCH] Fix 32bit statfs on NFS From: Olaf Kirch The attached patch fixes a problem with the 32bit statfs call on NFS file systems. Some NFS servers return a value of -1 for the f_files and f_ffree. The current code would think this is a 64bit value that cannot be converted to 32bits. Consequently, the system call would always fail. The patch adds two special if() to detect a value of -1 for f_files and f_ffree. [PATCH] nfs-32bit-statfs-fix warning fix With CONFIG_LBD=n: fs/open.c: In function `vfs_statfs_native': fs/open.c:67: warning: comparison is always true due to limited range of data type fs/open.c:70: warning: comparison is always true due to limited range of data type [PATCH] wavefront_synth.c var not used. From: "Luiz Fernando N. Capitulino" sound/isa/wavefront/wavefront_synth.c:1923: warning: `errno' defined but not used [PATCH] tda1004x.c var not used. From: "Luiz Fernando N. Capitulino" drivers/media/dvb/frontends/tda1004x.c:191: warning: `errno' defined but not used [PATCH] pmdisk needs asmlinkage From: Pavel Machek This function will break with -mregparm, so mark it asmlinkage. [PATCH] cycx_drv.c warning fix. From: "Luiz Fernando N. Capitulino" drivers/net/wan/cycx_drv.c: In function `load_cyc2x': drivers/net/wan/cycx_drv.c:430: warning: unsigned int format, long unsigned int arg (arg 3) [PATCH] ibmlana needs CONFIG_MCA_LEGACY From: "Luiz Fernando N. Capitulino" IBM LAN Adapter/A driver depends on mca-legacy. [PATCH] Improve list.h documentation for _rcu() primitives From: "Paul E. McKenney" The attached patch improves the documentation of the _rcu list primitives. [PATCH] list.h cleanup - s/__inline__/inline/ - Remove lots of extraneous andi-was-here trailing whitespace [PATCH] Non-Exec stack support From: Kurt Garloff A patch to parse the elf binaries for a PT_GNU_STACK section to set the stack non-executable if possible. Most parts have been shamelessly stolen from Ingo Molnar's more ambitious stackshield http://people.redhat.com/mingo/exec-shield/exec-shield-2.6.4-C9 The toolchain has meanwhile support for marking the binaries with a PT_GNU_STACK section wwithout x bit as needed. If no such section is found, we leave the stack to whatever the arch defaults to. If there is one, we explicitly disabled the VM_EXEC bit if no x bit is found, otherwise explicitly enable. [PATCH] Fix ext3 transaction batching ext3 transaction batching has been ineffective since the scheduler changes forced us to replace the yield() with a schedule(). Using schedule_timeout(1) fixes it up again. Benchmarking is positive with wither a 1 or 10 millisecond delay in there, so there appears to be no need to play around with HZ. [PATCH] reiserfs: support for nested transactions From: Chris Mason reiserfs support for nested transactions. This originally came from Peter Braam for 2.4.x and was ported forward by Jeff Mahoney. [PATCH] reiserfs: cleanups From: Chris Mason reiserfs cleanup, get rid of old debugging code. [PATCH] reiserfs: logging rework From: Chris Mason reiserfs logging rework, making things much faster for small transactions. metadata buffers are dirtied when they are safe to write, so normal kernel mechanisms can contribute to log cleaning. [PATCH] reiserfs: data=ordered support From: Chris Mason reiserfs data=ordered support. [PATCH] reiserfs: locking fix From: Chris Mason Make sure to hold the BKL while ending a transaction in the error path or reiserfs_prepare_write. [PATCH] reiserfs: preallocation support From: Chris Mason Enable preallocation for reiserfs_file_write when the write size is smaller than the default preallocation size. [PATCH] reiserfs: tail repacking fix From: Chris Mason Repacking a tail might leave a journal handle attached to an unmapped buffer. If that buffer gets dirtied again (via mmap for example), the reiserfs data=ordered code might try to write the dirty unmapped buffer to disk. The fix is to make sure we remove the journal handle when we unmap buffers. [PATCH] reiserfs: fix race with writepage From: Chris Mason Fix reiserfs_writepage so it doesn't race with data=ordered writes. This still has a pending fix to redirty the page when it finds a locked buffer. Waiting for Andrew to finish sorting that out on ext3 first. [PATCH] reiserfs: sparse file handling fix From: Chris Mason reiserfs_file_write makes a hole one block too large if it is the first thing in the file. [PATCH] reiserfs: laptop-mode support From: Chris Mason Add reiserfs support for laptop mode. [PATCH] reiserfs: truncate leak fix From: Chris Mason reiserfs_unmap_buffer should clean and wait on all buffers. This fixes a leak under fsx workloads. [PATCH] reiserfs: scheduling latency improvements From: Chris Mason Some latency improvements for the reiserfs data=ordered code from Takashi. [PATCH] reiserfs: fix dirty-buffer warnings From: Chris Mason block_write_full_page() might see and lock clean metadata buffers, which leads to journal-1777 messages. Change the message to ignore bh locked. [PATCH] reiserfs_kfree warning fix fs/reiserfs/journal.c: In function `reiserfs_end_persistent_transaction': fs/reiserfs/journal.c:2616: warning: unused variable `s' Make the functions static inline so that typechecking is enabled if !CONFIG_REISERFS_CHECK. [PATCH] reiserfs writepage race with data=ordered From: Chris Mason reiserfs-writepage-ordered-race needs a minor update to include your latest __block_write_full_page fixes for the direct_read_under bug Daniel was hitting. [PATCH] selinux: add IPv6 support From: James Morris The patch below adds explicit IPv6 support to SELinux. Brief description of changes: o IPv6 networking is now subject to the same controls as IPv4 (in addition to the generic socket permissions which cover all protocols), namely: bind to local node address; bind to local port; send & receive TCP/UDP and raw IP packets based on local network interface and remote node address. o Packet parsing has been extended to IPv6 packets for logging and control, and simplified for IPv4. o Support for logging of IPv6 addresses has also been added. o The kernel policy database code has been modified to support IPv6, and reworked to provide generic security policy version handling so that older policy versions will still work, making upgrading simpler. Corresponding userspace patches are available at , although current userspace tools will continue to function normally (but without explicit IPv6 support). For more details at the security management level, see This code has been under testing and review for several weeks. [PATCH] From: James Morris This patch removes a harmless duplicate assignment from the IPv6 code. [PATCH] Light-weight Auditing Framework From: Rik Faith This patch provides a low-overhead system-call auditing framework for Linux that is usable by LSM components (e.g., SELinux). This is an update of the patch discussed in this thread: http://marc.theaimsgroup.com/?t=107815888100001&r=1&w=2 In brief, it provides for netlink-based logging of audit records that have been generated in other parts of the kernel (e.g., SELinux) as well as the ability to audit system calls, either independently (using simple filtering) or as a compliment to the audit record that another part of the kernel generated. The main goals were to provide system call auditing with 1) as low overhead as possible, and 2) without duplicating functionality that is already provided by SELinux (and/or other security infrastructures). This framework will work "stand-alone", but is not designed to provide, e.g., CAPP functionality without another security component in place. This updated patch includes changes from feedback I have received, including the ability to compile without CONFIG_NET (and better use of tabs, so use -w if you diff against the older patch). Please see http://people.redhat.com/faith/audit/ for an early example user-space client (auditd-0.4.tar.gz) and instructions on how to try it. My future intentions at the kernel level include improving filtering (e.g., syscall personality/exit codes) and syscall support for more architectures. First, though, I'm going to work on documentation, a (real) audit daemon, and patches for other user-space tools so that people can play with the framework and understand how it can be used with and without SELinux. Update: Light-weight Auditing Framework receive filter fixes From: Rik Faith Since audit_receive_filter() is only called with audit_netlink_sem held, it cannot race with either audit_del_rule() or audit_add_rule(), so the list_for_each_entry_rcu()s may be replaced by list_for_each_entry()s, and the rcu_read_{un,}lock()s removed. A fix for this is part of the attached patch. Other features of the attached patch are: 1) generalized the ability to test for inequality 2) added syscall exit status reporting and testing 3) added ability to report and test first 4 syscall arguments (this adds a large amount of flexibility for little cost; not implemented or tested on ppc64) 4) added ability to report and test personality User-space demo program enhanced for new fields and inequality testing: http://people.redhat.com/faith/audit/auditd-0.5.tar.gz [PATCH] selinux: make IPv6 code work with audit framework From: James Morris This patch makes the IPv6 code work with the audit framework, following the merge of both. [PATCH] selinux: Audit compute_sid errors From: Stephen Smalley This patch changes an error message printk'd by security_compute_sid to use the audit framework instead. These errors reflect situations where a security transition would normally occur due to policy, but the resulting security context is not valid. The patch also changes the code to always call the audit framework rather than only doing so when permissive as this was causing problems with testing policy, and does some code cleanup. [PATCH] selinux: remove ratelimit from avc From: Stephen Smalley This patch drops the ratelimit code from the SELinux avc, as this can now be handled by the audit framework. Enabling and setting the ratelimit is then left to userspace. [PATCH] CONFIG_SND_MIXART doesn't compile From: Bernhard Rosenkraenzer mixart.h uses tasklet_struct without including linux/interrupt.h -- fix attached. [PATCH] unmap_vmas latency improvement unmap_vmas() will cause scheduling latency when tearing down really big vmas on !CONFIG_PREEMPT. That's a bit unkind to the non-preempt case, so let's do a cond_resched() after zapping 1024 pages. [PATCH] more i386 head.S cleanups From: Brian Gerst - Move empty_zero_page and swapper_pg_dir to BSS. This requires that BSS is cleared earlier, but reclaims over 3k that was lost due to page alignment. - Move stack_start, ready, and int_msg, boot_gdt_descr, idt_descr, and cpu_gdt_descr to .data. They were interfering with disassembly while in .text. [PATCH] intermezzo leak fixes - Don't leak a pathname ref on error - Don't do putname() on a nameidata. [PATCH] es1688 Definition redundancy From: Fabian Frederick Here's a trivial patch to avoid definition redundancy in es1688. [PATCH] binfmt_elf.c fix for 32-bit apps with large bss From: Julie DeWandel A problem exists where a 32-bit application can have a huge bss, one that is so large that an overflow of the TASK_SIZE happens. But in this case, the overflow is not detected in load_elf_binary(). Instead, because arithmetic is being done using 32-bit containers, a truncation occurs and the program gets loaded when it shouldn't have been. Subsequent execution yields unpredictable results. The attached patch fixes this problem by checking for the overflow condition and sending a SIGKILL to the application if the overflow is detected. This problem can in theory exist when loading the elf interpreter as well, so a similar check was added there. [PATCH] stack reduction: ide-cd From: Arjan van de Ven ide-cd: a few 512 byte scratch buffers can be static; they are just for putting "padding" sectors in that aren't used. (acked by Jens) [PATCH] stack reductions: ide From: Arjan van de Ven ide.c: constant array of strings can be static [PATCH] stack reduction: ISDN From: Arjan van de Ven isdn: dynamically allocate big structures [PATCH] use EFLAGS #defines instead of inline constants From: "Randy.Dunlap" Use x86 EFLAGS defines in place of hardwired constants. [PATCH] H8/300 support update (1/3) - ptrace fix From: Yoshinori Sato - fix PTRACE_SIGLESTEP bug. - separate to CPU depend. [PATCH] H8/300 support update (2/3) - entry.S cleanup From: Yoshinori Sato - cleanup define [PATCH] H8/300 support update (3/3) - others From: Yoshinori Sato - use new serial driver (drivers/serial/sh-sci.[ch]) - typo fix - add message level [PATCH] H8/300 support update From: Yoshinori Sato - fix any error/warning - fix {request,freee}_irq interrupt control fix - add dump_stack - fix show_trace_task - fix typo [PATCH] sh-sci compile error fix patch From: Yoshinori Sato - add Kconfig depends H8300 - H8/300 support compile error fixed. [PATCH] fix posix-timers to have proper per-process scope From: Roland McGrath The posix-timers implementation associates timers with the creating thread and destroys timers when their creator thread dies. POSIX clearly specifies that these timers are per-process, and a timer should not be torn down when the thread that created it exits. I hope there won't be any controversy on what the correct semantics are here, since POSIX is clear and the Linux feature is called "posix-timers". The attached program built with NPTL -lrt -lpthread demonstrates the bug. The program is correct by POSIX, but fails on Linux. Note that a until just the other day, NPTL had a trivial bug that always disabled its use of kernel timer syscalls (check strace for lack of timer_create/SYS_259). So unless you have built your own NPTL libs very recently, you probably won't see the kernel calls actually used by this program. Also attached is my patch to fix this. It (you guessed it) moves the posix_timers field from task_struct to signal_struct. Access is now governed by the siglock instead of the task lock. exit_itimers is called from __exit_signal, i.e. only on the death of the last thread in the group, rather than from do_exit for every thread. Timers' it_process fields store the group leader's pointer, which won't die. For the case of SIGEV_THREAD_ID, I hold a ref on the task_struct for it_process to stay robust in case the target thread dies; the ref is released and the dangling pointer cleared when the timer fires and the target thread is dead. (This should only come up in a buggy user program, so noone cares exactly how the kernel handles that case. But I think what I did is robust and sensical.) /* Test for bogus per-thread deletion of timers. */ #include #include #include #include #include #include #include #include #include /* Creating timers in another thread should work too. */ static void *do_timer_create(void *arg) { struct sigevent *const sigev = arg; timer_t *const timerId = sigev->sigev_value.sival_ptr; if (timer_create(CLOCK_REALTIME, sigev, timerId) < 0) { perror("timer_create"); return NULL; } return timerId; } int main(void) { int i, res; timer_t timerId; struct itimerspec itval; struct sigevent sigev; itval.it_interval.tv_sec = 2; itval.it_interval.tv_nsec = 0; itval.it_value.tv_sec = 2; itval.it_value.tv_nsec = 0; sigev.sigev_notify = SIGEV_SIGNAL; sigev.sigev_signo = SIGALRM; sigev.sigev_value.sival_ptr = (void *)&timerId; for (i = 0; i < 100; i++) { printf("cnt = %d\n", i); pthread_t thr; res = pthread_create(&thr, NULL, &do_timer_create, &sigev); if (res) { error(0, res, "pthread_create"); continue; } void *val; res = pthread_join(thr, &val); if (res) { error(0, res, "pthread_join"); continue; } if (val == NULL) continue; res = timer_settime(timerId, 0, &itval, NULL); if (res < 0) perror("timer_settime"); res = timer_delete(timerId); if (res < 0) perror("timer_delete"); } return 0; } [PATCH] v850: use volatile qualifier on v850 test-n-bitop asm statements From: (Miles Bader) Otherwise the compiler can delete them (this is one of those "how on earth did it ever work before" moments). [PATCH] v850: make v850 dma-mapping.h header work when !CONFIG_PCI From: (Miles Bader) Is this something that should be done in ? [PATCH] m68knommu: create dma-mapping.h From: Create a dma-mapping.h for m68knommu architecture. [PATCH] m68knommu: fix kernel_thread() From: Some kernel janitor clean ups of printk for the m68knommu specific process code. And more importantly a fix to the kernel_thread() asm code to correctly return the pid back to the return var from the clone system call. [PATCH] m68knommu: Kconfig cleanup From: A few changes to the m68knommu Kconfig: . Add support for 64MHz clocked CPU's . Add support for selecting the COBRA5272 and COBRA5282 boards . Use drivers/Kconfig for driver configuration . Allow configuring compilation with frame-pointer [PATCH] m68knommu: comempci.c printk cleanup From: Cleanup m68knommu's comempci.c support code. Add type to all printk calls. Patch originally from kernel janitors. [PATCH] m68knommu: coherent dma allocation From: Create the coherent DMA allocation functions for m68knommu. No current hardware in this class requires anything special, so it just just does normal allocations after sanity checks. [PATCH] m68knommu: build dma.c From: Add local m68knommu dma allocation code to build list. [PATCH] m68knommu cleanup setup.c (printk and irqreturn_t) From: Cleanup m68knommu/kernel/setup.c. Add type to all printk calls, remove obsolete framebuffer setup and fix a few irqreturn_t for interrupt handlers in prototypes. Printk cleanup originally from kernel janitors. [PATCH] m68knommu cleanup traps.c (printk and dump_stack) From: Add type to all printk calls in m68knommu traps.c. Also added a modern dump_stack function. [PATCH] m68knommu: platform additions in linker script From: A couple of additions to the linker script for m68knommu platforms: . add support for COBRA5272 and COBRA5282 boards . link in .rodata.str1 generated by gcc-3.3.x compilers [PATCH] m68knommu/coldfire: fix gcc cpu define From: Fix architecture/cpu defines to support those used by modern versions of gcc (that is gcc > 3.3.x) for m68knommu. The standard for defining ColdFire architectures is no longer __mcf5200__, it is now __mcoldfire__. This patch fixes all the occurances in the m68knommu/lib functions. [PATCH] m68knommu: add senTec vendor support to Makefile From: Add build support for the senTec vendor to m68knommu architecture Makefile. [PATCH] m68knommu: fault.c printk cleanup From: Add type field to printk calls. Patch original provided by kernel janitors. [PATCH] m68knommu: mm/init.c printk cleanup From: Add type field to printk calls in m68knommu mm/init.c. Patch originally from kernel janitors. [PATCH] m68knommu/ColdFire base DMA addresses From: Define the DMA register set base address array for those m68knommu/ColdFire CPU's that have a DMA engines. [PATCH] m68knommu: timers.c printk cleanup From: Add type field to printk calls in m68knommu timers.c [PATCH] m68knommu: auto-size DRAM on Motorola/5272 ColdFire board From: Allow for auto-detecting the size of the DRAM in the startup code for the Motorola/5272 (ColdFire) board. Use the DRAM sizing register, since it will have been setup by the debug boot monitor (dBUG). [PATCH] m68knommu: add start code for COBRA5272 board From: Add startup code specific to newly supported COBRA5272 board. [PATCH] m68knommu: use irqreturn_t in ColdFire 5282 setup code From: Fixes to the Motorola ColdFire 5282 setup code: . fix interrupt routine return types to be irqreturn_t . add DMA base addresses array [PATCH] m68knommu: add start code for COBRA5282 board From: Add start up code specific to the newly added COBRA5282 board. [PATCH] m68knommu: cleanup ColdFire/5307 ints code From: . add type field to printk calls (from kernel janitors) . there is no loop in show_interrupts(), don't use continue [PATCH] m68knommu: use irqreturn_t in ColdFire 5307 setup code From: Fixes to the Motorola ColdFire 5307 setup code: . fix interrupt routine return types to be irqreturn_t . add DMA base addresses array [PATCH] m68knommu: mm/5307/vectors.c printk cleanup From: Add type field to printk call. Original patch supplied bu kernel janitors. [PATCH] m68knommu: conditional ROMfs copy for 5407 CLEOPATRA board From: Conditionaly copy an attached ROMfs filesystem in memory on kernel startup. This should only be done if there really is a ROMfs there. [PATCH] m68knommu: 68360 commproc.c printk cleanup From: Add type specifier to printk calls. Original patch from kernel janitors. [PATCH] m68knommu: 68360 config.c printk cleanup From: Add type specifier to printk calls. Patch originally from kernel janitors. [PATCH] m68knommu: 68EZ328 config.c printk cleanup From: Add type specifier to printk calls. Patch originally from kernel janitors. [PATCH] 68knommu: use irqreturn_t in ColdFire 5407 setup code From: Fixes to the Motorola ColdFire 5407 setup code: . fix interrupt routine return types to be irqreturn_t . add DMA base addresses array . support compile time setting of kernel boot arguments [PATCH] 68knommu: use irqreturn_t in Motorola 68328 setup code From: A number of small fixes for the Motorola 68328 setup code: . fix interrupt routine return types to be irqreturn_t . add type specifier to printk calls (from kernel janitors) . rework asm code to be gcc-3.3.x clean [PATCH] 68knommu: cleanup Motorola 68328 ints code From: Some fixes for the 68328 common ints management code: . use irqreturn_t for return type of interrupt handlers . clean up asm code to be gcc-3.3.x clean . add type field to printk calls (from kernel janitors) . there is no loop in show_interrupts(), don't use continue [PATCH] 68knommu: cleanup Motorola 68360 ints code From: Some fixes for the 68360 common ints management code: . use irqreturn_t for return type of interrupt handlers . add type field to printk calls (from kernel janitors) . there is no loop in show_interrupts(), don't use continue [PATCH] 68knommu: mk68knommu DragonEngine setup code printk cleanup From: A couple of fixes for the DragonEngine sepcific setup code: . remove cs8900 ethernet setup from here . add type specifier to printk calls (from kernel janitors) [PATCH] 68knommu: cleanup startup code for 68EZ328 DragonEngine board From: Clean up debug trace in startup code of 68EZ328 DragonEngine board. [PATCH] 68knommu: 68EZ328/ucdimm setup code printk cleanup From: Add type specifier to printk calls in 68EZ328/ucdimm setup code. Patch original from kernel janitors. [PATCH] 68knommu: add support for 64MHz clock for ColdFire boards From: Add support for boards that have a 64MHz clock to common Coldfire header. [PATCH] missing \n in timer_tsc.c From: Arjan van de Ven patch below fixes a missing \n in a printk; without this you get to see a <4> in the middle of that line... [PATCH] hugetlb consolidation From: William Lee Irwin III The following patch consolidates redundant code in various hugetlb implementations. I took the liberty of renaming a few things, since the code was all moved anyway, and it has the benefit of helping to catch missed conversions and/or consolidations. [PATCH] s390: core s390 From: Martin Schwidefsky s390 core changes: - Fix _raw_spin_trylock for 64 bit. - Add clarification to s390 debug debug documentation. [PATCH] s390: common i/o layer From: Martin Schwidefsky Common i/o layer changes: - Avoid de-registering a ccwgroup device multiple times. - Remove check for channel path objects in get_subchannel_by_schid. Channel patch objects are never in the bus list. - Avoid NULL pointer deref. in qdio_unmark_q. - Fix reference counting on subchannel objects. - Add shutdown function to terminate i/o and disable subchannels at reipl. - Remove all ccwgroup devices if the ccwgroup driver is unregistered. [PATCH] s390: tape driver fixes From: Martin Schwidefsky Tape driver changes: - Add missing break in tape_34xx_work_handler to avoid misleading message. - Cleanup offline/remove code. [PATCH] s390: dasd driver fix From: Martin Schwidefsky dasd driver changes: - Fix check for device type in error recovery for fba devices. [PATCH] s390: network driver fixes From: Martin Schwidefsky Network driver changes: - ctc: move kfree of driver structure after the last use of it. - netiucv: stay in state startwait if peer is down. - lcs: initialize ipm_list and unregister netdev only if it is present. [PATCH] s390: dcss block driver fix From: Martin Schwidefsky DCSS block device driver changes: - Fix remove_store function, put_device is called too early. [PATCH] s390: zfcp fixes (without kfree hack) From: Martin Schwidefsky zfcp host adapter fixes: - Reuse freed scsi_ids and scsi_luns for mappings. - Order list of ports/units by assigned scsi_id/scsi_lun. - Don't update max_id/max_lun in scsi_host anymore. - Get rid of all magics. - Add owner field to ccw_driver structure. - Avoid deadlock on bus->subsys.rwsem. - Use a macro for all scsi device sysfs attributes. - Change proc_name from "dummy" to "zfcp". - Don't wait for scsi_add_device to complete while holding a semaphore. - Cleanup include files in zfcp_aux.c & zfcp_def.h. - Get rid of zfcp_erp_fsf_req_handler. - Proper link up/down handling. - Avoid possible NULL pointer dereference in zfcp_erp_schedule_work. - Remove module_exit function. Without an external release function for the zfcp_port/zfcp_unit objects module unloading is racy. [PATCH] s390: zfcp log messages part 1 From: Martin Schwidefsky zfcp host adapter log message cleanup part 1: - Shorten log output. - Increase log level for some messages. - Always print leading zeroes for wwpn and fcp-lun. [PATCH] s390: zfcp log messages part 2 From: Martin Schwidefsky zfcp host adapter log message cleanup part 2: - Shorten log output. - Increase log level for some messages. - Always print leading zeroes for wwpn and fcp-lun. [PATCH] s390: crypto device driver part 1 From: Martin Schwidefsky The crypto device driver for PCICA & PCICC cards, part 1. [PATCH] s390: crypto device driver part 2 From: Martin Schwidefsky The crypto device driver for PCICA & PCICC cards, part 2. [PATCH] ia64: Allow IO port space without EFI RT attribute Some firmware does not require run-time mapping of the legacy IO port space. (It may not need to perform any IO port operations, or it may do them with translation disabled.) (efi_get_iobase): Don't require that IO port space be marked RT, since there's no reason the firmware should require mappings for it. Thanks to Greg Albrecht for noticing this. Also, allow attributes in addition to EFI_MEMORY_UC. I can't think of another current attribute that makes sense, but the kernel only depends on being able to use UC. [PATCH] ia64: set_rte() should get iosapic_lock Currently set_rte() changes RTE without iosapic_lock held. I guess it assumes to be called only at the boot time. But set_rte() can be called by PCI driver not only at the boot time. So I think set_rte() should get iosapic_lock. pci_enable_device(drivers/pci/pci.c) | +-> pci_enable_device_bars(drivers/pci/pci.c) | +-> pcibios_enable_device(arch/ia64/pci/pci.c) | +-> acpi_pci_irq_enable (drivers/acpi/pci_irq.c) | +-> iosapic_enable_intr (arch/ia64/kernel/iosapic.c) | +-> set_rte (arch_ia64/kernel/iosapic.c) A following patch fixes this issue. [PATCH] s390: rewritten qeth driver From: Martin Schwidefsky The rewritten qeth network driver. [PATCH] Add queue congestion callout From: Miquel van Smoorenburg The VM and VFS use the address_space_backing_dev_info to track the realtime status of the device which backs the mapping. The read_congested and write_congested fields are used to determine whether a read or write against that device may block. We use this infrastructure to a) allow pdflush to service many queues in parallel (by not getting stuck on any particular one) and b) to avoid undesirable and uncontrolled latencies in places such as page reclaim and c) To avoid blocking in readahead operations The current code only supports simple disk queues (and I have a patch here for NFS). Stacked queues (MD and DM) don't get this information right and problems were expected. Efficiency problems have now been noted and it's time to fix it. This patch lays down the infrastructure which permits the queue implementation to get control when someone at a higher level is querying the queue's congestion state. So DM (for example) can run around and examine all the queues which contribute to the higher-level queue. It also adds bdi_rw_congested() for code in xfs and ext2 that calls both bdi_read_congested() and bdi_write_congested() in a row, and it was "free" anyway. [PATCH] Implement queue congestion callout for device mapper From: Miquel van Smoorenburg Joe Thornber This implements the queue congestion callout for DM stacks. To make bdi_read/write_congested() return correct information. - md->lock protects all fields in md _except_ md->map - md->map_lock protects md->map - Anyone who wants to read md->map should use dm_get_table() which increments the tables reference count. This means the spin lock is now only held for the duration of a reference count increment. Udpate: dm.c: protect md->map with a rw spin lock rather than the md->lock semaphore. Also ensure that everyone accesses md->map through dm_get_table(), rather than directly. [PATCH] dmL remove __dm_request From: Joe Thornber dm.c: remove __dm_request (merge with previous patch). [PATCH] per-backing dev unplugging From: Jens Axboe , Chris Mason, me, others. The global unplug list causes horrid spinlock contention on many-disk many-CPU setups - throughput is worse than halved. The other problem with the global unplugging is of course that it will cause the unplugging of queues which are unrelated to the I/O upon which the caller is about to wait. So what we do to solve these problems is to remove the global unplug and set up the infrastructure under which the VFS can tell the block layer to unplug only those queues which are relevant to the page or buffer_head whcih is about to be waited upon. We do this via the very appropriate address_space->backing_dev_info structure. Most of the complexity is in devicemapper, MD and swapper_space, because for these backing devices, multiple queues may need to be unplugged to complete a page/buffer I/O. In each case we ensure that data structures are in place to permit us to identify all the lower-level queues which contribute to the higher-level backing_dev_info. Each contributing queue is told to unplug in response to a higher-level unplug. To simplify things in various places we also introduce the concept of a "synchronous BIO": it is tagged with BIO_RW_SYNC. The block layer will perform an immediate unplug when it sees one of these go past. [PATCH] Use BIO_RW_SYNC in swap write page From: Jens Axboe Dog slow software suspend found this one. If WB_SYNC_ALL, then you need to mark the bio as sync as well. This is because swap_writepage() does a remove_exclusive_swap_page() (going to __delete_from_swap_cache -> __remove_from_page_cache) which can kill page->mapping, thus aops->sync_page() has nothing to work with for unplugging the address space. [PATCH] unplugging: md update From: Neil Brown I've made a bunch of changes to the 'md' bits - largely moving the unplugging into the individual personalities which know more about which drives are actually in use. [PATCH] Correct unplugs on nr_queued From: Jens Axboe There's a small discrepancy in when we decide to unplug a queue based on q->unplug_thresh. Basically it doesn't work for tagged queues, since q->rq.count[READ] + q->rq.count[WRITE] is just the number of allocated requests, not the number of requests stuck in the io scheduler. We could just change the nr_queued == to a nr_queued >=, however that is still suboptimal. This patch adds accounting for requests that have been dequeued from the io scheduler, but not freed yet. These are q->in_flight. allocated_requests - q->in_flight == requests_in_scheduler. So the condition correctly becomes if (requests_in_scheduler == q->unplug_thresh) instead. I did a quick round of testing, and for dbench on a SCSI disk the number of timer induced unplugs was reduced from 13 to 5 :-). Not a huge number, but there might be cases where it's more significant. Either way, it gets ->unplug_thresh always right, which the old logic didn't. [PATCH] CFQ io scheduler From: Jens Axboe CFQ I/O scheduler [PATCH] rmap 1 linux/rmap.h From: Hugh Dickins First of a batch of three rmap patches: this initial batch of three paving the way for a move to some form of object-based rmap (probably Andrea's, but drawing from mine too), and making almost no functional change by itself. A few days will intervene before the next batch, to give the struct page changes in the second patch some exposure before proceeding. rmap 1 create include/linux/rmap.h Start small: linux/rmap-locking.h has already gathered some declarations unrelated to locking, and the rest of the rmap declarations were over in linux/swap.h: gather them all together in linux/rmap.h, and rename the pte_chain_lock to rmap_lock. [PATCH] rmap 2 anon and swapcache From: Hugh Dickins Tracking anonymous pages by anon_vma,pgoff or mm,address needs a pointer,offset pair in struct page: mapping,index the natural choice. But swapcache uses those for &swapper_space,swp_entry_t. It's trivial to separate swapcache from pagecache with radix tree; most of swapper_space is actually unused, just a fiction to pretend swap like file; and page->private is a good place to keep swp_entry_t, now that swap never uses bufferheads. Define PG_anon bit, page_add_rmap SetPageAnon and put an oopsable address in page->mapping to test that we're not confused by it. Define page_mapping(page) macro to give NULL when PageAnon, whatever may be in page->mapping. Define PG_swapcache bit, deduce swapper_space from that in the few places we need it. add_to_swap_cache now distinct from add_to_page_cache. Separating the caches somewhat simplifies the tmpfs swizzling in swap_state.c, now the page can briefly be in both caches. The rmap method remains pte chains, no change to that yet. But one small functional difference: the use of PageAnon implies that a page truncated while still mapped will no longer be found and freed (swapped out) by try_to_unmap, will only be freed by exit or munmap. But normally pages are unmapped by vmtruncate: this should only affect nonlinear mappings, and a later patch not in this batch will fix that. [PATCH] rw_swap_page_sync fixes Fix up the rw_swap_page_sync() gorrors by fully decoupling this function from the VM - it is now just a helper function which reads a page from or writes a page to swap. [PATCH] rmap 3 arches + mapping_mapped From: Hugh Dickins Some arches refer to page->mapping for their dcache flushing: use page_mapping(page) for safety, to avoid confusion on anon pages, which will store a different pointer there - though in most cases flush_dcache_page is being applied to pagecache pages. arm has a useful mapping_mapped macro: move that to generic, and add mapping_writably_mapped, to avoid explicit list_empty checks on i_mmap and i_mmap_shared in several places. Very tempted to add page_mapped(page) tests, perhaps along with the mapping_writably_mapped tests in do_generic_mapping_read and do_shmem_file_read, to cut down on wasted flush_dcache effort; but the serialization is not obvious, too unsafe to do in a hurry. [PATCH] rename page_to_nodenum() From: "Martin J. Bligh" I'd prefer we renamed this to page_to_nid() before anyone starts using it. This fits with the naming convention of everything else (pfn_to_nid, etc). Nobody uses it right now - I grepped the whole tree. [PATCH] cyclades works OK on SMP From: Marcelo Tosatti The cyclades.c driver was marked BROKEN_ON_SMP during early 2.6. It was fixed later on but the tag was left in Kconfig. The driver is not very smart wrt SMP locking, it can be improved. There is only one spinlock per card which guarantees command block ordering and protects different shared data, which can be held for long periods. _But_ the locking works reliably, so remove the BROKEN_ON_SMP tag. [PATCH] dnotify_parent speedup From: Anton Blanchard Directory notify code was showing up in a dd bs=1024k from 2 raid arrays on an emulex FC adapter: 3635 69.4896 vmlinux-2.6.5 .default_idle 332 6.3468 vmlinux-2.6.5 .__copy_tofrom_user 112 2.1411 vmlinux-2.6.5 .save_remaining_regs 76 1.4529 vmlinux-2.6.5 .scsi_dispatch_cmd 64 1.2235 vmlinux-2.6.5 .dnotify_parent 61 1.1661 vmlinux-2.6.5 .do_generic_mapping_read We already have a sysctl to enable/disable it, the patch below uses it in dnotify_parent. dnotify_parent disappears and idle time goes up: 4508 70.8582 vmlinux-2.6.5 .default_idle 253 3.9767 vmlinux-2.6.5 .__copy_tofrom_user 142 2.2320 vmlinux-2.6.5 .save_remaining_regs 88 1.3832 vmlinux-2.6.5 .shrink_zone 84 1.3203 vmlinux-2.6.5 .elx_drvr_unlock 75 1.1789 vmlinux-2.6.5 .scsi_dispatch_cmd 69 1.0846 vmlinux-2.6.5 .do_generic_mapping_read Of course, to gain this small speedup isers need to know to set /proc/sys/fs/dir-notify-enable to zero. Nobody does that. [PATCH] Feed floppy.c through Lindent From: "Randy.Dunlap" [PATCH] jbd: do_get_write_access lock contention reduction We're seeing heavy contention against j_list_lock on 8-way in do_get_write_access(). We actually don't need j_list_lock in there except for one little case - the per-bh jbd_lock_bh_state() is sufficient to protect this buffer's internal state. On some nice quick LVM array Ram Pai measured an overall 3x speedup from this patch: the script took the following time on 265mm1 real 0m57.504s user 0m0.400s sys 7m29.867s and with the 2patches it took real 0m19.983s user 0m0.438s sys 1m55.896s [PATCH] jbd: b_transaction zeroing cleanup Almost everywhere where JBD removes a buffer from the transaction lists the caller then nulls out jh->b_transaction. Sometimes, the caller does that without holding the locks which are defined to protect b_transaction. This makes me queazy. So change things so that __journal_unfile_buffer() nulls out b_transaction inside both j_list_lock and jbd_lock_bh_state(). It cleans things up a bit, too. [PATCH] i386 probe_roms(): preparation From: Rene Herman The i386 probe_roms() function has a fair number of problems currently: - When you actually have an adapter ROM in the machine, your video ROM disappears. This is due to the pc9800 subarch merge that split it up in probe_video_rom(int roms) and probe_extension_roms(int roms), but expects a "roms++" in probe_video_roms() to have an effect outside of that function. - The majority of VGA adapters these days host a ROM larger then 32K, yet the current code hardcodes a 32K ROM. The VGA BIOS "length" byte is normally valid (it in fact needs to be for a regular mainboard BIOS to accept it) and I've verified on a few dozen very new to very old VGAs that it is. However, assuming someone actually did not check for the length and checksum there for a reason, the safe thing to do here is accept the length byte when we also get a valid checksum. - The current code scans 0xc0000 to 0xdffff for a video ROM while the standard PC thing to do (that which the BIOS does) is only scan for a video ROM starting between 0xc0000 and 0xc7fff. This means that on a headless- (or BIOS-less monochrome adapter-) box, the first adapter ROM found triggers the registration of a 32K "Video ROM" at hardcoded address 0xc0000, even when _nothing_ is present between 0xc0000 and 0xc7fff. - The current adapter ROM scan stops at 0xdffff, whether or not an extension ROM is present at 0xe0000. The PC thing to do is scan 0xc8000 upto 0xdffff if an extension ROM is present, and upto 0xeffff when it's not (it's not/hardly ever). - Adapter ROMs are called "Extension ROM", but the latter term is really better reserved for a motherboard extension ROM. - Currently, the code happily starts scanning through a ROM it just registered looking for the next one (just does += 2048, even when that's inside the previous ROM) which is at least silly. Unfortunately, this code is "subarched" between mach-default and mach-pc9800, meaning the patch got a bit involved. Currently all this code, and gobs of data, is defined (not just declared) in the header: include/asm-i386/mach-{default,pc9800}/mach_resources.h which isn't nice. That .h really wants to be a .c. The first patch, in the next message, does not change any code but only undoes the probe_video_rom / probe_extension_roms split and moves the code to a new file arch/i386/mach-{default,pc9800}/std_resources.c with a header include/asm-i386/std_resources.h for the prototypes only. The second patch overhauls the code itself for mach-default. Please see comments on top of that patch for (yet more) comments. It's tested on various machines, with and without adapter ROMs. I haven't touched pc9800. Nothing should have changed though. The pc9800 author, as given in the code, is CCed. Also, x86-64 inherits the probe_roms() code from 2.4, and while it doesn't have the subarch specific problems, it has all others. I'll convert it to if this i386 version is deemed desirable. This patch doesn't change any code, just moves stuff from the "mach_resources.h" header to a "std_resources.c" subarch specific file, and introduces a "std_resources.h" header for the prototypes. [PATCH] i386 probe_roms(): fixes From: Rene Herman This patch tries to improve the i386/mach-default probe_roms(). This also c99ifies the data, adds an IORESOURCE_IO flag for the I/O port resources, an IORESOURCE_MEM flag for the VRAM resource, IORESOURCE_READONLY | IORESOURCE_MEM for the ROM resources and adds two additional "adapter ROM slots" (for a total of 6) since it now also scans the 0xe0000 segment. [PATCH] swsusp update: supports discontingmem/highmem From: Pavel Machek Bill Irwin did some work on this. It makes swsusp behave correctly w.r.t. discontingmem, and adds highmem handling (very simple-minded, but should work ok with 1GB). It now should behave correctly w.r.t. more than one swap device, and fixes double restoring of console. [PATCH] swsusp update: supports discontingmem/highmem fixes From: Pavel Machek It makes swsusp behave correctly w.r.t. discontingmem, and adds highmem handling. [PATCH] Swsusp should not wake up stopped processes From: Pavel Machek If you stop process with ^Z, then suspend, process is awakened. Thats a bug. Solution is to simply leave already stopped processes alone. Plus we no longer use TASK_STOPPED for processes in refrigerator. Userland might see us and get confused. [PATCH] Correct kernel-doc comment with incorrect parameters documented From: "Randy.Dunlap" From: Michael Still Correct kernel-doc comment with incorrect parameters documented [PATCH] get_user_pages shortcut for anonymous pages From: Martin Schwidefsky The patch avoids the instantiation of pagetables for not-present pages in get_user_pages(). Without this, the coredump code can cause total memory exhaustion in pagetables. Consider a store to current stack - 1TB. The stack vma is extended to include this address because of VM_GROWSDOWN. If such a process dies (which is likely for a defunc process) then the elf core dumper will cause the system to hang because of too many page tables. We especially recognise this situation and simply return a ref to the zero page. [PATCH] isicom.c: jiffies must be unsigned long From: Geert Uytterhoeven jiffies must be unsigned long [PATCH] isicom.c: unused vars From: Geert Uytterhoeven Recent serial changes moved some code, causing unused variable warnings. [PATCH] parport dependency fix From: Geert Uytterhoeven PCI multi-IO card support depends on PCI [PATCH] DVB dependency fix From: Geert Uytterhoeven DVB_TWINHAN_DST depends on DVB_BT8XX (dependency is explicitly mentioned in help text, but not enforced) [PATCH] isicom error path fix From: Geert Uytterhoeven Variable error is not initialized, but printed if tty_unregister_driver() fails. [PATCH] QD65xx I/O ports fix From: Geert Uytterhoeven I/O port numbers can be larger than 8-bit on many platforms (this caused a warning when {out,in}b() cast reg to a pointer on platforms with memory mapped I/O) [PATCH] Fix parportbook build again From: Herbert Xu The previous fix causes a syntax error when building: Working on: /home/gondolin/herbert/src/debian/work/kernel/build/2.6/kernel-source-2.6.5-2.6.5/Documentation/DocBook/parportbook.sgml jade:/home/gondolin/herbert/src/debian/work/kernel/build/2.6/kernel-source-2.6.5-2.6.5/Documentation/DocBook/parportbook.sgml:4059:2:E: invalid comment declaration: found character "!" outside comment but inside comment declaration jade:/home/gondolin/herbert/src/debian/work/kernel/build/2.6/kernel-source-2.6.5-2.6.5/Documentation/DocBook/parportbook.sgml:4058:0: comment declaration started here jade:/home/gondolin/herbert/src/debian/work/kernel/build/2.6/kernel-source-2.6.5-2.6.5/Documentation/DocBook/parportbook.sgml:4059:4:E: character data is not allowed here This patch removes the offending line completely since that file is probably not coming back anyway. [PATCH] saa7134 - Add two inputs for Asus TV FM From: Martin Hicks I just bought an ASUS TV FM capture card, based on the saa7134 chip. It only had one input specified, coax. This patch adds the Composite and S-Video inputs. It seems to work correctly for me. [PATCH] pdaudiocf.c needs init.h From: Herbert Xu This patch makes this file includes linux/init.h since it uses the __init tag. [PATCH] don't offer GEN_RTC on ia64 From: Bjorn Helgaas gen_rtc.c doesn't work on ia64 (we don't have asm/rtc.h, for starters), so don't offer it there. [PATCH] remove concatenation with __FUNCTION__ arch/* From: Tony Breeds [PATCH] remove concatenation with __FUNCTION__ drivers/* From: Tony Breeds [PATCH] remove concatenation with __FUNCTION__ include/* From: Tony Breeds [PATCH] remove concatenation with __FUNCTION__ sound/* From: Tony Breeds [PATCH] Fix Raid5/6 above 2 Terabytes From: Evan Felix Here is a patch that fixes a major issue in the raid5/6 code. It seems that the code: logical_sector = bi->bi_sector & ~(STRIPE_SECTORS-1); (sector_t) = (sector_t) & (constant) that the right side of the & does not get extended correctly when the constant is promoted to the sector_t type. I have CONFIG_LBD turned on so sector_t should be 64bits wide. This fails to properly mask the value of 4294967296 (2TB/512) to 4294967296. in my case it was coming out 0. this cause the loop following this code to read from 0 to 4294967296 blocks so it could write one character. As you might imagine this makes a format of a 3.5TB filesystem take a very long time. [PATCH] make ibmasm driver uart support depend on SERIAL_8250 From: Max Asbock This patch makes serial line registration in the ibmasm service processor driver depend on CONFIG_SERIAL_8250. Previously the driver wouldn't compile when serial driver support wasn't enabled. [PATCH] fix test_and_change_bit comment From: Paul Jackson I've read over the code in each case, built and ran a test case for i386 in particular, and studied the other uses and definitions of test_and_change_bit(). Everything I see recommends this change. - Fix test_and_change_bit() comment: returns old value, not new one. [PATCH] ext2fs sb= mount option fix From: (Andrew Church) The following patch fixes a bug in the processing of the sb= (alternate superblock) mount option for ext2: when changing the device block size, the given superblock is ignored and the code reverts to using block 1. [PATCH] ext3fs sb= mount option fix From: (Andrew Church) The following patch fixes a bug in the processing of the sb= (alternate superblock) mount option for ext3: when changing the device block size, the given superblock is ignored and the code reverts to using block 1. [PATCH] fix for potential integer overflow in zoran driver From: "Ronald S. Bultje" Attached patch fixes a potential integer overflow in zoran_procs.c (part of the zr36067 driver). Bug was detected by Ken Ashcraft with the Stanford checker. [PATCH] mdacon.c warning fix. From: "Luiz Fernando N. Capitulino" drivers/video/console/mdacon.c:599: warning: initialization from incompatible pointer type [PATCH] do_fork() error path memory leak From: In do_fork(), if an error occurs after the mm_struct for the child has been allocated, it is never freed. The exit_mm() meant to free it increments the mm_count and this count is never decremented. (For a running process that is exitting, schedule() takes care this; however, the child process being cleaned up is not running.) In the CLONE_VM case, the parent's mm_struct will get an extra mm_count and so it will never be freed. This patch should fix both the CLONE_VM and the not CLONE_VM case; the test of p->active_mm prevents a panic in the case that a kernel-thread is being cloned. [PATCH] Fix More Problems Introduced By Module Structure Added in modpost.c From: Rusty Russell Sam Ravnborg found these. 1) have_vmlinux is a global, and should not be reset every time. 2) We pretend every module needs cleanup_module so it gets versioned, but that isn't defined for CONFIG_MODULE_UNLOAD=n. 3) The visible effect of this is that modpost will start complaning about undefined symbols - previously this happened only when the module was isntalled. [PATCH] Rename bitmap_clear to bitmap_zero, remove CLEAR_BITMAP From: Rusty Russell clear_bit(n, addr) clears the nth bit. test_and_clear_bit(n, addr) clears the nth bit. cpu_clear(n, cpumask) clears the nth bit (vs. cpus_clear()). bitmap_clear(bitmap, n) clears out all the bits up to n. Moreover, there's a CLEAR_BITMAP() in linux/types.h which bitmap_clear() is a wrapper for. Rename bitmap_clear to bitmap_zero, which is harder to confuse (yes, it bit me), and make everyone use it. [PATCH] i2c-dev warning fixes drivers/i2c/i2c-dev.c: In function `i2cdev_read': drivers/i2c/i2c-dev.c:140: warning: int format, different type arg (arg 3) drivers/i2c/i2c-dev.c: In function `i2cdev_write': drivers/i2c/i2c-dev.c:168: warning: int format, different type arg (arg 3) [PATCH] policydb printk warnings security/selinux/ss/policydb.c:1160: warning: signed size_t format, different type arg (arg 3) security/selinux/ss/policydb.c:1160: warning: signed size_t format, different type arg (arg 3) [PATCH] applicom warnings and usercopy-in-cli fix drivers/char/applicom.c: In function `ac_write': drivers/char/applicom.c:363: warning: int format, different type arg (arg 2) drivers/char/applicom.c:363: warning: int format, different type arg (arg 3) drivers/char/applicom.c:363: warning: int format, different type arg (arg 2) drivers/char/applicom.c:363: warning: int format, different type arg (arg 3) drivers/char/applicom.c:523:2: warning: #warning "Je suis stupide. DW. - copy*user in cli" drivers/char/applicom.c: In function `ac_read': drivers/char/applicom.c:546: warning: int format, different type arg (arg 2) drivers/char/applicom.c:546: warning: int format, different type arg (arg 3) drivers/char/applicom.c:546: warning: int format, different type arg (arg 2) drivers/char/applicom.c:546: warning: int format, different type arg (arg 3) [PATCH] tpqic02 warnings drivers/char/tpqic02.c: In function `rdstatus': drivers/char/tpqic02.c:700: warning: int format, different type arg (arg 2) drivers/char/tpqic02.c:700: warning: int format, different type arg (arg 2) [PATCH] BSD accounting oops fix oopses have been reported in do_acct_process(), with premption enabled, when threaded applications are exitting. It appears that we're racing with another thread which is nulling out current->tty. I think this race is still there after we moved current->tty into current->signal->tty, so let's take the needed lock. [PATCH] framebuffer bugfix From: Arjan van de Ven Patch below fixes a thinko in the frame buffer drivers; the code does cursor.image.data = kmalloc(size, GFP_KERNEL); .... cursor.mask = kmalloc(size, GFP_KERNEL); .... if (copy_from_user(&cursor.image.data, sprite->image.data, size) || copy_from_user(cursor.mask, sprite->mask, size)) { .... where it's clear that the & in the first copy_from_user is utterly bogus since the destination is the content of the newly allocated buffer, and not the pointer to it as the code does. [PATCH] fb_copy_cmap() fix From: Arjan van de Ven fb_copy_cmap() takes an argument about wether to do memcpy, copy_from_user or copy_to_user. 0 is memcpy, 2 is copy_to_user. In the ioctl you want copy_to_user for copying the colormap to userspace. [PATCH] Make %docs depend on scripts_basic From: Sam Ravnborg From: Herbert Xu It seems that the %docs targets only needs scripts_basic. The following patch does just that. This removes its dependency on the existence of a .config file. [PATCH] kbuild: cleaning in three steps From: Sam Ravnborg Previously 'make clean' deleted all automatically generated files. The following patch revert this behaviour, and now 'make clean' leaves enough behind to allow external modules to be built. The cleaning is now done in three steps: make clean - delete everything not needed for building external modules make mrproper - delete all generated files, including .config make distclean - delete all temporary files such as *.orig, *~, *.rej etc. This fixes reports about nvidia and vmware build issues. [PATCH] kbuild: external module support From: Sam Ravnborg Based on initial patch from Andreas Gruenbacher there is now better support for building external modules with kbuild. The preferred syntax is now: make -C $KERNELSRC M=$PWD but the old syntax: make -C $KERNELSRC SUBDIRS=$PWD modules will remain supported. The major differences compared to before are that: 1) No attempt is made to neither check nor update any files in $KERNELSRC 2) Module versions are now supported During stage 2 of kernel compilation where the modules are built, a new file Module.symvers is created. This file contains the version for all symbols exported by the kernel and any module compiled within the kernel tree. When the external module is build the Module.symvers file is being read and symbol versions are used from that file. The purpose of avoiding any updates in the kernel src is that usually in a distribution the kernel src will be read-only, and there is no need to try to update it. And when building an external module the focus is on the module, not the kernel. I expect the distributions will start using something like this: kernel src - with no generated files. Not even .config: /usr/src/linux- Output from build: /lib/modules/linux-/build where build is a real directory with relevant output files and the appropriate .config. I have some Documentation in the pipe-line, but wants to see how this approach is received before completing it. This patch is made on top of the previously posted patch to divide make clean in three steps. And you may need to edit the following line in the patch to make it apply: %docs: scripts_basic FORCE to %docs: scripts FORCE [PATCH] parport: no procfs warning fix drivers/parport/procfs.c: In function `parport_default_proc_unregister': drivers/parport/procfs.c:529: warning: `return' with a value, in function returning void [PATCH] Add CONFIG_SYSFS From: Patrick Mochel Here is a patch to make sysfs optional. Note that with CONFIG_SYSFS=n you must specify the boot device's major:minor on the kernel boot command line with root=03:01 For embedded systems, it will save a significant amount of memory during runtime. And, it saves 4k from the built kernel image for me. [PATCH] JBD: BH_Revoke cleanup Use the bh bit test/set infrastructure rather than open-coding everything. No functional changes. [PATCH] cciss: /proc fix From: This patch fixes a bug where /proc displays 1 less logical volume than is actually configured. This causes problems for some installers. [PATCH] cciss_scsi warning drivers/block/cciss_scsi.c: In function `scsi_cmd_stack_free': drivers/block/cciss_scsi.c:241: warning: cast from pointer to integer of different size [PATCH] pmdisk is x86 only Only x86 implements pmdisk_arch_suspend(). So mark pmdisk as ia32-only, to avoid breaking allyesconfig. [PATCH] Oprofile: ARM/XScale PMU driver From: Zwane Mwaikambo The following patch adds support for the XScale performance monitoring unit to OProfile. It uses not only the performance monitoring counters, but also the clock cycle counter (CCNT) allowing for upto 5 usable counters. The code has been developed and tested on an IOP331 (hardware courtesy of Intel) therefore i haven't been able to test it on XScale PMU1 systems. Testing on said systems would be appreciated, and if done, please uncomment the #define DEBUG line at the top of op_model_xscale.c OProfile userspace support has already been committed and should be available via CVS. [PATCH] I2C: Rework memory allocation in i2c chip drivers Additional remarks: 1* This patch also removes an unused struct member in via686a and fixes an error message in ds1621. 2* I discovered error path problems in it87 and via686a detection functions. For the it87, I think that this patch makes it even more broken. I will fix both drivers in a later patch (really soon). [PATCH] I2C: Error paths in it87 and via686a drivers Here comes the patch that fixes error paths in the it87 and via686a detection functions. The it87 part also adds missing error values. [PATCH] I2C: pwm support in w83781d.c Here is a general pwm support cleanup patch for the w83781d chip driver. Featuring: * Don't pretend that we handle PWM on AS99127F chips. We don't know how it works, and one of the register we are accessing for now is clearly not a PWM register, and changing its value usually breaks temperature readings. * Discard irrelevant comments. * Rewrite show_pwmenable_reg. It was obviously taken from the 2.4 driver, with unneeded tests and the code was much too complicated anyway. And now we handle errors correctly. * Initialize pwm_enable at load time. So far it was done conditionally (if init=1) while it should always be done. And pwm2_enable wasn't read from the chip, while it should. I could test that my AS99127F doesn't expose pwm files through ssysfs anymore. Which means that I couldn't test the rest of the pwm changes, unfortunately. I've applied similar changes to our 2.4/CVS repository. [PATCH] I2C: make I2C chip drivers return -EINVAL on error [PATCH] I2C: fix asb100 bug Hi nymisi, Greg: * Nyeste Mihály [2004-01-27 16:02:04 +0100]: > Hi! > > I reported a bug of asb100 chip at: > http://www2.lm-sensors.nu/~lm78/readticket.cgi?ticket=1539 > > The reply was the follow: > > "Is there a BIOS option you can disable, e.g. Asus "COP", > "QFAN", or some such? My guess is that the BIOS is > somehow interfering with the asb100 driver. Otherwise > I don´t know how this could happen. ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Yeah, I wrote that. "You do that, you go to the box, you know. Two minutes by yourself, and you feel shame, you know." - Denis the goalie Greg, please apply this fix (vs. 2.6.5): [PATCH] I2C: Fix voltage rounding in lm80 This one line patch fixes voltage rounding in the lm80 chip driver. [PATCH] I2C: No reset not limit init in via686a The following patch removes limits initialization in the via686a driver. It was decided some times ago that this belongs to user-space, not kernel. See the thread here: http://archives.andrew.net.au/lm-sensors/msg06134.html It also prevents the sensor chip from being savagely reset at load time. This too follows a decision taken long ago that drivers should do as little as possible in their init procedure. See the thread here: http://archives.andrew.net.au/lm-sensors/msg04593.html This should make the driver smaller, safer and faster to load. The same was done to our 2.4/CVS version of the driver 5 months ago and it seems to work just fine. Delete unused files in sound/oss From Herbert Xu; the files aren't used anywhere, and shouldn't be there in the first place. [PATCH] USB: New ID for ftdi_sio Hi, I have an USB contactless reader which uses a FTDI chip. It works well with the current ftdi_sio driver, it's just a matter of adding an ID: [PATCH] Fix sysfs class support for CAPI this patch fixes a bug in the CAPI TTY support, because the ->name value of the TTY driver shouldn't contain a "/". After changing this there are now a "capi20" TTY device and a "capi20" control device and so I renamed the control device to "capi". The userspace visible part must be done by udev and I added these two rules to restore the old namespace: # CAPI devices KERNEL="capi", NAME="capi20", SYMLINK="isdn/capi20" KERNEL="capi*", NAME="capi/%n" [PATCH] PCI Hotplug: php_phy_location.patch Adds a file to show the pci hotplug slot location for the ppc64 driver only. [SPARC64]: Disable -Werror for a bit. [PATCH] Zorro devlist.h kbuild Zorro: Quieten building of devlist.h (cfr. PCI) [PATCH] Pm2fb is broken on Amiga Permedia2: Mark pm2fb broken on Amiga, until somebody fixes it (pm2fb.c explicitly tests for CONFIG_PCI right now) [PATCH] pm2fb barrier cleanup Permedia2: Always use the standard barrier macros (they do exist on m68k, and map to barrier()) [PATCH] Amiga Zorro8390 Ethernet section conflict Zorro8390: const data cannot be in the init data section (from Roman Zippel) [PATCH] MVME16x RTC const MVME16x RTC: Make days_in_mo[] const [PATCH] Sun-3 duplicates Sun-3: Kill duplicate definitions: - FC_CONTROL is defined in - vectors[] is declared in [PATCH] M68k vector definitions M68k: Add remaining CPU vector definitions [PATCH] M68k initializers cleanup M68k: Clean up initializers: - Convert struct/array initializers to C99 style - Do not initialize data to 0 or NULL explicitly so it can move to bss [PATCH] Amikbd C99 cleanup Amikbd: Use C99 array initializers and standard key defines [PATCH] m68k I/O m68k: Use explicit-sized types for I/O accesses [PATCH] M68k TLB fixes M68k TLB fixes from Roman Zippel: - Check current->active_mm for currently active mm - Set correct context to flush the right ATC entry This is especially important for kswapd to correctly flush unmapped entries (it caused random segfaults during large compiles) [PATCH] M68k time update M68k: Update time adjustment code cfr. other architectures. (perhaps do_gettimeofday() is a good candidate for consolidation across archs?) [PATCH] Amiga eth%d Amiga Ethernet drivers: Print card info after calling register_netdev(), to avoid dev->name still being 'eth%d'. [PATCH] m68k show_interrupts bug M68k: Make sure machine-specific interrupts are always printed (bug introduced by show_interrupts() conversion) [PATCH] hugetlbpage highmem fix From: Andy Whitcroft When clearing a large page allocation ensure we use a page clear function which will correctly clear a ZONE_HIGHMEM page. [PATCH] kbuild: Create .tmp_versions when building external modules From: Sam Ravnborg When building external modules the $PWD/.tmp_versions directory is used. The .tmp_versions directory in the kernel tree cannot be used because this would clutter up the kernel tree especially when more than one external module is being build for the same kernel tree. This patch make sure to create $PWD/.tmp_versions, and to delete it during make clean. It also removes warning about 'messed with SUBDIRS', this is no longer relevant when .tmp_versions is made outside the kernel tree. [PATCH] put ia32 pgds and pmds back into slab From: William Lee Irwin III This optimisation was reverted when I was removing all users of page->list. Bill fixed it up, so unrevert it again. [PATCH] get_files_struct cleanup From: Russell King Cleanup the 4 duplicate "get_files_struct" implementations into one get_files_struct() function to compliment put_files_struct(). [PATCH] shrink VFS hash sizes on small machines From: Matt Mackall Base hash sizes on available memory rather than total memory. An additional 50% above current used memory is considered reserved for the purposes of hash sizing to compensate for the hashes themselves and the remainder of kernel and userspace initialization. [PATCH] fix vga16fb.c frame buffer bad memory mapping From: Vincent Sanders The vga16fb driver uses a direct ioremap on 0xa00000 to gain access to the vga card. This is wrong on architectures other than x86, every other driver uses VGA_MAP_MEM macro from vga.h to ensure the correct memory mapping. [PATCH] uninline put_page() Shrinks my vmlinux by an astonishing 28k. text data bss dec hex filename 3038796 589890 150612 3779298 39aae2 vmlinux.before 3009761 590107 150612 3750480 393a50 vmlinux.after Thanks to Denis Vlasenko for performing the analysis. [PATCH] uninline seq_puts() and seq_putc() Saves 3.4k from my vmlinux. Thanks to Denis Vlasenko for performing the analysis. [PATCH] uninline copy_to_user() and copy_from_user() 40k reduction in my vmlinux. Thanks to Denis Vlasenko for performing the analysis. [PATCH] Fix tmscsim on amd64 From: Jeff Garzik DC390_init() takes a long, not an int. [PATCH] m68knommu: change addr type to reduce casting in ColdFire serial driver From: Change "addr" field type to reduce casting in ColdFire serial driver. [PATCH] m68knommu: fixes to the ColdFire serial driver From: A whole bunch of fixes for the ColdFire serial driver: . remove unused CONFIG_LEDMAN code . reformat port definitions to new style structure init . change "addr" field type to reduce casting in ColdFire serial driver . cleanup locking problems in mcfrs_write(). . implement fraction baud rate clock support for hardware that supports it (namely the ColdFire 5272) . implement wait_until_sent, some ColdFire parts of hardware support for this (again the 5272). . correctly use return values from put_user(), get_user() and copy_to_user() Many of these originaly from kernel janitors. [PATCH] m68knommu: fixes to the 68328 DragonBall serial driver From: A few fixes for the 68328 "DragonBall" serial driver: . use irqreturn_t for interrupt handlers . correct a few variable types (stop compiler warnings) . correctly use return values from put_user(), get_user() and copy_to_user() Many of these originaly from kernel janitors. [PATCH] Wrong return value in hfs_fill_super From: Nick Wellnhofer hfs_fill_super in 2.6.5 returns -EIO instead of -EINVAL if a valid supe= block isn't found. So mount_block_root in init/do_mounts.c bails out before trying to mount the root device as XFS. [PATCH] mips build fix From: Samium Gromoff Without this one it fails to build. [PATCH] another mips build fix From: Samium Gromoff Without this one it fails to build, too. [PATCH] pcmcia/rsrc_mgr.c warning fix. From: "Luiz Fernando N. Capitulino" , me drivers/pcmcia/rsrc_mgr.c: In function `find_io_region': drivers/pcmcia/rsrc_mgr.c:604: warning: large integer implicitly truncated to unsigned type We don't really know what underlying type an ioaddr_t has, so just use an integer here and let the compiler promote it appropriately. [PATCH] Compile fix for macserial From: Jeff Mahoney This patch fixes a problem with the serial conversion to tiocm[sg]et. The paste from rs_ioctl included the command sanity checking, but there's no command for tiocm[sg]et. The compile ends up failing. [PATCH] stack reductions: nfs root From: Arjan van de Ven root_nfs_name is called one in single threaded environment; can use static. [PATCH] binfmt_misc: remove attribute(unused) From: Anton Blanchard It's been there since the kernel was first imported into bk. We see no reason for this. [PATCH] ufs2_frag_map_fix : fixes wrong content reading in ufs2 code From: Niraj Kumar This is in continuation of the ufs2 read-only code that went into 2.6.5. This patch fixes a bug where wrong content was being read off the disk after around 4 MB mark. [PATCH] ppc64: Fix ibmveth.c compilation From: Paul Mackerras This patch changes PCI_DMA_TODEVICE to DMA_TO_DEVICE in a couple of places in drivers/net/ibmveth.c, since it doesn't compile without this change and it does compile with it. It also reformats a couple of over-long lines in the vicinity of the other changes. [PATCH] ppc64: restore r13 in an unrecoverable exception From: Anton Blanchard We have to restore r13 when entering unrecoverable_exception. [PATCH] e1000: ethtool set/get eeprom fixes [PATCH] e1000: ethtool set/get ring param support [PATCH] e1000: fix eeprom update to include e1000_standby_eeprom A Bug in e1000_spi_eeprom_ready where the Chip Select bit wasn't being toggled after every status register read (if the eeprom wasn't ready after the first status register read). The call to e1000_standby_eeprom manages the CS bit correctly [PATCH] e1000: remove polarity reversal workaround for forced 10H/10F links Adding this caused the adapter to fail while operating at 10 mbps, half duplex. Hence the fix is not complete. We are still investigating a more complete fix for the polarity reversal issue. [PATCH] e1000: Set Attla PHY to Class A Some LOM implementation of our controllers pass IEEE tests (Tx distortion/Symmetry) while operating in Class A mode rather than in class AB mode. [PATCH] e1000: New bit definitions, fix comments on loadtime parameters [PATCH] e1000: all other white space fixes, changelog [PATCH] e1000: replace if(retval=fn()) with retval=fn(); if (retval) [PATCH] pcnet32 fix hang/crash with loopback test If the pcnet32 interface is not up, running the loopback test may hang or crash the system. This patch provided by Jim Lewis fixes that problem. Tested on ia32 and ppc systems. [PATCH] sk_mca multicast fix Spotted by Jean Delvare : it has its memset arguments the wrong way round. [PATCH] etherh updates Update Acorn EtherH driver - convert to use mmio instead of emulated PIO. Convert card-specific parameters to a data structure rather than code-based selected. Please review and submit upstream. Thanks. [PATCH] netpoll early ARP handling Handle ARP requests while device is trapped before in_dev is initialized using netpoll config. Allows early kgdboe usage. From Stelian Pop [PATCH] netpoll transmit busy bugfix Fix for handling of full transmit queue when netpoll trap is enabled. From Stelian Pop [netdrvr 8390] Fix 8390 log spam It seems that PCMCIA 8390 users get spammed with a few annoying messages upon card removal. I guess 8390 could be taught to better detect and deal with these things, but here is a quick fix. [PATCH] MAINTAINER entry for the r8169 driver. [PATCH] r8169: Missing 'static' qualifier for functions. [PATCH] r8169: correct irq handler return value The irq handler must not return 1 when the status register is null during the firt iteration. [PATCH] r8169: mod_timer() expects an absolute time, not a relative offset. [PATCH] remove concat. with __FUNCTION__ (drivers/net/) (V2) Hi, Previous patch had a small problem. This patch replaces the previous version. I can/will send a relative/differential diff if you want/need it. Problem: On Tue, 2004-04-06 at 14:45, Randy.Dunlap wrote: > From: Tony Breeds > > "concatenation of string literals with __FUNCTION__ is deprecated" > -#define TRACE_ENTER(devname) DEBUG(2, "%s: -> " __FUNCTION__ "()\n", devname); > -#define TRACE_EXIT(devname) DEBUG(2, "%s: <- " __FUNCTION__ "()\n", devname); > +#define TRACE_ENTER(devname) DEBUG(2, "%s: -> %s()\n", __FUNCTION__, devname); > +#define TRACE_EXIT(devname) DEBUG(2, "%s: <- %s()\n", __FUNCTION__, devname); | Hi. This isn't the same. It should be: | | +#define TRACE_ENTER(devname) DEBUG(2, "%s: -> %s()\n", devname, __FUNCTION__); | +#define TRACE_EXIT(devname) DEBUG(2, "%s: <- %s()\n", devname, __FUNCTION__ ); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ drivers/net/gt96100eth.c | 2 +- drivers/net/irda/smsc-ircc2.c | 6 +++--- drivers/net/irda/via-ircc.c | 2 +- drivers/net/wireless/orinoco.h | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) Delete sis190 net driver. The driver was copied from the very-buggy r8169 (pre-Francois), and is for hardware that isn't even out of the lab yet. [netdrvr r8169] temporary build fix, until DMA_xxBIT_MASK is upstream fix merge problem with 2.6.5 (rename of page struct field list to lru) ia64: Quiet another compiler-warning. ia64: Drop pci_sal_ext_{read,write}() and instead simply switch to extended config-space addresses when needed. This avoids the fragile SAL version testing. ia64: When delivering a signal, force byte-order to little-endian. [PATCH] ide-disk.c: workaround for bogus LBA48 drives From: Geert Uytterhoeven Apparently some IDE drives (e.g. a pile of 80 GB ST380020ACE drives I have access to) advertise to support LBA48, but don't, causing kernels that support LBA48 (i.e. anything newer than 2.4.18, including 2.4.25 and 2.6.4) to fail on them. Older kernels (including 2.2.20 on the Debian woody CDs) work fine. Check for id->lba_capacity_2 being non-zero in idedisk_supports_lba48(). [PATCH] hpt366.c: fix 'cat /proc/ide/hpt366' crash Disable code doing outb() without any locking in /proc handler. Otherwise 'cat /proc/ide/hpt366' crashes if done during I/O. Noticed by John Stoffel . [PATCH] zero 'hw_regs_t hw' allocated from stack in ide.c and ide-cs.c [PATCH] asm-arm26/hdreg.h: use unsigned long for ide_ioreg_t [PATCH] add asm-generic/hdreg.h Use it on all archs which define ide_ioreg_t to unsigned long. [PATCH] asm/ide.h: ide_ioreg_t cleanup ide_ioreg_t is deprecated and hasn't been used by IDE driver for some time. Use unsigned long directly on alpha, arm26, arm, mips, parisc, ppc64 and sh. asm-ia64/ide.h (ide_ioreg_t is unsigned short) and asm-m68knommu/ide.h (broken - ide_ioreg_t is not defined) are the only users of ide_ioreg_t left. [PATCH] asm-ia64/ide.h: use unsigned long instead of ide_ioreg_t [PATCH] obsolete asm/hdreg.h [PATCH] jbd copyout fix When I converted journal_write_metadata_buffer() to kmap_atomic() I screwed up the handling of the copyout buffers - we're currently writing four zeroes into the user's page rather than into the data which is to be written to the journal (oops). Net effect: any block which starts with 0xC03B3998 gets scribbled on in data=journal mode. [PATCH] Fix ext3 add_nondir d_instantiate() It should be unconditional. [PATCH] Fix MSI IA64 Support Build Breakage From: "Nguyen, Tom L" The patch showed up in Linus' tree last night breaks the "generic_defconfig" build for ia64. Fix it by adding the NR_VECTORS device to ia64. [PATCH] update fix for potential integer overflow in zoran driver From: Dave Jones 2.4 already had this fixed, but uses a somewhat larger value to clip at. For uniformity sake, perhaps they should be the same? Patch below makes it match 2.4-bk [PATCH] x86-64 update Various fixes and cleanups for x86-64. - Update defconfig - Fix some problems in ROM resource scanning (Rene Herman) - Initialize APIC id of CPU 0 (Venkatesh Pallipadi) - Always enable swiotlb for GART_IOMMU - Fix compilation without IOMMU_GART - Remove nodes_present; use standard node_online_map instead. This also fixes a bug with no memory on node 0. - Switch node<->cpu mapping to arrays. This fixes some awkward special cases with no nodes and empty nodes. - Move K8 fallback node setup to common code - Eliminate old fake_node. - Fix wrong fields in MCE handling (Marc Bevand) - Make pci_dma_consistent behave more similar to i386 to fix Alsa [CPUFREQ] Correcting SGTC. Timer is based upon FSB From: Bruno Ducrot I think this patch is needed especially if the FSB is around 166MHz or 200MHz, or else I believe we get instabilities on some K7's motherboard powernow capable (it's called Cool'n Quiet IIRC). * Deduce fsb from cpu_khz and the max multiplier. It will be given as kHz now, so that frequency associated to a multiplier will be computate more accurately. Also, we need it for SGTC (see below). * Fix how cpuid is computed in powernow_decode_bios(). * Be more restrictive for PST. It may be possible (on desktop shipped with low power Athlon models) that FSB can be changed by dip switchs on motherboard for example. * Fix computation for SGTC. It use the bus timer (and then the bus frequency given by fsb). [ARM PATCH] 1811/1: Set dma_handle to ~0 when coherent allocation too big Patch from Deepak Saxena [CPUFREQ] don't use speedstep-centrino on unsupported CPUs From: Dominik Brodowski Don't use the ACPI data on CPUs we don't know nothing about. [ARM] Fix builds using O= [CPUFREQ] powernow-k7 ACPI integration. More from Bruno Ducrot. Warning: it will only half work on the ACER Aspire, though: there is no pstate in the DSDT corresponding to the max frequency... I'm looking how to handle that correctly, probably at the init stage, if the max frequency is not given, then add it to powernow_table. * Integrate acpi perflib from Dominik. * Use acpi if the PST tables are known to be broken (ASUS Aspire match one PST, but give brain damaged values), or use ACPI if no PST found. [CPUFREQ] Drop unneeded part of last patch. acpi fallback is handled already in the init function. [CPUFREQ] powernow-k7 needs to init later. Due to the possible dependancy on ACPI. [SERIAL] Add ARM PL011 uart primecell support. This adds support for the AMBA PL011 UART primecell, and moves the existing AMBA UART support to indicate it covers the AMBA PL010 primecell. [PATCH] USB speedtouch: turn on debugging if CONFIG_USB_DEBUG is set Hi Greg, this causes the speedtouch driver to output non-verbose debugging messages if the kernel was configured with CONFIG_USB_DEBUG. The patch is against your 2.6 kernel tree. [PATCH] USB speedtouch: fix memory leak in error path Hi Greg, this patch fixes a memory leak in the speedtouch driver. The leak occurs when the ATM layer submits a skbuff for transmission, but the driver rejects it (because the device has been unplugged for example). The ATM layer requires the driver to free the skbuff in this case. The patch is against your 2.6 kernel tree. [PATCH] USB speedtouch: bump the version number Hi Greg, this patch bumps the speedtouch driver's version number. It also adds the version number to the module description, so people can see it with modinfo. I also added a MODULE_VERSION line (why? because it was there...) The patch is against your 2.6 kernel tree. [PATCH] USB: more ftdi devices [PATCH] USB: Patch for Clie TH55 Support in visor kernel module I just want to explain the changes I've made, since I tried to adhere to the more organized structure in the 2.6 visor module to incorporate my changes. I didn't want to pollute this with some ugly hack. I created a new device id table with name clie_id_5_table to cleanly separate the UX50/TH55 from the rest. Along with this I added a new usb_serial_device_type which is essentially a copy of handspring_device but has its own attach function. This new attach function ( clie_5_attach ) will do the actual magic. I think it is justified to introduce a new type ( which I called clie_5 ) since I suspect that Sony is intentionally changing the interface spec ( As it has done so in the past ). I dare to predict that we will see more clie devices coming this year which will require this new attachment procedure. At the moment I am only aware of the UX50 and TH55 to implement that weird configuration. [ACPI] fix x86_64 mis-merge [CPUFREQ] Remove bogus newline in powernow-k7 driver. [PATCH] isofs buffer overflow fix Merged in 2.4, and various vendor kernels.. iDefense reported a buffer overflow flaw in the ISO9660 filesystem code. An attacker could create a malicious filesystem in such a way that they could gain root privileges if that filesystem is mounted. The Common Vulnerabilities and Exposures project (cve.mitre.org) has assigned the name CAN-2004-0109 to this issue. Ernie Petrides came up with the following patch which I fixed up a slight reject in to apply to 2.6. Otherwise, unchanged from the 2.4 patch. [ARM PATCH] 1810/1: Support for non-PXA XScale UARTs Patch from Deepak Saxena Supersedes 1809/1 [PATCH] ppc64 signal frame issue Fix a corruption bug, we were copying too much information back off the signal frame. While in the area help with gccs sign extension optimisation problems and convert some things to long. (Saves about 30 instructions in signal.c) [PATCH] large cpumask fix The RCU code was missing cpus_empty() in one place, required with large cpumasks. [PNPBIOS] parse asci text name This patch fixes the unknown tag warning by adding support for the asci text tag. [PNP] minor resource management fixes This patch fixes a bug in pnp_auto_config_dev in which it wouldn't always report allocation failures. It also corrects the return codes. [PNP] sysfs entry "resource" fix This patch ensures the proper count is returned in pnp_set_current_resources. [PNPBIOS] blacklist asus P4P800 The ASUS p4p800 motherboard's BIOS has a broken PnPBIOS implementation. This patch will disable PnPBIOS support if this hardware is detected by DMI. [PNPBIOS] avoid making potentially broken calls in proc.c This patch prevents /proc/bus/pnp/devices from requesting on-boot node information. Dynamic information is used instead. [ISAPNP] MEM32 fix in read resources Corrects isapnp_read_resources so that it gets MEM32 information properly. [ARM] Fix __do_softirq breakage. [ARM] Use #defined constants for handle_mm_fault and __do_page_fault. [PATCH] I2C: Fix voltage rounding in asb100 This one line patch fixes voltage rounding in the asb100 chip driver. It's very similar to a patch I submitted for the lm80 a few days ago. [PATCH] kbuild: fix modules_install The directory .tmp_versions/ was deleted during make vmlinux. This eliminated the list of modules used for moudles_install. The effect was that the following scenario failed: make make install make modules_install The solution is to only cleanup .tmp_versions when building modules. [CPUFREQ] Add a module parameter to force ACPI to be used. Fix misc. minor memory leaks in error paths [CPUFREQ] Make powernow-k7 acpi debug output a little less verbose. [CPUFREQ] powernow-k7 ACPI->PST values were a factor of 10 off. As much as I like the idea of a 13GHz laptop, setting it to 1.3GHz is probably for the best for the time being. [CPUFREQ] clear defaults before powernow-k7 acpi fallback Decoding the legacy tables may have set these values. [PATCH] USB: fix CAN-2004-0075 Okay, now while we are at fixing security holes, is there any chance we can _finally_ get the attached patch in? The Vicam USB driver in all Linux Kernels 2.6 mainline 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. Already ACKed by Greg. Only complaint was inproper coding style which is done with attached patch ;) ciao, Marc free cifs read buffer on retry [PATCH] yenta: interrupt routing for TI briges Some TI cardbus bridges found in notebooks and PCI add-on cards are uninitialized. This means the interrupt mode and the interrupt routing is wrong in most cases, ending up in non working PCI interrupts. This makes the TI Yenta driver probe the PCI interrupt and adjust the interrupt setting if no interrupts are delivered. It's done in a safe way, that doesn't hurt working setups. Function 1 on two slot devices is handled differently from function 0 since both share the settings. [libata] abstract SCSI->ATA translation a bit [libata] move some PIO state init to its proper place [libata sata_promise] fix taskfile delivery cases We should only be touching the ATA shadow registers if we are doing PIO. Linux 2.6.6-rc1 [PATCH] Fix mq_notify with SIGEV_NONE notification From: Jakub Jelinek mq_notify (q, NULL) and struct sigevent ev = { .sigev_notify = SIGEV_NONE }; mq_notify (q, &ev) are not the same thing in POSIX, yet the kernel treats them the same. Only the former makes the notification available to other processes immediately, see http://www.opengroup.org/onlinepubs/007904975/functions/mq_notify.html Without the patch below, http://sources.redhat.com/ml/libc-hacker/2004-04/msg00028.html glibc test fails. I looked at mq in Solaris and they behave the same in this regard as Linux with this patch. Kernel with this patch passes both Intel POSIX testsuite (with testsuite fixes from Ulrich) and glibc mq testsuite. [PATCH] radix-tree comment fix Fix various bogons and outright lies. [PATCH] mq_open() and close_on_exec From: Chris Wright SUSv3 doesn't seem to specify one way or the other. I don't have the POSIX specs, and the old docs I have suggest that mq_open() creates an object which is to be closed upon exec. Jakub said: I think it is valid and required: http://www.opengroup.org/onlinepubs/007904975/functions/exec.html All open message queue descriptors in the calling process shall be closed, as described in mq_close() I'll add a new test for this into glibc testsuite. [PATCH] ext3: journalled quotas From: Jan Kara Journalled quota support for ext3: The patch consists of two parts - ext3 changes and changes in generic quota code. The main idea of the changes is that a transaction is always started before any operation which changes quota file and dirtifying of the quota causes its write to disk. These two changes assure that quota change is journalled into the same transaction as the file change and hence after journal replay quota is consistent with the filesystem state. As during journal replay inodes from orphan list are deleted/truncated we have to do quota_on before the replay of the orphan list - this problem is solved by additional mount options to ext3 with quota file names and format. Some changes in generic code were also needed to assure that quota structure in file is always allocated and so ordinary quota operations (like adding/deleting a block/inode) need only a few blocks from the transaction. [PATCH] Add mqueue support to x86-64 From: Andi Kleen Add POSIX mqueue support to x86-64. [PATCH] light-weight auditing framework for s390. From: Martin Schwidefsky This patch adds the TIF_SYSCALL_AUDIT option to the s390 ptrace interface. [PATCH] posix messages queues for s390. From: Martin Schwidefsky The new message queue interface needs the following patch to get it working on s390 (31-bit, 64-bit and 31-bit compat). [PATCH] ppc64: Fix possible duplicate MMU hash entries The current code has a subtle race where 2 hash PTEs can be inserted for the same virtual address for a short period of time. There should not be a stale one as the "old" one ultimately gets flushed, but the architecture specifies that having two hash PTE is illegal and can result in undefined behaviour. This patch fixes it by never clearing the _PAGE_HASHPTE bit when doing test_and_clear_{young,dirty}. That means that subsequent faults on those pages will have a bit more overhead to "discover" that the hash entry was indeed evicted. It also adds a small optisation to avoid doing the atomic operation and the hash flush in test_and_clear_dirty when the page isn't dirty or when setting write protect while it's already set. [PATCH] ppc64: update g5_defconfig This adds IOMMU support & IOMU virtual merging to the default g5 config. This will not impair performances of machines that don't need the iommu (the kernel will only enable it if you have more than 2Gb of RAM, though you can explicitely enable it using a command line argument). [PATCH] fix 4k irqstacks on x86 (and add voyager support) There's a bug in the x86 code in that it sets the boot CPU to zero. This isn't correct since some subarch's use physically indexed CPUs. However, subarchs have either set the boot cpu before irq_INIT() (or just inherited the default zero from INIT_THREAD_INFO()), so it's safe to believe current_thread_info()->cpu about the boot cpu. [PATCH] USB: Fix vicam debug compile, fix user access The last copy_from_user patch to the vicam driver broke compilation with VICAM_DEBUG on. There is also another copy_from_user missing in case VIDIOCSPICT. This fixes both issues. [PATCH] fix non-PC subarchs which were broken by i386 probe_roms change The author apparently didn't understand that only the mach-default include directory is included by fallback for header files only. You can't stick a .c file in mach-default and expect all subarchs to be able to use it. The correct fix is to put std_resources.c in the kernel directory and give it its own Kconfig symbol for conditional compile so that subarchs may choose to include it or not. [PATCH] Amiga Zorro8390 Ethernet section conflict Jeff Garzik notes that the previous cleanup highlights a bug: > > static const struct card_info { > zorro_id id; > const char *name; > unsigned int offset; > } cards[] __initdata = { > > and the lone user is __devinit: > > static int __devinit zorro8390_init_one(struct zorro_dev *z, > const struct zorro_device_id *ent) Here's the fix.. Fix major page leak in read code caused by extra page_cache_get call check permission locally for servers that do not support the CIFS Unix Extensions (allowing file_mode and dir_mode to augment the server permission check, by doing local vfs_permission check) [E1000]: e1000.h needs dma-mapping.h [IXGB]: ixgb.h needs dma-mapping.h [PATCH] NMI watchdog Pentium M support This adda nmi_watchdog=2 support to the Pentium M processor. The P-M is a P6 chip, but it shares some chipset logic with the Pentium 4, so it requires this workaround to function. Without this patch, NMI gets stuck after 1 count. With it, the NMI fires and breaks me out of UHCI-related hard lockups. This patch is basically a modified version of the same patch for oprofile. See the threaded discussion here: http://lkml.org/lkml/2004/2/12/181 [PATCH] ppc64: catch branch to 0 in real mode We have been debugging some strange fails where we branch to 0 in real mode. At the moment this results in the cpu running through the initialisation code and failing somewhere well into it. The following patch uses the featuring nop'ing code to remove the branch at real address 0 so it falls through to a trap instruction and gets caught early. [PATCH] ppc64: always initialise dn->type and dn->name This fix comes from ppc32. Always initialise dn->type and dn->name so that code doesnt have to check for NULL everywhere. There is at least one bug report where we oopsed because of this. [PATCH] ppc64: Fix RTAS races on pSeries The low level kernel interface to RTAS (the firmware runtime services) was plagued with races that could cause from bogus results of RTAS operations to total machine crashes in some circumstances. This patch fix the ones I could identify, hoping I didn't miss any. I also added a WARN_ON (well, it's asm equivalent) to enter_rtas to make sure we never _ever_ try to call that with interrupts enabled. [ARM] Add --no-undefined to linker command line. Many binutils versions over the last year appear to silently build assembler files with undefined constants, and able to successfully create executables from such files. The assembler appears to add undefined symbols to the symbol table without any corresponding relocation information. Obviously this is bad news since the resulting executable may not be what the programmer intended. Work around the problem by forcing the linker to fail if there are any undefined symbols in the final object(s). [CPUFREQ] Not all powernow-K7 BIOS's put the frequency at MAX at POST. Remove 64 bit compiler warning [PATCH] amd8111e retval fix drivers/net/amd8111e.c: In function `amd8111e_vlan_rx': drivers/net/amd8111e.c:677: warning: control reaches end of non-void function [netdrvr via-rhine] Fix MII phy scanning Noticed by Roger Luethi, via-rhine maintainer. [PATCH] pcnet32 transmit performance fix When the pcnet32 adapter is installed in a system with long PCI latency and the read burst bit is not set, performance on transmission is very low (under 20Mbit on a 100Mbit link). This patch against 2.6.6-rc1 will make sure that read and write bursts are enabled. Tested on ppc64 and ia32. [SPARC64]: Fix branch prediction in switch_to(). [PATCH] ia64: fpswa_interface needs to be exported efivars can be built as a module, but it depends on 'fpswa_interface' which is not exported by fpswa.c. Patch below fixes this problem. [NET]: Do lazy gettimeofday for network packets. [ARM] Remove needless export of __do_softirq() [IPV6]: Limit network triggerable printks. [NET]: Add some sparse annotations to network driver stack. [ARM] Update mach-types file. [ARM] Add __user address space identifiers for sparse. [BRIDGE]: Include file cleanup. Cleanup some of the include file's in the bridge code. * if_bridge.h defines net_bridge, but not needed as part of the API. * get rid of places that include if_bridge.h and uaccess.h but don't actually do API work. [BRIDGE]: Fix rmmod race. Fix observed race between removing bridge module and ip packets in flight. Need to remove the hook last, after all bridges are gone not the other way around. [BRIDGE]: Make use of jiffies_to_clock. [BRIDGE]: Use ethtool to get port speed. The bridge code needs to keep track of a cost estimate for each port in the bridge. Instead of a hack based on device name, try and use ethtool to get port speed from device. This has been tested on e100 (uses ethtool_ops) and e1000 (does ethtool the hard way) and dummy (no ethtool). Need to export dev_ethtool() to allow bridge module to get to it easily. Code takes care to maintain same locking and semantics as if ioctl was being done from application. [BRIDGE]: Multicast address as const. [BRIDGE]: Forwarding database changes. Make forwarding database more robust. + Don't insert invalid ether address, + Report errors back so adding an interface to bridge can fail + get rid of unneeded explicit pads in data structure + replace bitfields with byte's for simple booleans. [BRIDGE]: STP unsigned fields. Use correct types for fields related to spanning tree protocols. * costs are 32 bit unsigned * ports are 16 bit unsigned * booleans are bytes rather than bitfield * arrange for better packing [BRIDGE]: Support lots of 1k ports. Support >256 ports on a bridge. Use the suggestion of reducing the number of bits of priority and increasing the number of bits for port number. Easy to increase to even larger if necessary. [BRIDGE]: FDB cache alloc. Since forwarding database gets a lot of memory alloc/free on a busy bridge, use kmem_cache_alloc to provide cache and better stats. [BRIDGE]: Replace CLEAR_BITMAP with memset. [PATCH] remount: fs/sysv fixes - several variants of sysv fs are supported only r/o. Driver does force r/o on mount, but doesn't do anything on remount. As the result, one can remount them r/w and results are Not Pretty(tm). Missing checks added, code cleaned up. - we had double-brelse() in v7fs - if sanity checks on root inode will succeed, but allocation of root dentry fails, we brelse() the same buffer_head twice. Fixed. [PATCH] remount: fs/udf fixes - same problem as with sysv - mount-time checks for fs being good for writing are absent on remount. Check added. [PATCH] remount: fs/openpromfs - we should force noatime both on mount and remount. Fixed. [PATCH] remount: fs/jffs2 - jff2->remount_fs() was buggy - it played with sb->s_flags instead of doing modifications to *flags (->s_flags will be overwritten using *flags right after the call of ->remount_fs()). Moreover, it tried to do the wrong thing - it should just enforce noatime and be done with that. Fixed, ACKed by maintainer. [PATCH] remount: forced-ro filesystems - a bunch of r/o filesystems did force MS_RDONLY on mount but forgot to do the same on remount. Fixed. [PATCH] remount: forced-nodiratime filesystems - a bunch of filesystems force MS_NODIRATIME on mount but forgot to do the same on remount. Fixed. [PATCH] remount: mount flags filtering - we could pass MS_ACTIVE in mount flags and it would be passed into ->get_sb(), leading to interesting failure modes. This flag is only for internal use (it's set once fill_super is complete and reset before the inode eviction on umount); made sure that we never get tricked into having it set it too early. [SPARC64]: Fix binfmt_elf32.c warning by redefining TASK_SIZE. [IRDA]: Convert vlsi_ir /proc/driver to seq_file. From Stephen Hemminger. [IRDA]: Fix handling of RD:RSP to be spec compliant From Martin Diehl. [IRDA]: Get rid of local CRC table in donauboe. From Stephen Hemminger. [IRDA]: Fix namespace pollution of print_ret_code. From Stephen Hemminger. [IRDA]: Rename handle_filter_request to irlan_filter_request. From Stephen Hemminger. [IRDA]: irlan_common cleanup. Minor type changes in irlan_common for clarity: - use const - init and exit can be static - use skb_queue_purge to flush queue - get rid of noisy old comment From Stephen Hemminger. [IRDA]: irlan_eth cleanup. Use IrTTP flow control to stop/wake netif From Stephen Hemminger. Change irlan_eth device initialization: *bug* address never set in DIRECT mode because access not set in alloc_netdev -> irlan_eth_setup path + make eth_XXX handles static and provide alloc_irlandev hook + use netdev_priv (and get rid of truly impossible ASSERT's) + use skb_queue_purge [IRDA]: Replace sleep_on with wait_event From Stephen Hemminger. [IPV6]: Use IANA icmpv6 type for MLDv2 report. [IPV6]: Fix IPSEC AH typo. [IPV6]: Fix OOPS in udp6 with extension headers using ancillary data. [NET]: Fix lapbether bad scheduling while atomic. Bring up/down network devices with lapbether causes scheduling while atomic (if preempt enabled). The calls to rcu_read_lock are unnecessary since lapb_device_event is called from notifier with the rtnetlink semaphore held, it is already protected from the labp_devices list changing. [PATCH] ide-probe.c: SanDisk is flash From: Meelis Roos This is self-explanatory - former SunDisk renamed itself to SanDisk and now there are flash disks with both names. [PATCH] Fix edd driver dereferencing before pointer checks. Lots of occurences of the same bug.. [PATCH] Fix mprotect bogus check. If we want to trap NULL vma's, we'd better be sure that we don't dereference it first.. [BRIDGE]: br_fdb.c needs init.h [PATCH] Fix typo in the openpromfs remount patch The just merged openpromfs remount patch contains a silly typo in the field of the super_operations structure. Fixed like this. Make sock_no_{get|set}opt() use the proper __user annotation Add sparse __safe annotation [ACPI] enable 440GX PIRQ router workaround [IPV6]: Fix esp6.c typo in LIMIT_NETDEBUG changes. [PCMCIA] Conversion to module_param Patch from: Pavel Roskin As it turns out, mixing MODULE_PARM and module_param in one module is wrong. The parameters specified in module_param are ignored. I've just posted a patch to LKML that will detect this condition and warn about it. The new debugging code used the new-style module_param, which means that all instances of MODULE_PARM should be converted. The attached patch does that. An additional bonus is that module_param_array provides the number of array elements. This allowed me to change tcic.c and i82365.c to use this number for IRQ list. This change was tested with i82365. If "irq_list" is not specified, irq_list_count is 0. I set all permissions to 0444 to be safe. I think we have no secrets from the users regarding those parameters. If some parameters can be changed safely at the runtime, the permissions could be changed to 0644. I didn't examine how safe (and how useful) it would be, so it's 0444 for now. [SERIAL] Remove check_region() [SERIAL] Use module_param/module_param_array Update serial to use new module parameters rather than MODULE_PARM. [ARM] Add detailed documentation concerning ARM page tables This adds detailed documentation concerning how we map the Linux page table structure onto the hardware tables on ARM. In addition, it also adds documentation describing how we emulate the "dirty" and "young" or "accessed" page table bits. This should be of interest to Linux MM developers. [PATCH] Fix exec in multithreaded application The recent controlling terminal changes broke exec from multithreaded application because de_thread was not upgraded to new arrangement. I know that I should not have LD_PRELOAD library which automatically creates one thread, but it looked like a cool solution to the problem I had. de_thread must initialize the controlling terminal information in the new thread group. [PATCH] dm: Fix 64/32 bit ioctl problems. From: Kevin Corry Fix 64/32 bit ioctl problems. [PATCH] dm: Check the uptodate flag in sub-bios to see if there was an error. From: Kevin Corry Check the uptodate flag in sub-bios to see if there was an error. [Mike Christie] [PATCH] dm: Handle interrupts within suspend. From: Kevin Corry Handle interrupts within suspend. [PATCH] dm: Use wake_up() rather than wake_up_interruptible() From: Kevin Corry dm.c: Use wake_up() rather than wake_up_interruptible() with the eventq. [PATCH] dm: Log an error if the target has unknown target type, or zero length. From: Kevin Corry Log an error if the target has unknown target type, or zero length. [PATCH] dm: Correctly align the dm_target_spec structures during retrieve_status(). From: Kevin Corry Correctly align the dm_target_spec structures during retrieve_status(). [PATCH] dm: fix a comment From: Kevin Corry Clarify the comment regarding the "next" field in struct dm_target_spec. The "next" field has different behavior if you're performing a DM_TABLE_STATUS command than it does if you're performing a DM_TABLE_LOAD command. See populate_table() and retrieve_status() in drivers/md/dm-ioctl.c for more details on how this field is used. [PATCH] dm: avoid ioctl buffer overrun From: Kevin Corry dm-ioctl.c::retrieve_status(): Prevent overrunning the ioctl buffer by making sure we don't call the target status routine with a buffer size limit of zero. [Kevin Corry, Alasdair Kergon] [PATCH] dm: Use an EMIT macro in the status function. From: Kevin Corry Striped: Use an EMIT macro in the status function. [PATCH] kNFSdv4: nfsd4_readdir fixes From: NeilBrown From: "J. Bruce Fields" Fix out-of-spec errors in nfs4 readdir. Add checks for bad cookie values. (plus compile fix from akpm) [PATCH] kNFSdv4: Fix bad error returm from svcauth_gss_accept From: NeilBrown From: "J. Bruce Fields" Error return when the client supplies a bad service should be badcred. [PATCH] kNFSdv4: Keep state to allow replays for 'close' to work. From: NeilBrown From: "J. Bruce Fields" From: Andros: Idea is to keep around a list of openowners recently released by closes, and make sure they stay around long enough so that replays still work. [PATCH] kNFSdv4: Allow locku replays aswell From: NeilBrown From: "J. Bruce Fields" From: Andros: locku replies should be saved for possible replay as well. [PATCH] kNFSdv4: Improve how locking copes with replays From: NeilBrown From: "J. Bruce Fields" From: Andros: Hold state_lock longer so the stateowner doesn't diseappear out from under us before we get the chance to encode the replay. Don't attempt to save replay if we failed to find a stateowner. [PATCH] kNFSdv4: Set credentials properly when puutrootfh is used From: NeilBrown The credentials (uid/gid) of a process are set when a filehandle is verified. Nfsv4 allows requests without an explicit filehandle (instead, an implicit 'root' filehandle) so we much make sure the credentials are set for these requests too. From: "J. Bruce Fields" From: Andros: added a call to nfsd_setuser in nfsd4_putrootfh so that nfsd runs as the rpc->cred user. [PATCH] kNFSdv4: Implement server-side reboot recovery (mostly) From: NeilBrown From: "J. Bruce Fields" From: Andros: Implement server-side reboot recovery (server now handles open and lock reclaims). Not completely to spec: we don't yet store the state in stable storage that would be required to recover correctly in certain situations. [PATCH] kill submit_{bh,bio} return value From: Jeff Garzik Nobody ever checks the return value of submit_bh(), and submit_bh() is the only caller that checks the submit_bio() return value. This changes the kernel I/O submission path -- a fast path -- so this cleanup is also a microoptimization. [PATCH] PCI MSI Kconfig consolidation From: Bjorn Helgaas This consolidates the PCI MSI configuration into drivers/pci/Kconfig, removing it from the i386, x86_64, and ia64 Kconfig. It also changes the default for ia64 from "y" to "n". The default on i386 is "n" already, and I'm not sure why ia64 should be different. [PATCH] remove buffer_error() From: Jeff Garzik It was debug code, no longer required. [PATCH] Fix mq 32-bit compatibility From: Jakub Jelinek The first change removes just a useless put_user (si_int and si_ptr are part of the same union, si_ptr is on all arches covering whole union), the rest is fixes for signal handling of SI_MESGQ. [PATCH] ppc64: hugepage cleanup From: David Gibson This is a small cleanup to the PPC64 hugepage code. It removes an unhelpful function, removing some studlyCaps in the process. It was originally this way to match the normal page path, but that has all been rewritten since. [PATCH] Add "commit=0" to reiserfs From: Bart Samwel Add support for value 0 to the commit option of reiserfs. Means "restore to the default value". For the maximum commit age, this default value is normally read from the journal; this patch adds an extra variable to cache the default value for the maximum commit age. [PATCH] reiserfs: fsync() speedup From: Chris Mason Updates the reiserfs-logging improvements to use schedule_timeout instead of yield when letting the transaction grow a little before forcing a commit for fsync/O_SYNC/O_DIRECT. Also, when one process forces a transaction to end and plans on doing the commit (like fsync), it sets a flag on the transaction so the journal code knows not to bother kicking the journal work queue. queue_delayed_work is used so that if we get a bunch of tiny transactions ended quickly, we aren't constantly kicking the work queue. These significantly improve reiserfs performance during fsync heavy workloads. [PATCH] reiserfs: remove final sleep_on From: Chris Mason Get rid of the last sleep_on in the reiserfs code [PATCH] floppy98.c build fixes From: "Randy.Dunlap" floppy98.c (along with other PC-9800 files) has not been updated lately. It won't build currently (2.6.5). This patch makes floppy98 build cleanly. [PATCH] ipmi build fix From: Geert Uytterhoeven While compiling drivers/char/ipmi/ipmi_si_intf.c in 2.6.6-rc1 on m68k, I noticed a missing include (needed for disable_irq_nosync() and enable_irq()) [PATCH] ppc64: yet another hugepage cleanup From: David Gibson Trivial cleanup to flush_hash_hugepage() in the ppc64 hugepage code. [PATCH] Fix bogus get_page() calls in hugepage code From: David Gibson Some versions of follow_huge_addr() and follow_huge_pmd() are doing a get_page() on the target page. They shouldn't: follow_page() returns an unpinned page and it is the caller's responsibility to pin the page (if desired) before dropping page_table_lock. [PATCH] mqueue permission fix From: Manfred Spraul Any user can delete any entries in a mqueue mounted filesystem. The attached patch prevents that. - remove the writable test from mq_unlink. - set the sticky bit in the root inode. This affects both mq_unlink and sys_unlink: only the owner (and root) should be allowed to remove queues. [PATCH] aty128fb dereference before null check From: Dave Jones [PATCH] ARM-related ptep_to_address() fix From: William Lee Irwin III rmk mentioned that ARM was borked as the relation, assumed by generic rmap, PTRS_PER_PTE*sizeof(pte_t) == PAGE_SIZE, fails to hold. The following patch, developed jointly with him (or depending on POV, by him with me acting as codemonkey), is reported to resolve the issue. Specifically, while ARM dedicates an entire PAGE_SIZE -sized block of memory to each PTE table, the PTE table itself only spans half that, the remainder being dedicated to hardware-interpreted structures. As the hardware structure must be contiguous, wider ptes can't be used. So the core-visible PTE table only spans PAGE_SIZE/2 bytes, violating the assumption. This corrects masking and scaling done in ptep_to_address(). [PATCH] Remove unused 'kobject' from superblock The field in question is a) unused b) damn next to impossible to use correctly, due to struct super_block lifetime and locking rules. [PATCH] Fix vma corruption It occurred to me that if vma and new_vma are one and the same, then vma_relink_file will not do a good job of linking it after itself - in that pretty unlikely case when move_page_tables fails. And more generally, whenever copy_vma's vma_merge succeeds, we have no guarantee that old vma comes before new_vma in the i_mmap lists, as we need to satisfy Rajesh's point: that ordering is only guaranteed in the newly allocated case. We have to abandon the ordering method when/if we move from lists to prio_trees, so this patch switches to the less glamorous use of i_shared_sem exclusion, as in my prio_tree mremap. Allow non-LFS sendfile to work on LFS files. But obviously only if we're not passing in any offset pointer. This is how 2.4.x worked, and vsftpd relies on it. Bug reported by Chris < chris@scary.beasts.org> [PATCH] ppc64: Fix CPU hot unplug deadlock From: Benjamin Herrenschmidt My RTAS locking fixes incorrectly added a spinlock around the function used to stop a CPU, that function never returns, thus the lock becomes stale. The correct fix is to disable interrupts instead (the RTAS params beeing per-CPU, this should be safe enough) [PATCH] Fix unix module From: Rusty Russell # lsmod Module Size Used by 1 26060 6 # The compiler #define's unix to 1: we use -DKBUILD_MODNAME=unix. We used to #undef unix at the top of af_unix.c, but now the name is inserted by modpost, that doesn't help. #undef unix in modpost.c's generated C file. [PATCH] Oprofilefs cant handle > 99 cpus From: Anton Blanchard Oprofilefs cant handle > 99 cpus. This should fix it. [PATCH] rmap: flush_dcache revisited From: Hugh Dickins One of the callers of flush_dcache_page is do_generic_mapping_read, where file is read without i_sem and without page lock: concurrent truncation may at any moment remove page from cache, NULLing ->mapping, making flush_dcache_page liable to oops. Put result of page_mapping in a local variable and apply mapping_mapped to that (if we were to check for NULL within mapping_mapped, it's unclear whether to say yes or no). parisc and arm do have other locking unsafety in their i_mmap(_shared) searching, but that's a larger issue to be dealt with down the line. [PATCH] rmap: swap_unplug page From: Hugh Dickins Good example of "swapper_space considered harmful": swap_unplug_io_fn was originally designed for calling via swapper_space.backing_dev_info; but that way it loses track of which device is to be unplugged, so had to unplug all swap devices. But now sync_page tests SwapCache anyway, can call swap_unplug_io_fn with page, which leads direct to the device. Reverted -mc4's CONFIG_SWAP=n fix, just add another NOTHING for it. Reverted -mc3's editorial adjustments to swap_backing_dev_info and swapper_space initializations: they document the few fields which are actually used now, as comment above them says (sound of slapped wrist). [PATCH] rmap: nonlinear truncation From: Hugh Dickins The earlier changes introducing PageAnon left truncated pages mapped into nonlinear vmas unswappable. Once we go to object-based rmap, it's impossible to find where file page is mapped once page->mapping cleared: switching them to anonymous is odd, and breaks strict commit accounting. So now handle truncation of nonlinear vmas correctly. And factor in Daniel's cluster filesystem needs while we're there: when invalidating local cache, we do want to unmap shared pages from all mms, but we do not want to discard private COWed modifications of those pages (which truncation discards to satisfy the SIGBUS semantics demanded by specs). Drew from Daniel's patch (LKML 2 Mar 04), but didn't always follow it; fewer name changes, but still some - "unmap" rather than "invalidate". zap_page_range is not exported, safe to give it and all the too-many layers an extra zap_details arg, in normal cases just NULL. Given details, zap_pte_range checks page mapping or index to skip anon or untruncated pages. I didn't realize before implementing, that in nonlinear case, it should set a file pte when truncating - otherwise linear pages might appear in place of SIGBUS. I suspect this implies that ->populate functions ought to set file ptes beyond EOF instead of failing, but haven't changed them as yet. To avoid making yet another copy of that ugly linear pgidx test, added inline function linear_page_index (to pagemap.h to get PAGE_CACHE_SIZE, though as usual things don't really work if it differs from PAGE_SIZE). Ooh, I thought I'd removed ___add_to_page_cache last time, do so now. unmap_page_range static, shift its hugepage check up into sole caller unmap_vmas. Killed "killme" debug from unmap_vmas, not seen it trigger. unmap_mapping_range is exported without restriction: I'm one of those who believe it should be generally available. But I'm wrongly placed to decide that, probably just sob quietly to myself if _GPL added later. [PATCH] jbd: journal_dirty_metadata locking speedup Reduce the locking coverage of the oft-used j_list_lock: the per-bh jbd_lock_bh_state() gives us sufficient locking of buffer_head and journal_head internals. [PATCH] Print warning for common symbols in modules From: Rusty Russell People still build modules wrong, particularly without -fno-common. The resulting modules don't load, but we should at least warn about it. [PATCH] set_anon_super locking fix Take the idr's lock while removing an element on the error path. Spotted by Nathan Lynch . [PATCH] Fix laptop mode writeback triggered by hdparm -y. From: Bart Samwel Currently, an `hdparm -Y' can trigger a sync in laptop mode. We should only count fs-originated requests as being "disk activity". [PATCH] fix visws build From: Andrey Panin this small patch fixes visws build error in 2.6.5. [PATCH] Amiga A2065 Ethernet debug Amiga A2065 Ethernet: Add missing variable in debug code [PATCH] Amiga Ariadne Ethernet KERN_* Amiga Ariadne Ethernet: Add KERN_* prefixes to printk() messages [PATCH] Amiga Hydra Ethernet KERN_* Amiga Hydra Ethernet: Add KERN_* prefixes to printk() messages [PATCH] Amiga Zorro8390 Ethernet KERN_* Amiga Zorro8390 Ethernet: Add KERN_* prefixes to printk() messages Fix permission problem on include/video/neomagic.h [ARM] Clean up ARM includes This removes a number of unnecessary includes from the ARM specific files throughout the kernel. Most notably asm/pgalloc.h is needlessly included in several places. There were some places including it as a means to get at the cache flushing functions, so this has been corrected. [PATCH] Fix typo in previous patch This is my brown paper bag day, I sent you the wrong patch for fixing the deadlock in rtas.c, here's one to apply on top of current bk that fixes build. [CPUFREQ] Fix debug build of powernow-k8 From Paul Devriendt [CPUFREQ] Fix up missing CONFIG_X86_POWERNOW_K8_ACPI We don't need this, we can infer from CONFIG_ACPI_PROCESSOR [CPUFREQ] Fix broken cast. This breaks on x86-64 with the following warning. drivers/cpufreq/cpufreq_userspace.c: In function `cpufreq_procctl': drivers/cpufreq/cpufreq_userspace.c:170: warning: cast from pointer to integer of different size drivers/cpufreq/cpufreq_userspace.c: In function `cpufreq_sysctl': drivers/cpufreq/cpufreq_userspace.c:208: warning: cast from pointer to integer of different size [PATCH] mace register_netdev printk small cosmetic fix for powermac mace network driver. eth%d: MACE at 00:05:02:f4:1b:1d, chip revision 25.64 vs. eth0: MACE at 00:05:02:f4:1b:1d, chip revision 25.64 [PATCH] 3c509 oops fix If __ISAPNP__ and CONFIG_X86_PC9800 are not set, we forget to link the device into the global chain and el3_init_module dereferences NULL. [wireless orinoco] Remove bogus !dev check Caught by Stanford checker. [PATCH] wan sdla: fix probable security hole > [BUG] minor > /home/kash/linux/linux-2.6.5/drivers/net/wan/sdla.c:1206:sdla_xfer: > ERROR:TAINT: 1201:1206:Passing unbounded user value "(mem).len" as arg 0 > to function "kmalloc", which uses it unsafely in model > [SOURCE_MODEL=(lib,copy_from_user,user,taintscalar)] > [SINK_MODEL=(lib,kmalloc,user,trustingsink)] [MINOR] [PATH=] [Also > used at, line 1219 in argument 0 to function "kmalloc"] > static int sdla_xfer(struct net_device *dev, struct sdla_mem *info, int > read) > { > struct sdla_mem mem; > char *temp; > > Start ---> > if(copy_from_user(&mem, info, sizeof(mem))) > return -EFAULT; > > if (read) > { > Error ---> > temp = kmalloc(mem.len, GFP_KERNEL); > if (!temp) > return(-ENOMEM); > sdla_read(dev, mem.addr, temp, mem.len); Hrm, I believe you could use this to read 128k of kernel memory. sdla_read() takes len as a short, whereas mem.len is an int. So, if mem.len == 0x20000, the allocation could still succeed. When cast to short, len will be 0x0, causing the read loop to copy nothing into the buffer. At least it's protected by a capable() check. I don't know what proper upper bound is for this hardware, or how much it's used/cared about. Simple memset() is trivial fix. [PATCH] remove redundant check in de2104x ->get_regs() Trivial patchlet...ethtool core already caps regs.len at a max of ->get_regs_len(): reglen = ops->get_regs_len(dev); if (regs.len > reglen) regs.len = reglen; So doing the same in the in de2104x driver ->get_regs() is redundant. Patch below simply removes it to clarify the guarantee of the API. [hamradio baycom] Remove bogus check in interrupt handler Tangentially noticed by Stanford checker. [netdrvr rcpci] Remove bogus check in ->remove handler [netdrvr r8169] remove driver-local DMA_xxBIT_MASK definitions They are now upstream, we don't need driver-local ones anymore. [PATCH] fix warning in drivers/net/tulip/timer.c I get the following warning in 2.6.5-mm6 and 2.6.6-rc1: <-- snip --> ... CC drivers/net/tulip/timer.o drivers/net/tulip/timer.c: In function `comet_timer': drivers/net/tulip/timer.c:156: warning: unused variable `ioaddr' ... <-- snip --> Since the [netdrvr tulip] add MII support for Comet chips patch has removed the only use of this variable, the fix is simple: [PATCH] e1000: fix probable security hole * Ken Ashcraft (ken@coverity.com) wrote: > [BUG] > /home/kash/linux/linux-2.6.5/drivers/net/e1000/e1000_ethtool.c:1494:e1000_ethtool_ioctl: ERROR:TAINT: 1487:1494:Passing unbounded user value "(regs).len" as arg 2 to function "copy_to_user", which uses it unsafely in model [SOURCE_MODEL=(lib,copy_from_user,user,taintscalar)] [SINK_MODEL=(lib,copy_to_user,user,trustingsink)] [PATH=] > } > case ETHTOOL_GREGS: { > struct ethtool_regs regs = {ETHTOOL_GREGS}; > uint32_t regs_buff[E1000_REGS_LEN]; > > Start ---> > if(copy_from_user(®s, addr, sizeof(regs))) > return -EFAULT; > e1000_ethtool_gregs(adapter, ®s, regs_buff); > if(copy_to_user(addr, ®s, sizeof(regs))) > return -EFAULT; > > addr += offsetof(struct ethtool_regs, data); > Error ---> > if(copy_to_user(addr, regs_buff, regs.len)) > return -EFAULT; > > return 0; Looks like a bug. Possible patch below zeros the buffer (since it's not filled completely by e1000_ethtool_gregs()), and truncates len. [PATCH] Mixed PCI/ISA device name conflicts In systems with mixed network cards, and all drivers compiled into the kernel; the PCI device (eth0) will get probed first, before the ISA. The problem is that the ISA device can mistakenly try to probe for eth0. The problem is that the ISA driver will not detect the failure until it goes to call register_netdevice, and not all drivers have perfect error unwind code. This patch short circuits the device probe, so it won't bother looking for devices that already are registered. [PATCH] fix arm/etherh.c On Tue, Apr 13, 2004 at 02:35:40PM -0400, Jeff Garzik wrote: > Russell, > > Would you be willing to provide an updated diff of this? I didn't particularly like the PRIV() method implemented previously - gcc appears to want to avoid some optimisations it if its an inline function rather than a macro. Also, 'ei_local' may look unused in some functions, but it's your typical hidden-use-in-a-macro crap which 8390 likes. [PATCH] Fix hw_random build on ia64 The following patch allows hw_random.c to build on ia64. (The problem was just that the VIA stuff has i386 assembly in it. The current code only probes for VIA on i386 anyway, so this patch just adds more ifdefs so the VIA code is only built for i386.) [PATCH] airo: Fix suspend support [PATCH] remove 8139too ring size option. On Wed, 31 Mar 2004 15:05:16 -0500 Jeff Garzik wrote: > I really should remove the ability to configure 8139_RXBUF_IDX=3. [PATCH] pcnet32.c add support for 79C976 Please apply the following patch to 2.6.5-rc2-bk9 and 2.4.26-rc1 to include support for the 79C976. Tested on IA32. [PATCH] Call SET_NETDEV_DEV() in a bunch of net drivers Used for sysfs support. [PATCH] missing s/dev->priv/netdev_priv(dev) in drivers/net/pcmcia/ On Wednesday 24 March 2004 23:25, Jeff Garzik wrote: > Daniel Ritz wrote: > > clean up the last two instances of dev->priv in drivers/net/pcmcia. > > against 2.6.5-rc2-bk. > > > > --- 1.27/drivers/net/pcmcia/3c589_cs.c Wed Mar 3 01:03:51 2004 > > +++ edited/drivers/net/pcmcia/3c589_cs.c Wed Mar 24 22:29:35 2004 > > @@ -716,7 +716,7 @@ > > "status %4.4x.\n", dev->name, (long)skb->len, > > inw(ioaddr + EL3_STATUS)); > > > > - ((struct el3_private *)dev->priv)->stats.tx_bytes += skb->len; > > + ((struct el3_private *)netdev_priv(dev))->stats.tx_bytes += skb->len; > > > > /* Put out the doubleword header... */ > > outw(skb->len, ioaddr + TX_FIFO); > > --- 1.24/drivers/net/pcmcia/ibmtr_cs.c Wed Mar 3 01:06:03 2004 > > +++ edited/drivers/net/pcmcia/ibmtr_cs.c Wed Mar 24 22:29:51 2004 > > @@ -444,7 +444,7 @@ > > link->state &= ~DEV_PRESENT; > > if (link->state & DEV_CONFIG) { > > /* set flag to bypass normal interrupt code */ > > - ((struct tok_info *)dev->priv)->sram_virt |= 1; > > + ((struct tok_info *)netdev_priv(dev))->sram_virt |= 1; > > netif_device_detach(dev); > > ibmtr_release(link); > > > although the patch is OK, the code itself is a bit yucky. > > Can you please create a temporary variable, of struct el3_private or > tok_info type, and eliminate that cast? > > struct el3_private *priv = netdev_priv(dev); > priv->stats.tx_bytes += skb->len; > > Much nicer :) > agreed. here we go... [PATCH] Tulip endianess fix My tulip ethernet card doesn't work on Blue&White G3 PowerMac with Linux 2.6.5-rc2. The card is shown by lspci as 01:03.0 Ethernet controller: Linksys Network Everywhere Fast Ethernet 10/100 model NC100 (rev 11) The kernel detects it as "ADMtek Comet rev 17". The MAC address reported by the kernel looked obviously wrong. Also, I could only ping the system successfully if the interface was in promiscuous mode (running Ethereal). Those two symptoms indicated two different problems - one for reading the MAC address from the card on module load (tulip_init_one), and the other for writing the address to the card when the interface was brought up (tulip_up). I have fixed both, and here's the explanation: tulip_init_one: When reading the first 4 bytes of the address, inl() returns the same data to the CPU on all platforms, interpreting the data from the lowest port address as the least significant byte. In other words, I/O is little endian on all platforms; it's the memory that differs across platforms. We want to write the data to memory preserving little-endianness of the PCI bus. To force little endian write to the memory, the data should be converted to the little endian format. When reading the remaining 2 bytes, the CPU gets them in 2 least significant bytes. To write those 2 bytes to the memory in a 16-bit operation, they should be byte-swapped for the 16-bit operation. tulip_up: The first 4 bytes are processed correctly, but the code is confusing. Reading from memory needs conversion to CPU format, while writing to I/O ports doesn't. So I replaced cpu_to_le32() to le32_to_cpu(). The second 2 bytes are read in a 16-bit memory operation, so they should be passed to le16_to_cpu() rather than cpu_to_le32() to make them CPU independent and suitable for outl(). All those conversions do nothing on little-endian machines, so they should not be affected. The patch has been tested. The driver is working fine. ping is OK, ssh is OK, X11 over ssh is OK. Even netconsole is working fine. Remove "badness in remove_proc_entry" warning logged on module unload of cifs [SPARC]: Add MQ syscall support. [SCTP] Avoid the use of constant SCTP_IP_OVERHEAD to determine the max data size in a SCTP packet. Calculate the overhead based on the socket's protocol family header length. [SCTP] Cleanup sctp_packet and sctp_outq infrastructure. [SCTP] Partial Reliability Extension support. [TG3]: Fix typo in TG3_TSO_FW_RODATA_ADDR definition. [SCTP] Propagate error from sctp_proc_init. (Olaf Kirch) [ATM]: Warning fix for lec.h [NET]: Fix pc300_drv warnings. [IPV6]: Prevent IPV6=m and IP6_NF_QUEUE=y [IPSEC]: Add SPD priority for PF_KEY interface. [PATCH] ppc/ppc64: Add posix message queue syscalls From: Benjamin Herrenschmidt This patch adds the posix message queue syscalls to ppc32 and 64 and fixes our implementation of compat copy siginfo to 32 bits userland which wasn't using the si_code but still doing a switch/case on the signal number. I also reserved some syscalls for the numa API [PATCH] CPU_MASK_ALL fix From: Nick Piggin Do the typecast thing to permit CPU_MASK_ALL to be used both as an initialiser and as a normal rvalue. [PATCH] Rename PF_IOTHREAD to PF_NOFREEZE From: Nigel Cunningham A few weeks ago, Pavel and I agreed that PF_IOTHREAD should be renamed to PF_NOFREEZE. This reflects the fact that some threads so marked aren't actually used for IO while suspending, but simply shouldn't be frozen. This patch, against 2.6.5 vanilla, applies that change. In the refrigerator calls, the actual value doesn't matter (so long as it's non-zero) and it makes more sense to use PF_FREEZE so I've used that. [PATCH] idr.c: extra features enhancements From: Jim Houston - Adds idr_get_new_above(), whihc permits us to do a first-fit search from a specified offset rather than always from zero. - Add IDR_INIT() DEFINE_IDR() constructors. Often idr's are singletons and having to cook up an initcall for them is a pain. This is needed by the "Increase number of dynamic inodes in procfs" patch. [PATCH] fix load_elf_binary error path on unshare_files error From: Chris Wright Make sure to return proper retval on unshare_files() error in load_elf_binary. Error noted by Kirill Korotaev . [PATCH] Increase number of dynamic inodes in procfs From: Nathan Lynch On some larger ppc64 configurations /proc/device-tree is exhausting procfs' dynamic (non-pid) inode range (16K). This patch makes the dynamic inode range 0xf0000000-0xffffffff and changes the inode number allocator to use the idr.c allocator for the first-fit allocations. [PATCH] direct-IO return type fixes From: me, Badari Pulavarty Currently a direct-IO read or write of more than 2G on 64-bit machines is broken. Replace int with ssize_t in various places to fix that up. [PATCH] Fix default value for commit interval for older reiserfs filesystems. From: Bart Samwel The reiserfs patch that adds support for "commit=0" saves the default max commit age in a variable when the fs is originally mounted, so that it can later restore it. Unfortunately it makes some mistakes with that: - The default is not saved when the original mount has a commit=NNN option. - The default is not correctly saved for older reiserfs filesystems, where the default was not stored on disk. This patch fixes these mistakes. [PATCH] From: David Gibson hugepage_vma() is both misleadingly named and unnecessary. On most archs it always returns NULL, and on IA64 the vma it returns is never used. The function's real purpose is to determine whether the address it is passed is a special hugepage address which must be looked up in hugepage pagetables, rather than being looked up in the normal pagetables (which might have specially marked hugepage PMDs or PTEs). This patch kills off hugepage_vma() and folds the logic it really needs into follow_huge_addr(). That now returns a (page *) if called on a special hugepage address, and an error encoded with ERR_PTR otherwise. This also requires tweaking the IA64 code to check that the hugepage PTE is present in follow_huge_addr() - previously this was guaranteed, since it was only called if the address was in an existing hugepage VMA, and hugepages are always prefaulted. [PATCH] h8300 stack bounds checking From: William Lee Irwin III The stack is now shared with struct thread_info on most arches, not task_t. This mostly affects get_wchan() and stack usage debug. [PATCH] m68k stack bounds checking From: William Lee Irwin III The stack is now shared with struct thread_info on most arches, not task_t. This mostly affects get_wchan() and stack usage debug. [PATCH] m68knommu stack bounds checking From: William Lee Irwin III The stack is now shared with struct thread_info on most arches, not task_t. This mostly affects get_wchan() and stack usage debug. [PATCH] ppc32 stack bounds checking From: William Lee Irwin III The stack is now shared with struct thread_info on most arches, not task_t. This mostly affects get_wchan() and stack usage debug. [PATCH] sparc32 stack bounds checking From: William Lee Irwin III The stack is now shared with struct thread_info on most arches, not task_t. This mostly affects get_wchan() and stack usage debug. [PATCH] nfs token table can be __initdata nfs token table can be __initdata [PATCH] Warn if module_param and MODULE_PARM mixed From: Rusty Russell From: Pavel Roskin If you use both module_param (new) and MODULE_PARM (obsolete) in a module, only the second gets recognised. Warn. Add in cifs fcntl handling to fix remote dnotify problem Remove unnecessary declaration of inline functions [PATCH] ide.c: split init_hwif_default() out of init_hwif_data() [PATCH] ide_init_default_hwifs() -> ide_init_default_irq() init_ide_data() initializes default IDE interfaces but without default IRQ (hwif->irq and hwif->hw.irq fields) so introduce ide_init_default_irq() and remove redundant ide_init_default_hwifs() (except arm26 and arm ones). As a side-effect it fixes: - CONFIG_BLK_DEV_HD_IDE if !CONFIG_BLK_DEV_IDEPCI (i386) - hwif->noprobe shouldn't be 0 if !hwif->io_ports[IDE_DATA_OFFSET] (alpha, i386, ia64, mips, sh, x86_64) [PATCH] generic ide_init_hwif_ports() Add generic ide_init_hwif_ports() to and remove arch specific versions except arm26, arm, h8300, i386-pc9800, m68k and m68knommu ones. [PATCH] ppc64: siginfo conversion fix My message queue patch fixes the 64 bits -> 32 bits conversion of siginfo, but didn't change the 32 -> 64 bits conversion done in sys32_rt_sigqueueinfo() which was apparently bogus as well. After much discussion & debate on the right way of converting that structure, I decided to go the sparc64 / s390 way, and not the x86_64 way, that is to copy the various unions data "as is". This guarantees that whatever a 32 bist app passes there, another 32 bits app will understand it. Crossover between 32 and 64 bits apps on such things as home-made userland siginfo isn't something we can help with anyway. The x86_64 choice of converting as if it was an RT signal, thus converting the sigval, cannot easily be applied to big endian archs since the sigval is a union of a ptr and an int, on BE, the int happens to be on the wrong half of the 64 bits ptr, thus we can't do a simple conversion. [PATCH] fix for potential deadlock after posix-timers change Ulrich has been working on the glibc code using posix-timers and stressing it more now than it has before. He ran into an SMP deadlock on process exit in the case there are pending queued signals from a timer. The deadlock arises because in the path through exit_itimers, the tasklist_lock is already held (for writing). When a timer is being deleted, sigqueue_free will try to take it (for reading) in the case where that timer has a pending signal queued on somebody's queue. This patch avoids the problem by making sure the queues are flushed before calling exit_itimers, thus ensuring its code path won't try to take tasklist_lock. [PATCH] reiserfs use-after-free fix From: Chris Mason reiserfs-delayed-work started using queue_delayed_work, but did not make sure the timer was finished before it freed the work queue structs during unmount. This leads to timer oopsen if you unmount at just the right time. [PATCH] fix madvise(MADV_DONTNEED) for nonlinear vmas From: Hugh Dickins Jamie points out that madvise(MADV_DONTNEED) should unmap pages from a nonlinear area in such a way that the nonlinear offsets are preserved if the pages do turn out to be needed later after all, instead of reverting them to linearity: needs to pass down a zap_details block. (But this still leaves mincore unaware of nonlinear vmas: bigger job.) [PATCH] pcnet32.c build fix Remove a duplicated case which recently snuck in there. [PATCH] hlist_add_after() fix From: "Pedro Emanuel M. D. Pinto" This currently-unused function is incorrectly implemented. Fix. [PATCH] remove duplicated COPYING file in fs/hfs/ From: Christoph Hellwig We don't need a copy of COPYING down in fs/hfs. Roman said he didn't mind, so.. [PATCH] MIPS: don't offer SERIAL_DZ on 64-bit DEC From: Ralf Baechle Limit the DZ driver to MIPS32 as the supported hardware is only present in R2k/R3k-based systems (unless someone sends Maciej a PMAC-A board for driver development). [PATCH] MIPS: update documentation files From: Ralf Baechle The pending changes to the MIPS doc files, more changes needed... [ARM] Add find_first_bit and find_next_bit. [PATCH] MIPS update From: Ralf Baechle - more work on resurrecting AMD Alchemy platforms - cleanup of unnecessary inclusions - update default config files - cleanup 32-bit compat ioctl code - support for Montum Jaguar ATX - workarounds for early revs of the RM9000 - fixes for RM5000 and RM7000 cache handling - add support for PMC-Sierra Yosemite eval board - further cleanup and bugfixes for SGI IP27 - make LASAT and VR41xx build and work in 2.6 - improved SGI IP32 support - plenty of small fixes [PATCH] Fix CFQ elevator problem Remove bogus assert in CFQ and remove merge hints. [SPARC64]: Fix 32-bit posix timers. Do not cache inode metadata when cache time set to 0 (fix hardlink count caching) [SPARC64]: Missing part of posix timers fix. Linux 2.6.6-rc2 [ACPI] enhance intr-src-override parsing to handle ES7000 http://bugme.osdl.org/show_bug.cgi?id=2520 ACPI] Delete IRQ2 "cascade" in ACPI IOAPIC mode no such concept exists in ACPI, frees IRQ2 for use. [XFS] use kmem_alloc for noaddr buffers SGI Modid: xfs-linux:xfs-kern:167609a [XFS] kill the pagebuf vs xfs_buf confusion SGI Modid: xfs-linux:xfs-kern:167627a [XFS] really kill the pagebuf vs xfs_buf confusion SGI Modid: xfs-linux:xfs-kern:167628a [XFS] clarify pagebuf page lookup logic SGI Modid: xfs-linux:xfs-kern:168168a [XFS] Use pgoff_t for page indices, and remove other type confusion SGI Modid: xfs-linux:xfs-kern:168484a [XFS] Fix a very hard-to-hit, small-block-size only corruption. SGI Modid: xfs-linux:xfs-kern:168987a [XFS] Fix delayed write buffer handling to use the correct list interfaces, add validity checks, remove unused code, fix comments. SGI Modid: xfs-linux:xfs-kern:169043a [XFS] Make buffer error checking consistent, add a value range check. SGI Modid: xfs-linux:xfs-kern:169542a [XFS] Return the right error code on an ACL xattr version mismatch. SGI Modid: xfs-linux:xfs-kern:169622a [XFS] Correct the (file size >= stripe unit) check inside xfs_iomap_write_delay. It was comparing the file size, in bytes, against the stripe unit size, in FSBs. (PV 911469) SGI Modid: xfs-linux:xfs-kern:169744b [XFS] Only use page->private to track page state for page cache pages SGI Modid: xfs-linux:xfs-kern:169801a [XFS] Fix some cases where we returned fill_super success, instead of failing. SGI Modid: xfs-linux:xfs-kern:169865a [XFS] Allow xfsbufd flush intervals to take immediate effect after changing the flush sysctl value. Fix from Bart Samwel. SGI Modid: xfs-linux:xfs-kern:170053a [XFS] Use USER_HZ in XFS sysctl interfaces. Fix from Bart Samwel. SGI Modid: xfs-linux:xfs-kern:170056a [XFS] Bump up age_buffer and sync_interval maxima for laptop mode. From Bart Samwel. SGI Modid: xfs-linux:xfs-kern:170057a [XFS] Fix for the xfs dir2 rebalance bug. SGI Modid: xfs-linux:xfs-kern:170221a [XFS] Fix vmtruncate abuse in the XFS setattr ATTR_SIZE operation. SGI Modid: xfs-linux:xfs-kern:170344a [XFS] cleanup pagebuf flag usage and simplify pagebuf_free. SGI Modid: xfs-linux:xfs-kern:169276a [XFS] Fix up a trivial merge botch. [PATCH] Add missing __initdata One of the stack size optimizations introduced a new static variable in a function marked with __init. But the variable is not marked appropriately and so 1k of data is never freed. [PATCH] Fix nfsroot option handling From: Trond Myklebust The following patch fixes up a number of bugs in the NFSroot parser rewrite from patchset trond.myklebust@fys.uio.no|ChangeSet|20040411182341|00938 It also ensures that NFSroot mount options are consistent with the userland "mount" program. [PATCH] compute_creds race From: Andy Lutomirski Fixes from me, Olaf Dietsche In fs/exec.c, compute_creds does: task_lock(current); if (bprm->e_uid != current->uid || bprm->e_gid != current->gid) { current->mm->dumpable = 0; if (must_not_trace_exec(current) || atomic_read(¤t->fs->count) > 1 || atomic_read(¤t->files->count) > 1 || atomic_read(¤t->sighand->count) > 1) { if(!capable(CAP_SETUID)) { bprm->e_uid = current->uid; bprm->e_gid = current->gid; } } } current->suid = current->euid = current->fsuid = bprm->e_uid; current->sgid = current->egid = current->fsgid = bprm->e_gid; task_unlock(current); security_bprm_compute_creds(bprm); I assume the task_lock is to prevent another process (on SMP or preempt) from ptracing the execing process between the check and the assignment. If that's the concern then the fact that the lock is dropped before the call to security_brpm_compute_creds means that, if security_bprm_compute_creds does anything interesting, there's a race. For my (nearly complete) caps patch, I obviously need to fix this. But I think it may be exploitable now. Suppose there are two processes, A (the malicious code) and B (which uses exec). B starts out unprivileged (A and B have, e.g., uid and euid = 500). 1. A ptraces B. 2. B calls exec on some setuid-root program. 3. in cap_bprm_set_security, B sets bprm->cap_permitted to the full set. 4. B gets to compute_creds in exec.c, calls task_lock, and does not change its uid. 5. B calls task_unlock. 6. A detaches from B (on preempt or SMP). 7. B gets to task_lock in cap_bprm_compute_creds, changes its capabilities, and returns from compute_creds into load_elf_binary. 8. load_elf_binary calls create_elf_tables (line 852 in 2.6.5-mm1), which calls cap_bprm_secureexec (through LSM), which returns false (!). 9. exec finishes. The setuid program is now running with uid=euid=500 but full permitted capabilities. There are two (or three) ways to effectively get local root now: 1. IIRC, linux 2.4 doesn't check capabilities in ptrace, so A could just ptrace B again. 2. LD_PRELOAD. 3. There are probably programs that will misbehave on their own under these circumstances. Is there some reason why this is not doable? The patch renames bprm_compute_creds to bprm_apply_creds and moves all uid logic into the hook, where the test and the resulting modification can both happen under task_lock(). This way, out-of-tree LSMs will fail to compile instead of malfunctioning. It should also make life easier for LSMs and will certainly make it easier for me to finish the cap patch. [PATCH] ext3 avoid writing kernel memory to disk From: Marc-Christian Petersen Solar Designer discovered an information leak in the ext3 code of Linux. In a worst case an attacker could read sensitive data such as cryptographic keys which would otherwise never hit disk media. Theodore Ts'o developed a correction for this. [PATCH] Call populate_rootfs later in boot populate_rootfs() is called rather early - before we've called init_idle(). But populate_rootfs() does file I/O, which involves calls to cond_resched(), and downing of semaphores, etc. If it scheules, the scheduler emits scheduling-while-atomic warnings and sometimes oopses. So run populate_rootfs() later, after the scheduler is all set up. [PATCH] remove amd7xx_tco From: Zwane Mwaikambo We've had trouble with this driver, it appears to work but the hardware never does the final reboot. I have yet to come across someone with a board which works and don't have personal access to one. So how about scrapping the whole thing. [PATCH] lockfs - vfs bits From: Christoph Hellwig These are the generic lockfs bits. Basically it takes the XFS freezing statemachine into the VFS. It's all behind the kernel-doc documented freeze_bdev and thaw_bdev interfaces. Based on an older patch from Chris Mason. [PATCH] lockfs: reiserfs fix From: Chris Mason reiserfs_write_super_lockfs() is supposed to wait for the transaction to commit. [PATCH] lockfs - xfs bits From: Christoph Hellwig Remove all the code now in the VFS, make XFS's freeze ioctls use the new infastructure and reorganize some code. This code needs some work so the source files shared with 2.4 aren't exposed to the new VFS interfaces directly. You'll get an update once this has been discussed with the other XFS developers and is implemented. Note that the current patch works fine and I wouldn't complain if it gets into Linus' tree as-is. [PATCH] lockfs - dm bits From: Christoph Hellwig This patch makes the device mapper use the new freeze_bdev/thaw_bdev interface. Extracted from Chris Mason's patch. [PATCH] i4l: add compat ioctl's for CAPI From: Marcel Holtmann This patch adds the needed compat ioctl's for the CAPI on 64bit platforms. [PATCH] selinux: change context_to_sid handling for no-policy case From: Stephen Smalley This patch changes the behavior of security_context_to_sid in the no-policy case so that it simply accepts all contexts and maps them to the kernel SID rather than rejecting anything other than an initial SID. The change avoids error conditions when using SELinux in permissive/no-policy mode, so that any file contexts left on disk from prior use of SELinux with a policy will not cause an error when they are looked up and userspace attempts to set contexts can succeed. [PATCH] selinux: add runtime disable From: Stephen Smalley This patch adds a kernel configuration option that enables writing to a new selinuxfs node 'disable' that allows SELinux to be disabled at runtime prior to initial policy load. SELinux will then remain disabled until next boot. This option is similar to the selinux=0 boot parameter, but is to support runtime disabling of SELinux, e.g. from /sbin/init, for portability across platforms where boot parameters are difficult to employ (based on feedback by Jeremy Katz). [PATCH] selinux: remove hardcoded policy assumption from get_user_sids() logic From: Stephen Smalley This patch removes a hardcoded policy assumption from the get_user_sids logic in the SELinux module that was preventing it from returning contexts that had the same type as the caller even if the policy allowed such a transition. The assumption is not valid for all policies, and can be handled via policy configuration and userspace rather than hardcoding it in the module logic. [PATCH] i810_dma range check From: Andrea Arcangeli Correctly range-check an incoming-from-userspace argument. Found by the Stanford checker. [PATCH] i386 hugetlb tlb correction From: William Lee Irwin III i386 does hardware interpretation of pagetables, so pte_clear() can't be used on present ptes, as it sets the upper half of the hugepte prior to setting the lower half (which includes the valid bit). i.e. there is a window where having a hugepage mapped at 56GB and doing pte_clear() in unmap_hugepage_range() allows other threads of the process to see a hugepage at 0 in place of the original hugepage at 56GB. This patch corrects the situation by using ptep_get_and_clear(), which clears the lower word of the pte prior to clearing the upper word. There is another nasty where huge_page_release() needs to wait for TLB flushes before returning the hugepages to the free pool, analogous to the issue tlb_remove_page() and tlb_flush_mm() repair. [PATCH] loop_set_fd() sendfile check fix From: Yury Umanets I have found small inconsistency in loop_set_fd(). It checks if ->sendfile() is implemented for passed block device file. But in fact, loop back device driver never calls it. It uses ->sendfile() from backing store file. [CPUFREQ] Fix unbalanced try_get_module/put_module Spotted by Charles Coffing [CPUFREQ] Remove redundant part of powernow-k7 module parm If used as a bootparam, this would've become powernow-k7.powernow_acpi_force which looks silly. [CPUFREQ] Make an educated guess at the current P-state in the ACPI driver. One big limitation of the ACPI specification is that it's impossible to detect the current P-State by reading from ACPI-defined registers. And the CPU isn't always at P0 when the system boots. So, try to "guess" the current P-State by analyzing cpu_khz. From Dominik. [CPUFREQ] Export an array of acpi driver supported frequencies in sysfs From Dominik. [CPUFREQ] Fix security hole in proc handler. Brad Spengler found an exploitable bug in the proc handler of cpufreq, where a user-supplied unsigned int is cast to a signed int and then passed on to copy_[to|from]_user() allowing arbitary amounts of memory to be written (root only thankfully), or read (as any user). The Common Vulnerabilities and Exposures project (cve.mitre.org) has assigned the name CAN-2004-0228 to this issue. Revert fb_ioctl "fix" with extreme prejudice. As Arjan points out, the patch does exactly the opposite of what it was claimed to do. Andrea: tssk tssk. Cset exclude: akpm@osdl.org[torvalds]|ChangeSet|20040421144431|15930 [PATCH] ia64: add mq support for ia64 [XFS] Don't reset buffer offset before using it. SGI Modid: xfs-linux:xfs-kern:168692a [XFS] Revive an accidentally dropped pagesize > blocksize assert. [ARM] Add support for ARM Versatile platform. This cset adds minimal support for ARM Ltd's ARM926EJ-S "Versatile" platform. [SERIAL] Correct PL011 help text. [PATCH] ide-disk.c: fix for IDE CF card ejection with devfs From: Pavel Roskin If I eject IDE CompactFlash card, I get a stack dump from devfs_remove() because ide/host2/bus0/target0/lun0 doesn't exist. After del_gendisk() is called from idedisk_cleanup() drive->devfs_name refers to a non-existent directory and should be erased, so that ide_unregister() doesn't try to remove that directory again. [PATCH] ide-probe.c: kill duplicate #include From: Arthur Othieno [PATCH] removal of MOD_{INC,DEC}_USE_COUNT in ide-cs.c From: Pavel Roskin The "ide-cs" module cannot be unloaded because it uses obsolete MOD_INC_USE_COUNT and MOD_DEC_USE_COUNT macros. In fact, they are not needed in ide-cs.c in 2.6 kernels. The generic PCMCIA code already increases use count for every device served by the driver, so it's impossible to unload the ide-cs driver while it's in use. I was told that the removal of IDE interfaces may be unsafe in 2.6 kernels. However, MOD_INC_USE_COUNT only prevents removal of the module, not the interface. It's also the first obstacle, albeit a trivial one, for anybody debugging those problems (i.e. loading a modified module requires "rmmod -f" or reboot to unload the old version). [PATCH] PPC64 iSeries virtual ethernet fix This patch is needed due to other patches that were applied in parallel with the inclusion of the iSeries virtual ethernet driver. [PATCH] New set of input patches This updates the vsxxx driver to it's current version. Even DEC tablet support (VSXXX-AB) is now tested - it works:) You can even hotplug between mouse and digitizer... [PATCH] lkkbd: Current version This updates the lkkbd driver to it's current version. It also incorporates two patches suggested on LKML (fixing some leading whitespace and an unneccessary check). [IPV4]: Fix return value on MCAST_MSFILTER error case. [NETFILTER]: Missing ip_rt_put in ipt_MASQUERADE. [TCP]: Better packing of frto fields into tcp_opt. [TCP]: Add sysctl to turn off matrics caching. [PATCH] atmel wireless update Fixes to avoid problems when the driver shares an interrupt. These were caused because the ISR cannot determine the status of the chip without changing its state and the driver was only disabling the interrupts from the card during some critical regions. An interrupt originating from another device at the wrong moment could run the ISR and corrupt chip state. Fixed by blocking interupts in the processor in critical regions and never checking the chip interrupt status before the driver is fully up. Added the ability to override the Regulatory Domain stored in ROM. The following command achieves this iwpriv regdomain vaild domains are USA,Canada,Europe,Spain,France,MKK,MKK1,Israel The current regulatory domain affects which radio channels are available for use. Some minor tidying to calibrate busy-wait loops using udelay and remove inclusion of obsolete include/linux/802_11.h [PATCH] pcmcia netdev ordering fixes From: Russell King This is an *untested* patch (PCMCIA people, please test) to fix initialisation ordering issues in these network device drivers. I don't have the hardware to be able to test these changes, although it passes a modular build without warnings. Andrew - it may be worth sticking these in -mm so they get some visibility via your tree as well. Many of these drivers were calling register_netdev() before they had completed their initialisation. In addition, they were calling register_netdev with the "DEV_CONFIG_PENDING" flag still set, which prevents hotplug scripts from bringing up the interface. Also, we take care to ensure that link->dev is correctly set - this is used to tell the PCMCIA release code if the netdev is currently registered (yes, that's probably racy at present, but lets sort one problem at a time.) I've arranged that all drivers register the netdevice as close as possible to the end of their initialisation, copy the net device's name for cardmgr to pass to it's network scripts, and then print out whatever information the driver wants to. Finally, a note about ibmtr - it seemed to assume that cardmgr wanted "tr0" or "tr1" depending on the base address, and completely ignoring the real device which the netdev layer allocated it. I've assumed that this is wrong (since the netdev name is used in printk messages), and changed it to behave the same as the other drivers. [PATCH] Au1000 IrDA driver update Get to build under 2.6, random updates to debugging code, new eval boards. [PATCH] Remove RCS Id string [PATCH] meth updates More work on the meth driver for SGI IP32 aka O2. [PATCH] BCM1250 network driver updates Resurrect into working order for 2.6. [PATCH] sgiseeq fixes Resurrect into working order for 2.6. [PATCH] IOC3 updates Use generic MII code, compile time configurable rx and tx checksumming. Try to handle IOC3 attached 16552 serials. Fix descriptor setup when crossing a 16kB page. Use generic PCI API. Use generic ethtool code, small cleanups, use a temporary kludge to exploit virtual device functionality for significantly better performance. [PATCH] declance updates Various small changes, DEC still doesn't work under 2.6. Retry 2nd time after failure on correct port [TCP]: Abstract out all settings of tcp_opt->ca_state into a function. [TCP]: Add vegas congestion avoidance support. A forward port of an old 2.3.x kernel hack done years ago. I (DaveM) did the first rough port, Stephen Hemminger actually cleaned it up and made it usable. [PATCH] USB: Don't try to suspend devices that do not support it. Patch originally from luming.yu@intel.com and closes bug #1557 [ACPI] if acpi_os_name= is used, print what it finds [ACPI] allow IRQ2 to be used in ACPI/IOAPIC mode http://bugzilla.kernel.org/show_bug.cgi?id=2564 [PATCH] sysfs module unload race fix for bin_attributes - Add module locking to sysfs bin_attribute files. Update all in-tree users to set module owner. Compile tested. booted. stress tests pass: while true; do modprobe mymod; rmmod mymod; done & while true; do hexdump -C /sys/path/to/sysfs/binary/file; done [PATCH] USB: Important bugfix for UHCI list management code A major bug in the UHCI driver turned up recently. Thanks to a lot of help from Simone Gotti it was identified and fixed late last week. It turned out to be entirely my fault -- a previous patch had introduced two (!) errors. (A combination of carelessness and a nasty thinko, and somehow it passed the regression tests...) Anyway, it's entirely possible that many of the problems people have been seeing are caused by that bug. This patch is the solution. [PATCH] USB: fix cdc-acm as it is still (differently) broken [PATCH] USB: fix cdc-acm warnings due to previous patch [PATCH] remove show_trace_task() It no longer has any callers. [PATCH] ppc64: iSeries virtual cdrom module fix From: Stephen Rothwell This patch fixes loading viocd as a module. It would oops because I was passing the address of a static buffer to dma_map_single and when loaded as a module, this address is not valid for that purpose. There are a couple of simple cleanups here as well. [PATCH] s390: core s390. From: Martin Schwidefsky s390 core changes: - Fix race in do_call_softirq in regard to kernel preemption. - Fix typo in compat mq system call wrappers. - Add s390 to Kconfig for AUDITSYSCALL. - Redefine TASK_SIZE to TASK31_SIZE for compilation of binfmt_elf32. - Use correct error value for sys32_ipc when called with an invalid number. - New default configuration. [PATCH] s390: common i/o layer. From: Martin Schwidefsky Common i/o layer changes: - Quiesce active subchannels for lpar reipl. - Delete timer after reception of interrupt for kill on timeout. - Cleanup some comments in qdio. [PATCH] s390: 3270 device driver. From: Martin Schwidefsky 3270 device driver changes: - Add NULL pointer checks. [PATCH] s390: network device drivers. From: Martin Schwidefsky Network driver changes: - qeth: Fix reference counting in regard to sysfs backing store patches. - qeth: Prefix kernel thread names with qeth_. - qeth: Remove inbound and outbound tasklets. Handle buffers directly in the interrupts handlers. - iucv: Add missing kfree in iucv_register_program. - iucv: Add missing return in netiucv_transmit_skb. - iucv: Check for NULL pointer in conn_action_txdone. [PATCH] s390: dasd device driver. From: Martin Schwidefsky dasd device driver changes: - Initialize open_count with -1 to account for blkdev_open in dasd_scan_partitions. - Introduce USE_ERP request flag to selectivly switch off error recovery for reserve, release & unconditional reserve ioctls. [PATCH] s390: zfcp adapter fixes. From: Martin Schwidefsky zfcp host adapter changes: - Fix error recovery stall in case of unavailable nameserver. - Reset host_scribble field to NULL in scsi_cmd. - Remove request debug code. [PATCH] s390: crypto api. From: Martin Schwidefsky Add support for z990 crypto instructions to in-kernel crypto api. [PATCH] EDD: set sysfs attr owner field From: Matt Domsch The patch below from Michael E. Brown properly sets the owner field of a sysfs attribute. Without this patch, it is possible to crash the kernel with a simultaneous insmod/rmmod while reading files exported by the module. [PATCH] dynamic proc cleanups From: Matt Mackall Delete obsolete comment and kill test of obsolete define. [PATCH] fbdev comment fix Fix the incorrect comment which caused the fb_ioctl confusion. [PATCH] MIPS: PCI code is now shared. From: Ralf Baechle All MIPS systems use the same PCI code now. [PATCH] Add Pete Popov to credits From: Ralf Baechle Add Pete to CREDITS for all the time he's invested into supporting the AMD Alchemy of SOCs and eval boards. [PATCH] Merge missing MIPS i8042 bits From: Ralf Baechle - Add HPC3 PS/2 driver bits for SGI IP22 aka Indy - Add Mace PS/2 driver bits for SGI IP32 aka O2 - Add R4030 PS/2 driver bits for Jazz family - Don't register I/O ports where we're using the I/O port memory window to access the i8042 registers [PATCH] MIPS is an a.out free zone From: Ralf Baechle MIPS never uses a.out [PATCH] Update comment in fs/compat.c From: Ralf Baechle MIPS now also uses the generic ioctl compat code. [PATCH] Set ARCH_MIN_TASKALIGN on ppc32 From: Benjamin Herrenschmidt From: David Woodhouse Without this the task struct gets unaligned when using SLAB_DEBUG, causing random problems with FP and Altivec. [PATCH] sunrpc rmmod oops fix From: "J. Bruce Fields" Unregister svcauth_gss caches on exit from gss module; fixes an oops on rmmod. [PATCH] ppc64: add some iSeries proc entries From: Stephen Rothwell This patch just adds some proc entries for the virtual tape and cdrom drivers to allow mapping between linux devices and OS/400 ones. This is expected by existing users and there is no other way to do this translation. [PATCH] ppc64: Set ARCH_MIN_TASKALIGN From: Benjamin Herrenschmidt We need some alignement of those structs for proper operations especially with FP and Altivec, or SLAB_DEBUG can break us. [PATCH] clean up Pentium M quirk code in nmi.c This simplifies the Pentium M quirk code in nmi.c, and eliminates an unnecessary apic_read(). Local APIC accesses are not zero-cycle; let's not inflict more damage than we must. [PATCH] use smp_processor_id() in init_IRQ() This replaces current_thread_info()->cpu in i386' init_IRQ() by the equivalent smp_processor_id(). Reduces overhead on UP, and makes the code cleaner. [PATCH] USB: ehci handles pci misbehavior better Cope better when PCI misbehaves badly and registers misbehave: - terminate some loops before they get to infinity * capability scan * port reset - after init failure, memory may already be cleaned up Some systems have been reporting such problems after ACPI resume. [PATCH] USB: rndis gadget driver updates Various build fixes: 64bit (Andrew Morton), static linking, broken on big-endian, etc. Tighten up the integration with the main "ether" driver, so state transitions and host ethernet addresses are shared too. Add missing spinlock calls around RNDIS command outcall, fix GET_INTERFACE issue, host mustn't clobber netdev flags. Minor code cleanups. [PATCH] USB: silence dpcm warning Warnings aren't terribly important in and of themselves, but there isn't really much the warning tells us to do here, so it would appear that caving in to the compiler is the thing to do for now. [PATCH] USB: tiglusb: wrong timeout value Hi, this patch (cumulative; 2.4 & 2.6) fixes another bug in the tiglusb driver. The formula used to calculate jiffies from timeout is wrong. The new formula is ok and takes care of integer computation/rounding. This is the same kind of bug than in the tipar char driver. [PATCH] USB: ftdi patch fixup I just checked out the latest 2.6.6-rc1-mm1 to see that the ID patch for ftdi has applied cleanly, but apparently someone was faster and in the combined ID table our ID's were missing. Most probably the patch program got confused and applied the hung at wrong spot.. Attached is a patch that places that 2 lines in the correct spot. [PATCH] USB: usbnet and pl2301/2302 reset Handle some PL-2301/2302 devices better. RFC1002 fixup [PATCH] tipar char driver: wrong timeout value this patch (2.4 & 2.6) fixes a bug about the timeout value. The formula used to calculate jiffies from timeout is wrong. The new formula is ok and takes care of integer computation/rounding. There is the same bug in the tiglusb.c module which will be fixed by another patch. [PATCH] symlink doesn't support kobj name > 20 charaters (KOBJ_NAME_LEN) Since symlink.c uses "name" field of a kobj when it calculates the length, it gets a wrong value if the kobj's name has more than 20 charathers. A correct way to do that is to call kobject_name(kobj) instead of using kobj->name directly. exit from waiting on smb response when session dead Update change log for 1.10 cifs vfs ia64: Add message-queue support to copy_siginfo_from_user(). proper rc on host down fix error code mapping on bad host fix timeout on close operation when pending signal NTFS: Move a few assignments after a NULL check in fs/ntfs/attrib.c. do not allow routine user signals to kill SendReceive wait for response (which was damaging performance badly) [PATCH] writeback livelock fix If a filesystem's ->writepage implementation repeatedly refuses to write the page (it keeps on redirtying it instead) (reiserfs seems to do this) then the writeback logic can get stuck repeately trying to write the same page. Fix that up by correctly setting wbc->pages_skipped, to tell the writeback logic that things aren't working out. NTFS: Finally fix NFS exporting of mounted NTFS volumes by checking the return of d_splice_alias() and acting accordingly rather than just ignoring the returned dentry. [ACPI] Workaround "_BBN 0" BIOS bug enhance "pci=noacpi" to skip ACPI PCI configuration and interrupt config add "acpi=noirq" to skip just ACPI interrupt config (David Shaohua Li) http://bugzilla.kernel.org/show_bug.cgi?id=1662 [ACPI] workaround for nForce2 BIOS bug: XT-PIC timer in IOAPIC mode "acpi_skip_timer_override" boot parameter dmi_scan for common platforms, may be replaced with PCI-ID in future. http://bugzilla.kernel.org/show_bug.cgi?id=1203 [SPARC64]: Update defconfig. [ARM PATCH] 1824/1: guard against gcc not respecting local variable register assignment Patch from Nicolas Pitre The recent discovery of a problem with gcc not always respecting register assignment for local variables to be used with inline assembly is worrisome. If unnoticed, such problems can cover bugs that might prove hard to find especially when the code is right but silently ignored. This patch adds a test where needed to have the assembler confirm our register selection and fail the kernel build if the wrong registers are allocated. [ARM PATCH] 1825/1: abort on bad code generation with div64 in some cases Patch from Nicolas Pitre One case was found when the kernel is compiled with -O2 (instead of the default -Os). However, all gcc-3.* versions seem to have a problem with this. Instead of blacklisting them all unconditionally, better just abort when a bad case occurs especially since this bad case doesn't seem to appear with current default compiler flags. Depends on patch #1824. [SPARC64]: Fix zero-extension issues wrt. {pgd,pmd}_val(). [TCP]: Report vegas info via tcp_diag. [CRYPTO]: Add module autoloads for null module. [NET]: linux/if.h needs linux/compiler.h for __user. [ACPI] No IRQ known... - using IRQ 255 (Bjarni Rúnar Einarsson) http://bugzilla.kernel.org/show_bug.cgi?id=2148 [ARM] Remove extraneous "volatile" from atomic_t pointers. [ARM PATCH] 1815/1: Generic DMA buffer bouncing support for ARM targets Patch from Deepak Saxena Latest (and hopefully last :) patch for generic DMA buffer bouncing. - Fixed SA1111 dma_needs_bounce - Added check for out of bounds buffers. - Made dmabounce.c directly implement dma_* API Note that I didn't do the following: #ifndef CONFIG_DMABOUNCE inline implementations of all functions #else extern declarations #endif Instead I wrapped it individual in #ifndef/#else blocks to keep the comments in the same area as function declarations. IMHO this makes it easier for someone to go look at the comments if they need to know what a specific API does. NTFS: Use get_bh() instead of manual atomic_inc() in fs/ntfs/compress.c. NTFS: - Modify fs/ntfs/time.c::ntfs2utc(), get_current_ntfs_time(), and utc2ntfs() to work with struct timespec instead of time_t on the Linux UTC time side thus preserving the full precision of the NTFS time and only loosing up to 99 nano-seconds in the Linux UTC time. - Move fs/ntfs/time.c to fs/ntfs/time.h and make the time functions static inline. [PATCH] e100: ICH 10/H Tx hang fix * Need to carry forward this workaround from old e100 driver to avoid a Tx hang on ICH systems linked at 10/Half. Workaround adds a stall before each Tx command queued by issuing a NOP command followed by 1us delay. Yuck! Otherwise HW locks hard. (Probably needed for eepro100 also ;-). ACPI irq->gsi naming (Bjorn Helgaas) NTFS: - Remove unused ntfs_dirty_inode(). - Cleanup super operations declaration. NTFS: Wrap flush_dcache_mft_record_page() in #ifdef NTFS_RW. NTFS: Add NInoTestSetFoo() and NInoTestClearFoo() macro magic to fs/ntfs/inode.h and use it to declare NInoTest{Set,Clear}Dirty. NTFS: Move typedefs for ntfs_attr and test_t from fs/ntfs/inode.c to fs/ntfs/inode.h so they can be used elsewhere. NTFS: Determine the mft mirror size as the number of mirrored mft records and store it in ntfs_volume->mftmirr_size (fs/ntfs/super.c). [SPARC32]: Ensure swap entries do not overlap the PRESENT or FILE bits. Recent changes to the swap code force us to actually support the entire range of swap encodings. The old encodings could cause the FILE bit to be set, causing a BUG. [netdrvr tulip] fix use-after-free The attached patch fixes an "oops" in tulip driver when a live interface is deactivated (i.e. PC Card ejected or module unloaded) without being brought down first. [PATCH] generic PCI IDE support for Toshiba Piccolo chips From: Daniel Drake Adds Toshiba chips to the list supported by the generic PCI IDE driver. The 2.4 tree already contained an entry for 0x1179:0x0102, this patch adds that entry to 2.6 as well as two new ones (0x0103 and 0x0105). This then allows DMA to be enabled on disks. [PATCH] use kernel min/max in IDE code (1/2) From: Randy Dunlap From: Michael Veeck ide-cd.h: remove unnecessary MIN() macro ide-cd.c: change MIN() calls to use kernel.h calls ide-tape.c: use min_t()/max_t() instead of min()/max() [PATCH] use kernel min/max in IDE code (2/2) From: Randy Dunlap From: Michael Veeck Removes unnecessary IDE_MIN()/IDE_MAX() macros and changes calls to use kernel.h macros instead. [PATCH] prevent module unloading for legacy IDE chipset drivers It is unsafe thing to do (no locking, no reference counting etc). Just remove module_exit() as it was done for IDE PCI drivers. Fix port 139 connections to Windows 2K adding missing RFC1002 session_init Remove unneeded debug statement [ATM]: [fore200e] 0.3e version by Christophe Lizzi (lizzi@cnam.fr) [ATM]: [fore200e] make use tasklet configurable [PATCH] V4L: Update the saa7146 driver - [DVB] saa7146 driver updates: - remove bogus v_calc and h_calc parameters, which can be easily retrieved from other values - add class parameter to i2c initialization - let resource handling provide more useful informations - sanitize overlay/capture locking [PATCH] DVB: Documentation and Kconfig updazes - [DVB] misc. documentation updates, KConfig help file updates - [DVB] make Twinhan driver depend on bt8xx [PATCH] DVB: Update DVB budget drivers - [DVB] budget-av: patch by Kenneth Aafløy to add support for Typhoon DVB-S budget card - [DVB] budget.c: support for Fujitsu-Siemens Activy Card - [DVB] budget-ci: add preliminary CI support [PATCH] DVB: Add EN50221 cam support to dvb-core - [DVB] add generic functions for EN50221 CAM interfaces [PATCH] DVB: Other DVB core updates - [DVB] remove superflous memset() which caused section data to be overwritten when a) there are two sections in one TS packet, and b) the first section was smaller than 18 bytes; thanks to Jean-Claude Repetto for tracking this down - [DVB] starting a ts filter on a running section filter's pid did break the section filter; fixed. - [DVB] integrate ULE Decapsulation code, thanks to gcs - Global Communication & Services GmbH. and Institute for Computer Sciences Salzburg University. Hilmar Linder and Wolfram Stering - [DVB] fix the module use count bugs, thanks to Hernan A.Perez Masci for his initial work on this problem - [DVB] if dvb_frontend_internal_ioctl() returns an error code, be sure to deliver it to the calling application, don't ignore it (fixes the bug that the frontend0 doesn't respond properly to unknown ioctls...) - [DVB] major frontend code clean up, rewritten core tuning loop. Thanks to Andrew de Quincey. - [DVB] follow changes in dvb-core in skystar2, dvb-bt8xx [PATCH] DVB: AV7110 DVB driver updates - [DVB] av7110 update: - speed up firmware loading - follow internal API changes in saa7146 driver - introduced some symbolic constants for a/v dec cmds - change default for hw_sections to 0 to enable crc checks [PATCH] DVB: Misc. DVB frontend driver updates - [DVB] follow changes in dvb-core for frontend drivers (ves1x93, ves1820, nxt6000, sp887x, tda1004x, stv0299, mt312, alps_tdlb7, alps_tdmb7, at76c651, cx24110, dst, dvb_dummy_fe, grundig_29504-401, grundig_29504-491) - [DVB] tda1004x: updated timeout to 800ms, implemented FE_SLEEP - [DVB] cx24110: add FE_CAN_RECOVER to reduce kdvb-fe CPU load - [DVB] grundig_29504-401: added 200ms delay after first FE_INIT, Implemented FE_GET_FRONTEND - [DVB] alps_tdlb7, alps_tdmb7: upped tuning delays to fix tuning [PATCH] DVB: Misc. DVB USB driver updates - [DVB] ttusb-dec: - Add a parameter to dvb_filter_pes2ts function to specify whether the packet is a payload unit start or not - Use the hotplug firmware loader for 2.6 kernels instead of compiling the firmware into the module. - Correct the USB id of the DEC3000-s, add basic support - [DVB] ttusb-budget: - Remove spurious discontinuity message when starting streaming [PATCH] DVB: Follow saa7146 changes in affected V4L drivers - [V4L] follow changes in saa7146 driver: mxb, dpc7146, hexium_orion, hexium_gemini [PATCH] ISDN CAPI: add ncci list semaphore Fix race conditions of ISDN CAPI's internal ncci list handling by using a per capidev semaphore. [PATCH] don't log drive loading failures This is an old bug that often confuses people, rightfully. For some laptop and server type cdroms, the drives advertise themselves as tray loading even if they are caddy-like or slot-in loaders. This means they cannot insert the media on their own, and this generates a 5/24/00 error to START_STOP_UNIT. This prevents the logging of such a failure, and also fixes the generation of such a bad command in case the mech type was correctly set by the drive. Flush writebehind before invalidate in file open path [PATCH] USB: fix up fake usb_interface structure in hiddev This fixes a oops in the current kernel tree. [PATCH] USB: further cleanup of the hiddev driver, fixing another possible oops on disconnect. fix memory allocation of rfc1002 sess init struct [PATCH] correct LoEj logic The logic got a little foo-bar'ed in the last patch, we should have keep the old logic. Ie LoEj bit (2nd) must always be set, just clear it for known non-capable of loading drives. [PATCH] ia64: bug w/ shared interrupts I just ran into a bug introduced by the most recent iosapic.c patch. The scenario is a builtin driver is up and running happily. A module loads for a devices that happens to share the same interrupt vector, in this case a network driver. The module calls pci_enable_device() as it should, which eventually lands in iosapic_enable_intr(). We then proceed to mask the interrupt and kill the device that's already running. As a bonus, request_interrupt() doesn't fix the problem because we only call the startup for the interrupt handler on the first action attached to the interrupt. I think the best way out of this is simply to detect when an action is already attached to a vector and leave it alone. This also prevents interrupts from moving to other cpus (on boxes w/o irq redirection) for no good reason. [PATCH] ia64: Remove SN PDA page overflow check There's an obsolete check in sn_init_pdas() left over from the 2.4 days that panics if the cpu PDA and cpu_data area span more than a page. With 2.6, we're not limited to a page, so remove the check entirely. update rfc1001 handling [TCP]: Add vegas sysctl docs. [IPV4]: Spelling fixed for ip-sysctl.txt [IRDA]: Export irda_task_delete. [SUNRPC]: Missing NULL kmalloc check in unix_domain_find(). [PATCH] ia64: SN_SAL_PRINT_ERROR is reentrant [PATCH] One more USB fix Here's another fix it'd be good to merge ... No changes to the Linux code at all, but it'll makes the Windows configuration of a Linux device running the Ethernet/RNDIS gadget behave correctly on more versions of Windows. (It might prevent some Bluescreening too.) [TG3]: Fix jimbo frame PHY programming. 1. Added new workaround for 5705 to improve bit error rate. 2. Changed to use read-modify-write to set the extended packet bit in tg3_phy_reset. 3. Removed some phy setup code in tg3_phy_probe. All of that is already in the end of tg3_phy_reset. Writing to the phy during probe time may contend with ASF because ASF is constantly reading phy registers to determine the link. 4. Removed the write to phy register 0x18 in tg3_phy_copper_begin. Not sure what it was for and it will overwrite that regsiter. [TG3]: Fix comment typo. [TG3]: Dump NIC-specific statistics via ethtool. Contributed by Tony Cureington @ HP, updated (from pre-ethtool_ops) and modified by me. [TG3]: Update driver version and reldate. do not block (writing back to the filesystem potentially) while allocating smb buffers [PATCH] create singlethread_workqueue() From: Rusty Russell Workqueues are a great primitive for running things from user context from a completely clean environment. Unfortunately, they currently insist on creating one thread per CPU, which is overkill for many situations, so the more generic keventd workqueue is used for these. Recently deadlocks using keventd were demonstrated, showing that it is not suitable for all uses. 1) Clean up CPU iterators. Always a nice touch. 2) Add __create_workqueue() and create_singlethread_workqueue(), keeping source compatibility. 3) Put workqueues in workqueue list even if !CONFIG_HOTPLUG_CPU (means we need a lock to protect that list). Now we can tell if a wq is single-threaded using list_empty(&wq->list). 4) For single-threaded workqueues, override CPU in queue_work, delayed_work_timer_fn and flush_workqueue to be 0. flush_workqueue now does redundant passes for single-threaded workqueues, but the code remains simple. 5) Make create_workqueue_thread return the thread, so we can easily kthread_bind for multi-threaded workqueues. akpm fixes: - Fix up is_single_threaded() handling - single-threaded wq thread does not have "/0" appended. [PATCH] Use workqueue for call_usermodehelper From: Rusty Russell call_usermodehelper uses keventd to create a thread, guaranteeing a nice, clean kernel thread. Unfortunately, there is a case where call_usermodehelper is called with &bus->subsys.rwsem held (via bus_add_driver()), but keventd could be running bus_add_device(), which is blocked on the same lock. The result is deadlock, and it comes from using keventd for both. In this case, it can be fixed by using a completely independent thread for call_usermodehelper, or an independent workqueue. Workqueues have the infrastructure we need, so we use one. Move EXPORT_SYMBOL while we're there, too. akpm fixes: Make it compile with !CONFIG_KMOD [PATCH] reiserfs: ignore prepared and locked buffers From: Chris Mason block_write_full_page might see and lock clean metadata buffers, which leads to bogus vs-12339 messages. Change the message to ignore bh locked. [PATCH] credentials locking fix From: Chris Wright Contributions from: Stephen Smalley Andy Lutomirski During exec the LSM bprm_apply_creds() hooks may tranisition the program to a new security context (like setuid binaries). The security context of the new task is dependent on state such as if the task is being ptraced. ptrace_detach() doesn't take the task_lock() when clearing task->ptrace. So there is a race possible where a process starts off being ptraced, the malicious ptracer detaches and if any checks agains task->ptrace are done more than once, the results are indeterminate. This patch ensures task_lock() is held while bprm_apply_creds() hooks are called, keeping it safe against ptrace_attach() races. Additionally, tests against task->ptrace (and ->fs->count, ->files->count and ->sighand->count all of which signify potential unsafe resource sharing during a security context transition) are done only once the results are passed down to hooks, making it safe against ptrace_detach() races. Additionally: - s/must_must_not_trace_exec/unsafe_exec/ - move unsafe_exec() call above security_bprm_apply_creds() call rather than in call for readability. - fix dummy hook to honor the case where root is ptracing - couple minor formatting/spelling fixes [PATCH] ext3 journalled quota locking fix From: Jan Kara I've attached a fix for a problem in ext3 journalled quota patch - the problem is that detecting whether dqput() sleeps was wrong and so we could possibly schedule when holding a spinlock. rfc1001 session init name parsing fix [PATCH] Bigger quota hashtable From: Jan Kara I found out that quota uses hash table with just 43 entries to hash dquot entries. I guess that we can afford using one page for that (quotactl(Q_GETQUOTA...), got faster like 3x for 4000 users). Attached patch implements that. [PATCH] Per-sb dquot dirty lists From: Jan Kara When there are lots of dirty dquots the vfs_quota_sync() is too slow (it has O(N^2) behaviour). Attached patch implements list of dirty dquots for each superblock and quota type. Using this lists sync is trivially linear. Attached patch is against 2.6.5 with journalled quota and previous patch for hash table size. (Jan had a test which went from 8 minutes to 0.8 seconds...) [PATCH] dquot: remove unneeded test We're testing the nullness of `sb' potentially after rereferencing it (although the compiler will have reordered things to avoid such a bug). Just remove the test - the superblock pointer shouldn't be null in there. [PATCH] Minor fixes for ext3 journalled quotas From: Jan Kara It fixes a memory leak when turning journalled quotas off. [PATCH] ppc64: Split prom.c Into pre-reloc and post-reloc Functions From: Rusty Russell Move all the functions that run normally (ie. with the kernel in the correct address) to the bottom of prom.c, and keep all the functions which use RELOC() to the top, above "prom_init()" which calls them. Also, make prom_initialize_dart_table and prom_initialize_tce_table static. [PATCH] ppc64: Rearrage finish_device_tree() and its functions in C Order From: Rusty Russell Rather than pre-declaring static functions, order them so it's not neccessary. This makes the code easier to navigate and patch. [PATCH] ppc64: Rearrage copy_device_tree() and its functions in C Order From: Rusty Russell Rather than pre-declaring static functions, order them so it's not neccessary. This makes the code easier to navigate and patch. [PATCH] ppc64: Rearrage interpret_funcs in C Order From: Rusty Russell Rather than pre-declaring static functions, order them so it's not neccessary. This makes the code easier to navigate and patch. [PATCH] ppc64: Rearrage Rest of prom.c in C Order From: Rusty Russell Rather than pre-declaring static functions, order them so it's not neccessary. This makes the code easier to navigate and patch. [PATCH] ppc64: Make finish_device_tree use lmb_alloc, not klimit From: Rusty Russell finish_device_tree simply allocates nodes by incrementing klimit (ie. using memory on top of the kernel). Change it to figure out how much memory it needs, then use lmb_alloc to allocate that, then fill it in. This gets rid of the only manipulation of klimit after prom_init. [PATCH] ppc64: make_room macro for ppc64 prom.c From: Rusty Russell copy_device_tree calls inspect_node() which recurses to copy the Open Firmware device tree. It just copied into memory above the kernel for about 8MB, which can overwrite the initrd, and/or get truncated on big machines. The real solution is to allocate memory properly for all the prom_init memory users. However, that's quite a change. This patch introduces a "make_room" macro which inspect_node uses to get memory. This does the same as before, except skips over the initrd if neccessary. [PATCH] ppc64: Fix prom.c to boot on G5 after make_room fix From: Rusty Russell Ben Herrenschmidt made this actually boot. [PATCH] ppc64: Clean up prom functions in prom.c From: Rusty Russell 1) Define PROM_ERROR: checks for call_prom() < 0 are bogus (returns ulong) 2) All OF access functions should be marked __init. 3) prom_strtoul isn't used at all. [PATCH] ppc64: Initrd Cleanup From: Rusty Russell Clean up initrd handling. 1) Expose initrd_start and initrd_end to prom.c (replacing its local initrd_start and initrd_len). 2) Don't hand mem (aka klimit) through functions which don't need it. 3) Add more debugging under DEBUG_PROM in case we broke anything. [PATCH] ppc64: Move Initrd From: Rusty Russell This patch moves the initrd when "make_room" runs out of space, rather than stepping over it. The problem with stepping over it is that it gets copied with the kernel when this happens, which wastes space. Also ensures that the initrd isn't where the kernel wants to be moved to: if it is, it gets moved out the way. [PATCH] ppc64: prom.c fix for CONFIG_BLK_DEV_INITRD=n From: Rusty Russell Doesn't compile with CONFIG_BLK_DEV_INITRD=n. Be more careful with the conditionals. Spotted by Dave Boutcher... [PATCH] hugetlbpage: remove include linux/module.h From: Paul Jackson The #include of linux/module.h in several arch/*/mm/hugetlbpage.c files for EXPORT_SYMBOL(hugetlb_total_pages) is now unneeded. [PATCH] slab alignment fixes From: Manfred Spraul Below is a patch that redefines the kmem_cache_alloc `align' argument: - align not zero: use the specified alignment. I think values smaller than sizeof(void*) will work, even on archs with strict alignment requirement (or at least: slab shouldn't crash. Obviously the user must handle the alignment properly). - align zero: * debug on: align to sizeof(void*) * debug off, SLAB_HWCACHE_ALIGN clear: align to sizeof(void*) * debug off, SLAB_HWCACHE_ALIGN set: align to the smaller of - cache_line_size() - the object size, rounded up to the next power of two. Slab never honored cache align for tiny objects: otherwise the 32-byte kmalloc objects would use 128 byte objects. There is one additional point: right now slab uses ints for the bufctls. Using short would save two bytes for each object. Initially I had used short, but davem objected. IIRC because some archs do not handle short efficiently. Should I allow arch overrides for the bufctls? On i386, saving two bytes might allow a few additional anon_vma objects in each page. [PATCH] prune_dcache comment fix From: Maneesh Soni Clarify some things which were confusing poeple... [PATCH] m68k: Amiga A2065 Ethernet KERN_* From: Geert Uytterhoeven Amiga A2065 Ethernet: Add KERN_* prefixes to printk() messages [PATCH] m68k bitops From: Geert Uytterhoeven M68k bitops updates (from Roman Zippel): - Optimize find_{first,next}_zero_bit() - Add missing implementations of find_{first,next}_bit() [PATCH] efivars: remove from arch/ia64 From: Matt Tolentino I broke up the efivars driver update patch I had sent out quite a while ago into several smaller patches. This includes several fixes and suggestions that were pointed out. The patches are broken down as follows: 1 - remove all traces of efivars from arch/ia64/ 2 - add new sysfs based efivars driver into drivers/firmware with accompanying Kconfig/Makefile changes to make it fully functional for ia64 again. 3 - cleans up x86 references to the /proc version of the efivars driver. [PATCH] efivars: add to drivers/firmware From: Matt Tolentino Second efivars driver update patch that adds efivars into the drivers/firmware directory. [PATCH] efivars: remove x86 references From: Matt Tolentino Third efivars driver update patch that removes x86 references to the /proc version of the driver. [PATCH] efivars fixes From: Matt Domsch Patch below fixes three small bugs in efivars.c as posted by Matt Tolentino last week and included in the latest -mm. Aside from this small patch, I'm quite pleased with Matt T's work, thanks! - dummy() used for reading write-only sysfs files should return -ENODEV to indicate failure, not 0. - efivar_create() should return the number of bytes written on success, not zero. - efivar_delete() should return the number of bytes written on success, not zero. [PATCH] efibootmgr location change From: Matt Domsch I moved the home of the efibootmgr utility from domsch.com to linux.dell.com. Note the move in drivers/firmware/Kconfig, also note version 0.5.0-test3 or above is necessary. [PATCH] s390: no timer interrupts in idle. From: Martin Schwidefsky This patch add a system control that allows to switch off the jiffies timer interrupts while a cpu sleeps in idle. This is useful for a system running with virtual cpus under z/VM. [PATCH] task_lock() comment update [PATCH] dio_bio_reap() return value fix This function doesn't correctly accumulate -EIO for its caller. [PATCH] fix CONFIG_SYSFS=n compile warning From: Matt Mackall [PATCH] isofs "default NLS charset not used" fix From: Marek Szuba Use the configured default NLS rather than hardwire it. [PATCH] slab: use order 0 for vfs caches We have interesting deadlocks when slab decides to use order-1 allocations for ext3_inode_cache. This is because ext3_alloc_inode() needs to perform a GFP_NOFS 1-order allocation. Sometimes the 1-order allocation needs to free a huge number of pages (tens of megabytes) before a 1-order grouping becomes available. But the GFP_NOFS allocator cannot free dcache (and hence icache) due to the deadlock problems identified in shrink_dcache_memory(). So change slab so that it will force 0-order allocations for shrinkable VFS objects. We can handle those OK. [PATCH] smb_writepage retval fix ->writepage() is supposed to return zero or a negative error code. Returning the number of bytes written will confuse the VFS. [PATCH] simplify put_page() By requiring that compound pages implement destructors we can drop some code from put_page(). [PATCH] hugepage fixes From: William Lee Irwin III mm/hugetlb.c is putting the destructor in head->lru.prev not head[1].mapping; fix below along with nuking huge_page_release(), which simply duplicates put_page(). [PATCH] ISDN Eicon driver: remove call to trap usermode helper From: Armin Schindler This patch removes the function to call a usermode helper if the hardware and its firmware has a problem. This feature is already implemented in the user utility and the driver does not need to care about it. [PATCH] doc: tips for S3 resume on radeon cards From: Pavel Machek Stefan has pretty useful tips for getting S3 to work on radeon notebooks. This brings whole new class of systems to be usable for S3. [PATCH] ppc32: fix head_44x.S copyrights From: Matt Porter A copyright change to properly show the lineage of this file. [PATCH] fs/proc/array.c: workaround for gcc-2.96 From: Alan Stern This patch is needed to work around gcc-2.96's limited ability to cope with long long intermediate expression types. I don't know why the code compiled okay earlier and failed now. [PATCH] blkdev.h: functions no longer inline From: "Randy.Dunlap" These are EXPORTed SYMBOLs; 'inline' was removed from them in ll_rw_blk.c on 2002-11-25. [PATCH] nfs_writepage() retval fix Both ->writepage() and ->writepages() should return 0 or a negative error code. It shouldn't return the number of bytes which were written. From: Trond Myklebust Redirty the page if all of the modified parts of the page weren't written out. [PATCH] ppc32: dma_unmap_page() fix From: (Arthur Othieno) Duplicate definition of dma_unmap_single() should actually be dma_unmap_page(). (acked by Tom Rini) [PATCH] fix fs/proc/task_nommu.c compile From: Christoph Hellwig this file has been broken for ages, but it seems few !CONFIG_MMU users use mainline at all. [PATCH] remove Documentation/DocBook/parportbook.tmpl From: Christoph Hellwig The partportbook is licensed under the GFDL and Linus agreed to remove all GFDL licensed files in http://www.ussg.iu.edu/hypermail/linux/kernel/0306.1/1968.html. I pinged the author the first time on the 2nd of april but still didn't get a reply, then send a patch to Linus to remove it last week but linus ignored it. Here's the patch again: [PATCH] Set module license in mcheck/non-fatal.c From: Herbert Xu This patch sets the module license for mcheck/non-fatal.c. The module doesn't work at all without this as one of the symbols it needs is only exported as GPL. [PATCH] SubmittingPatches diffing update. From: Zwane Mwaikambo A kernel janitor recently got confused by the advice in SubmittingPatches and was sending patches with the wrong strip level, i think just about everyone would prefer standard patches. Also mention various patch management scripts for batching up large deltas. [PATCH] ppc64: remove duplicated mb() and comment from __cpu_up From: Nathan Lynch This seems to have slipped in during a manual merge at some point. [PATCH] SELinux ptrace race fix From: Stephen Smalley Looking again at the SELinux ptrace check, I believe that there is an unrelated race due to the fact that the parent link is only updated after releasing the task lock in ptrace_attach (and this is necessary as task lock doesn't nest with write lock of tasklist_lock). The patch below changes SELinux to save the tracing process' SID upon a successful selinux_ptrace hook call and then use that SID in the ptrace check in apply_creds in order to avoid such races. This allows us to preserve the fine-grained process-to-process ptrace check upon exec (vs. the global CAP_SYS_PTRACE privilege => PT_PTRACE_CAP flag used by the capability module) while still avoiding races. [PATCH] doc: specifiying module parameters From: "Randy.Dunlap" kernel-parameters.txt: add info on how to specify loadable module parameters vs. built-in module parameters [PATCH] kbuild: Improved external module support From: Sam Ravnborg The external module support recently introduced caused a number of problems: - To build an external module the Module.symvers file was needed - To create the Module.symvers file a module was required - If Module.symvers was missing kbuild boiled out with an error - If vmlinux was missing also the stage 2 of module build failed (make -k) - It was not documented what was needed to actually bauild a module The following patch addresses this by adding the following functionality: - Always generate the Module.symvers file - Ignore a missing Module.symvers file - Add a new target modules_prepare, it prepares the kernel for building external modules, and is also usefull with O= - And it adds some more comments to Makefile.modpost, so others may follow it with some luck - .modpost.cmd is no longer generated This should close all reports on issues with respect to building external modules with current kernel - which has been identified as kernel problems. NTFS: Load the mft mirror at mount time and compare the mft records stored in it to the ones in the mft (fs/ntfs/super.c). JFS: Fix non-ascii file name problem An unintentional sign extention caused non-ascii characters to be stored incorrectly, leading to inaccessible files. Changing a declaration to unsigned char fixes the problem. [PATCH] fix SG_IO page leak We cannot always rely on ->biotail remaining untouched. Currently we leak all the pinned user pages when doing cdda ripping at least, so I see no way around keeping the bio pointer seperate and passing it back in for unmap. Alternatively, we could invent a struct blk_map_data and put it on the stack for passing to both map and unmap. Include in files that need them. [CRYPTO]: Add module aliases for des and sha512. [TG3]: Undo comment typo fix, it was wrong. [COMPAT]: HDIO_DRIVE_TASK is a compatible ioctl. fixes for socket retry and error handling of misc. error paths fix double entry typo [NET]: Eliminate large inlines in skbuff.h [PATCH] Fix cpumask iterator over empty cpu set Can't use _ffs() without first checking for zero, and if bits beyond NR_CPUS set it'll give bogus results. Use find_first_bit Linux 2.6.6-rc3 [TCP]: tcp_send_skb code pruning The function tcp_send_skb is only called from tcp_fin, and is always called with force_queue=1. Therefore, it no longer needs to be global and the code to send right now can be removed. Because it always queues, change the name as well, and fix up the comment. [SPARC64]: Fix MAP_FIXED+shared address check, noticed by rmk. [XFS] Fix dmapi/mprotect interaction SGI Modid: xfs-linux:xfs-kern:170448a [PATCH] acpi build fix setup.c:608: `acpi_skip_timer_override' undeclared [XFS] Remove now that linvfs_mprotect doesn't need it. SGI Modid: xfs-linux:xfs-kern:170509a [PATCH] acpi4asus 0.28 (Karol 'sziwan' Kozimor) - Added support for Samsung P30 - Fixed an oops triggered by non-standard hardware (Samsung P30) - Added support for L4400L and M6800N The patch also removes some superfluous data. It doesn't include the copy_from_user() conversion, it will be released as a separate patch. [XFS] close external blockdevice after final flush SGI Modid: xfs-linux:xfs-kern:170489a [ACPI] battery "charged" instead of "unknown" (Luming Yu) http://bugzilla.kernel.org/show_bug.cgi?id=1863 [ACPI] pci-link may not always be SHARED (SuSE via Luming Yu) http://bugzilla.kernel.org/show_bug.cgi?id=2404 [ACPI] rmmod ACPI modules vs /proc from Anil S Keshavamurthy and David Shaohua Li http://bugzilla.kernel.org/show_bug.cgi?id=2457 [ACPI] toshiba_acpi driver if acpi_disabled (David Shaohua Li) http://bugzilla.kernel.org/show_bug.cgi?id=2465 [ACPI] support button driver unload (Luming Yu) http://bugzilla.kernel.org/show_bug.cgi?id=2281 [ACPI] fix build warning in dmi_scan [ACPI] button build fix NTFS: - Fix compiler warnings related to type casting. - Move %L to %ll as %L is floating point and %ll is integer which is what we want. - Add logfile inode to ntfs_volume structure and the code to clean it up in super.c. [ARM PATCH] 1832/1: Typo in dma_unregister_dev printk Patch from David Vrabel Fix a trivial typo in a dma_unregister_dev printk. [ARM] Add read_cpuid() to aid reading CPU ID registers. [ARM] Fix BE find_*_bit operations These broke when find_first_bit/find_next_bit was added. [PATCH] fix warning in fs/dquot.c From: "Luiz Fernando N. Capitulino" fs/dquot.c: In function `vfs_quota_off': fs/dquot.c:1328: warning: label `out' defined but not used [PATCH] ppc64: Set memory-only nodes online From: Olof Johansson On pSeries LPARs we might end up with NUMA nodes that only have memory and no CPUs. Only the CPU configuration code actually set a node online, so memory-only nodes wouldn't show up in sysfs. Below patch adds the set_online call to the memory loop too. [PATCH] Fix thinkos in #if -> #ifdef conversions From: Tom Rini When I changed some '#if FOO' tests to '#ifdef FOO' I forgot to make sure that nothing was doing #define FOO 0. So after auditing all of the changes I made, the following is needed: [PATCH] Fix thinkos in #if -> #ifdef conversions #2 From: Tom Rini And when trying to catch up on old patches, I forgot this hunk: [PATCH] fix warning in arch/ppc/boot/simple/misc.c From: Christoph Hellwig asm-ppc/elf.h uses a pointer to struct task_struct without any forward-declaration. In file included from include/linux/elf.h:5, from arch/ppc/boot/simple/misc.c:20: include/asm/elf.h:102: warning: `struct task_struct' declared inside parameter list include/asm/elf.h:102: warning: its scope is only this definition or declaration, which is probably not what you want [PATCH] ppc32: Update SBS K2 support From: Tom Rini This patch updates support for the SBS K2 platform. Most of the size in this patch comes from merging k2_pci.c and k2_setup.c into just k2.c. [PATCH] ppc32: Add openpic_hookup_cascade() From: Tom Rini This patch adds openpic_hookup_cascade(offset, name, handler) which allows for an arbitrary interrupt controller to be hooked up as a cascade to the openpic. This also allows for platforms to just not have a cascaded controller. [PATCH] ppc32: Update Motorola PrPMC750 support From: Tom Rini This patch updates support for the Motorola PrPMC750 platform. Most of the size in this patch comes from merging prpmc750_pci.c and prpmc750_setup.c into just prpmc750.c. [ARM] Update assabet_defconfig. [PATCH] ISDN CAPI: fix ncci list semaphore Fix new ISDN CAPI's internal ncci list semaphore if CONFIG_ISDN_CAPI_MIDDLEWARE is disabled. Thanks to Florian Schirmer. [ARM] Update ioremap implementation. Use flush_cache_vmap() after creating mappings. Also use BUG_ON() rather than if() BUG(). [ARM] Fix dependencies of SERIO_AMBAKMI and SERIO_RPCKBD [ARM] Oprofile should use asm/irq.h not asm/arch/irqs.h [ARM] Fix monspecs in ARM-related framebuffer drivers. Use named initialisers for monspecs; the format of the structure changed a while back and it broke. [PATCH] Fix rwsem contention case on alpha/s390x Thanks to Dru , who provided an easy way to reproduce the problem. What we have in lib/rwsem.c:__rwsem_do_wake(): int woken, loop; ^^^ and several lines below: loop = woken; woken *= RWSEM_ACTIVE_BIAS-RWSEM_WAITING_BIAS; woken -= RWSEM_ACTIVE_BIAS; However, rw_semaphore->count is 64-bit on Alpha, so RWSEM_WAITING_BIAS has been defined as -0x0000000100000000L. Obviously, this blows up in the write contention case. [ARM] Remove Anakin default configuration file. [ARM] Fix shared mmap()ings for ARM VIPT caches. This allows us to appropriately align shared mappings on VIPT caches with aliasing issues. [IPV4]: Use static in several places. More functions and data that should be static. [LIB]: Add CRC32c (Castagnoli, et al Cyclic Redundancy-Check) [LIB]: Use compiler.h's pure attribute macros in crc32.c. [ARM] Fix read_cpuid() [CRYPTO]: Provide crc32c as a type of digest. [SPARC64]: Update defconfig. [ARM] Fix atomic bitops earlyclobber atomic_dec_and_test and atomic_add_negative didn't mark their temporary variables as early-clobber. Fix this. [NETLINK]: Mark some functions/data static. Add __user annotations to ppc64 user access functions. Tell the sparse checker to use 64-bit mode when checking a ppc64 tree. [ARM] Move all page fault handling code to fault.c [ARM] Add Versatile default configuration [ARM PATCH] 1835/1: Make ALTERA Excalibur work again in 2.6.5 Patch from Dirk Behme Make ALTERA Excalibur work again in 2.6.4. Update serial driver uart00.c and defconfig. This is an update of patch 1833/1. Remove #include , it isn't necessary at all. [PATCH] fix default IDE interfaces initialization for PPC32 In ide_init_default_irq() patch I overlooked that ppc_ide_md.init_hwif_ports() called from generic ide_init_hwif_ports() can set hwif->irq and it will be overwritten by ide_init_default_irq() if CONFIG_PCI is defined. Fix it. I will clean it up properly later after killing ide_init_hwif_ports() on ARM{26}. Doing it now is just wasted effort. [PATCH] Fix overeager stack-expansion on ppc64 This fix is from Paul Mackerras and was applied in 2.4 sometime late last year. On ppc64, touching addresses between the highest other mapping and the stack can cause the stack to be extended way, way down, rather than causing a SEGV as you would expect. This patch only allows the stack mapping to be extended to cover addresses actually within the stack (as determined by looking at the process's r1). This fix is ported from 2.4 This fixes failures on the LTP's shmdt01, munmap01 and munmap02 tests. [PATCH] POWER5 erratum workaround Early POWER5 revisions ( [PATCH] Fix might_sleep in /proc/swaps code This fixes a locking problem noted by Tim Hockin: * /proc/swaps uses seq_file code, calling seq_path() with swaplock held * seq_path() calls d_path() * d_path() calls mntput() which might_sleep() We add a new semaphore protecting insertions/removals in the set of swap components + switch of ->start()/->stop() to the same semaphore [fixes deadlocks] + trivial cleanup of ->next(). [PATCH] cifssmb.c warning fix On ppc64, __u64 is `unsigned long', so: fs/cifs/cifssmb.c: In function `CIFSSMBSetFileSize': fs/cifs/cifssmb.c:2466: warning: long long int format, __u64 arg (arg 2) [PATCH] ppc32: compile error in signal.c From: Meelis Roos arch/ppc/kernel/signal.c: In function `handle_signal': arch/ppc/kernel/signal.c:518: error: `newspp' undeclared (first use in this function) arch/ppc/kernel/signal.c:518: error: (Each undeclared identifier is reported only once arch/ppc/kernel/signal.c:518: error: for each function it appears in.) arch/ppc/kernel/signal.c:518: warning: long unsigned int format, pointer arg (arg 3) [PATCH] Update kerneltraffic link in SubmittingDrivers and kernel-docs.txt From: Coywolf Qi Hunt This updates the kerneltraffic url link found in Documentation/SubmittingDrivers and Documentation/kernel-docs.txt. [PATCH] cciss build fix From: This patch fixes the linux/include/cciss_ioctl.h file. When support for the cciss big ioctl was added the stucture in the header was put in the wrong place. If an application includes the file it will fail to compile. [PATCH] cciss MAINTAINERS update From: Here's an update for the MAINTAINERS file. [PATCH] s390: core s390 From: Martin Schwidefsky s390 core changes: - Move setting/clearing of TIF_31BIT thread flag to SET_PERSONALITY. - Use TASK_UNMAPPED_BASE in elf_map32 for mmaps with address 0. - Define ARCH_KMALLOC_MINALIGN. - Define ARCH_MIN_TASKALIGN. [PATCH] s390: common i/o layer From: Martin Schwidefsky Common i/o layer changes: - Don't use bus ids in crw debug feature. - Use cio_oper for oper notification to disconnected devices. - Remove __get_subchannel_by_stsch. - Make cio workqueue a single threaded workqueue. - Introduce addiotnal cio_notify workqueue for device driver notification. - Switch off path in vpm if cio_start returned -ENODEV. - Fix rescan for new subchannels after a logical vary on. [PATCH] s390: network driver From: Martin Schwidefsky Network driver changes: - ctc: Add missing irb error checking. - iucv: Add name of net_device to iucvMagic to more than one connection between two guests. - qeth: Don't send IPA command if card is not in state SOFTSETUP or UP. - qeth: Fix number base in simple_strtoul call for buffer_count attribute. - qeth: Fix reallocating of buffers when buffer_count attribute is changed. - qeth: Correct handling of return codes in qeth_realloc_buffer_pool. - qeth: Don't call dev_close/dev_open on STOPLAN/STARTLAN commands. Use netif_carrier_off/netif_carrier_on instead. [PATCH] s390: 3270 console driver From: Martin Schwidefsky 3270 device driver change: - Add missing irb error checking. [PATCH] s390: zfcp host adapter From: Martin Schwidefsky zfcp host adapter change: - Fix addressing exception due to uninitialized host_scribble pointer. [PATCH] s390: oprofile for s390 From: Martin Schwidefsky Add oprofile support for s/390. [PATCH] static functions in as-iosched.c From: Stephen Hemminger [PATCH] Fix support for the Motorola PrPMC800 From: Tom Rini Makes the Motorola PrPMC800 platform functional again. This comes from Randy Vinson . [PATCH] gcc-3.4.0 fixes From: Mikael Pettersson This patch fixes three warnings from gcc-3.4.0 in 2.6.6-rc3: - arch/i386/pci/pcbios.c: use of "+m" constraint - drivers/char/ftape/: use of cast-as-lvalue - drivers/char/ftape/: __attribute__((packed)) on something containing only bytes [PATCH] writeback livelock fix To avoid various livelocks, the writeback code parks all the dirty inodes onto sb->s_io and then works through that list until it is empty. This assumes that each inode will be moved to some other list as it is processed. But there's a loophole: if the ->writepages() implementation does nothing at all, the inode is not redirtied (which would move it to s_dirty). This causes s_io to not empty and pdflush goes nuts. So when this happens, move the inode onto s_dirty within __sync_single_inode(). Use list_move_tail() to attempt to preserve the time-ordering of the s_dirty list. [PATCH] mremap offset type Just found I never changed type of move_page_tables when I changed it to return offset: einormous mremap moves would fail on 64-bit. ia64: Fix Exec-Only stack patch so X can work again. No pun intended, but X can't work if it can't turn on eXecute-permission on the some data pages... [PATCH] ia64: SN2 fix Move HW interrupt register init. to the proper place and don't force an interrupt if the IRQ is disabled or in progress. [NET]: More network layer static funcs and data. [PATCH] NFSv3: Fix SETATTR call after O_EXCL create Ensure that when we send the SETATTR call after doing an O_EXCL create, we always set the atime and ctime fields. See RFC1813 for details on why the server is allowed to clobber these two fields in order to cache a verifier that protects CREATE in case of a timeout+resend from the client. Patch is by Olaf Kirch. [PATCH] parport pnp detection fix From: Adam Belay Fix http://bugme.osdl.org/show_bug.cgi?id=2540 It prevents PnP detection if devices were already detected by SuperIO. [PATCH] nfs printk warning fix From: Trond Myklebust fs/nfs/direct.c: In function `nfs_direct_IO': fs/nfs/direct.c:458: warning: int format, different type arg (arg 2) [PATCH] efivars sysfs fix From: Matt Tolentino This trailing space in sysfs contents is not needed. [PATCH] DVB:Fix adapter module removal bug From: Michael Hunold unfortunately it's possible to remove a DVB adapter module even if a DVB network device has been set up using this adapter. The attached patch fixes this problem. [PATCH] s390: oprofile Kconfig fixes From: Arnd Bergmann Enable basic profiling code on s390 depending on CONFIG_PROFILING, not CONFIG_OPROFILE. CONFIG_PROFILING should enable the generic profiling code here, even if CONFIG_OPROFILE is not set. Note that the identical code on i386 is always compiled in, regardless of CONFIG_PROFILING and CONFIG_OPROFILE. [PATCH] make ikconfig quiet From: "Randy.Dunlap" From: Pavel Machek Kill uninformative boot-time message. [PATCH] ppc64: shmget() translation bugfix From: David Gibson The 32->64 bit syscall translation layer on ppc64 incorrectly sign- extends rather than zero-extending the second parameter to shmget(), which should be a size_t. This means that it is impossible to shmget() more 2GB or more from a 32-bit process. [PATCH] fadvise length handling fix POSIX sez: "If len is zero, all data following offset is specified." Cset exclude: davidm@tiger.hpl.hp.com|ChangeSet|20040427053149|28511 JFS: [CHECKER] Fix a possible null-pointer dereference [PATCH] Update MTD concatenating driver This patch updates the MTD concatenating driver from MTD CVS, which fixes issues found with this driver which concatenates multiple MTD devices into one MTD device. From David Woodhouse, through CVS: revision 1.8 date: 2003/06/30 11:01:26; author: dwmw2; state: Exp; lines: +5 -5 I will not commit stuff whilst pissed I will not commit stuff whilst pissed revision 1.7 date: 2003/06/29 21:26:34; author: dwmw2; state: Exp; lines: +9 -9 Fix ecc/oob subdev comparisions revision 1.6 date: 2003/06/25 12:37:50; author: dwmw2; state: Exp; lines: +14 -6 Don't pretend to have {read,write}_{oob,ecc} functions if subdevices don't revision 1.5 date: 2003/06/25 12:21:16; author: dwmw2; state: Exp; lines: +390 -397 coding style cleanup [ARM PATCH] 1836/1: don't hardcode virtual addresses Patch from Nicolas Pitre virtual address mapping can change. [ARM PATCH] 1837/1: small Lubbock cleanup Patch from Nicolas Pitre Minor cleanup of Lubbock specific code, like removal of redundant mappings. Also a prerequisite for some upcoming patches. [ARM PATCH] 1838/1: Lubbock leds and macro namespace cleanup Patch from Nicolas Pitre Too many macro with too generic names. Let's remove unneeded code and redundant/unused macros. This also prevent namespace clash with upcoming patches. [ARM PATCH] 1839/1: fix lubbock_flash.c which used a bogus reg name Patch from Nicolas Pitre Before previous patch this driver compiled OK but was buggy. Now it doesn't compile anymore as the bogus macro has been deleted. Fix that in any case. The same fix has been committed to the MTD CVS already, but please forward this to Linus otherwise Lubbock won't compile from kernel.org tree anymore (waiting for dwmw2 to update this might prove ... hrm ... long) [ARM PATCH] 1840/1: recognize more XScale CPU variants Patch from Nicolas Pitre ... including the new PXA270 aka Bulverde. [ARM PATCH] 1841/1: Lubbock defconfig update Patch from Nicolas Pitre [PATCH] task_struct alignment fix The recent slab alignment changes broke an unknown number of architectures (parisc and x86_64 for sure) by causing task_structs to be insufficiently aligned. We need good alignemnt because architectures do things like dumping FP state into the task_struct with instructions which require particular alignment (I think). So change the default alignment to L1_CACHE_BYTES, which is what we used to have, via SLAB_HW_CACHE_ALIGN. [PATCH] usb linkage fix On sparc64 toolchain: drivers/built-in.o(.init.text+0xaf8c): In function `usb_init': : undefined reference to `usbfs_cleanup' usb_init() is __init and usbfs_cleanup() is __exit. No can do. Fix fixed fadvice length handling - Correctly handle wraparound on offset+len - fix FADV_WILLNEED handling of non-page-aligned (offset+len) Let's hope we don't need to fix the fixed fix. [ACPI] PCI Interrupt Link fixes Handle BIOS that reference disabled PCI Interrupt Link Devices http://bugme.osdl.org/show_bug.cgi?id=1581 Clean up VIA _CRS = 0 BIOS workaround Handle BIOS returning _CRS outside _PRS http://bugme.osdl.org/show_bug.cgi?id=2567 delete now unused _SRS retry code disable redundant console messages [PATCH] serverworks.c: fix DMA for OSB4 From: Patrick Wildi On OSB4 the hwif->ultra_mask is set to not support UDMA. Unfortunately in that case svwks_config_drive_xfer_rate() falls through to the end of the function, instead of trying other DMA modes. [ALPHA] Add message queue syscalls. [PATCH] add missing #include There's a subtle problem with "inline" usage in : : this pulls in __constant_c_and_count_memset() : this pulls , re-defining inline == __inline__ __attribute__((always_inline)). But by now it is too late! The compiler has already seen the bare "inline" in string.h, and hasn't inlined it. Result: # grep __constant System.map c0144670 t __constant_c_and_count_memset c0145c60 t __constant_c_and_count_memset ... many more copies of this function ... Fixed by including early enough. [IPV4/IPV6]: Fix listing of listening sockets. There is a bug in listening_get_first() which used by /proc/net/tcp* where it wasn't looping through all the sockets in each hash chain. This problem doesn't show up unless the first socket in a chain doesn't match the family that is being looked up. The following patch fixes this by getting rid of listening_get_first() altogether. [PATCH] ppc64: fix incorrect signal handler argument This fixes a bug in the ppc64 signal delivery code where the signal number argument to a signal handler can get corrupted before the handler is called. The specific scenario is that a process is in a blocking system call when two signals get generated for it, both of which have handlers. The signal code will stack up two signal frames on the process stack (assuming the mask for the first signal delivered doesn't block the second signal) and return to userspace to run the handler for the second signal. On return from that handler the first handler gets run with an incorrect signal number argument because we end up with regs->result still having a negative value (left over from when the system call was interrupted) when it should be zero. This patch sets it to zero when we set up the signal frame (in three places; for 64-bit processes, and for 32-bit processes for RT and non-RT signals). The way we handle signal delivery and signal handler return using the regs->result field in ppc64 is more complicated than it needs to be. In ppc32 I have already simplified it and eliminated use of the regs->result field. I am going to do the same in the ppc64 code, but I think this patch should go in for now to fix the bug. The patch also fixes a couple of places where we were unnecessarily and incorrectly truncating the regs->result value to 32 bits (sys32_sigreturn and sys32_rt_sigreturn return a long value, as all syscalls do, and if regs->result is negative we need those syscalls to return a negative value). Thanks to Maneesh Soni for identifying the specific circumstances under which this bug shows up. [PATCH] mcdx.c insanity removal The mcdx.c author had pulled off something absolutely amazing - he had declared several unsigned variables (ISA port numbers) as void *, using explicit cast to unsigned in almost all places that used them. Exception: printk. There he proudly used them as pointers - with %3p in format. That cute trick allowed him to avoid using %03x, which apparently scared him for some reason. Switched to use of unsigned, killed casts, replaced %3p with %03x in formats. BTW, the code had been that way since the initial merge back in 1.3.7... fix ppc64 build problem due to missing header even if O_CREAT specified do not reset mode when file not actually created reduce excessive stack space usage in smb password hashing do not refresh mode (e.g. in revalidate) to windows servers [PATCH] FAT: Fix nfsv2 support The ->dentry_to_fh() can use the 20 bytes in the case of NFSv2, but fat_dentry_to_fh() requires 24 bytes by my patch. So nfsd reply the EOPNOTSUPP to nfs client, then nfs client convert the unknown error to -EIO. This patch fixes the problem by pushing the handle data into 20 bytes. [PATCH] FAT: simple error handling cleanup From: René Scharfe the following patch converts the error handling paths in VFAT fs to use goto, making it more consistent with other filesystem code. Shrinks the resulting binary by 144 bytes in my build. [PATCH] FAT: small cleanup [PATCH] FAT: remove symbols exports from msdosfs/vfat From Christoph Hellwig If we're ever going to ressurect umsdos it should be a stackable filesystem.. [SERIAL] Fix the calculation of the number of UARTs The calculation ended up believing we had one less UART than we really had. Fix it. Make types of big integers in bitops.h explicit. "sparse" warns about implicit type conversions that may cause surprising results. Did you know that large decimal types have different type conversions from large hexadecimals? Be more careful about semaphore contention memory ordering. Don't touch the wakee stack after marking it runnable. [ACPI] export symbols to button module [NET]: Fix MODULE_PARM_DESC typo in dummy driver. [PATCH] SCTP crc table can be static const [SCTP] Fix bugs in handling overlapping INIT and peer restart over a multihomed association. [SCTP] Rename SCTP_ADDR_REACHABLE as SCTP_ADDR_AVAILABLE to be consistent with the SCTP sockets API draft. [SPARC32]: Correct calculation of num_physpages Previously num_physpages only took into consideration low memory. Since nr_free_pages returned something much larger, the caches init would oops. [SPARC32]: Trivial reformatting patch for arch/sparc/mm/init.c From Art Haas [SCTP] Fix memset() parameter ordering. [SPARC32]: Reduce fragmentation in the bitmap allocator The existing allocator is first-fit with wraparound. This allows a large number of small holes to accumulate in the early part of the region, leading to heavy fragmentation. This adjusts the algorithm to rescan the region when smaller sizes are requested, reducing early fragmentation. [SERIAL] Add support for SBS Tech. Inc. PMC-OCTPRO and P-OCTAL cards. Patch from Slawomir Kolodynski [PATCH] cancel_delayed_work() fix cancel_delayed_work() forgets to clear the workqueue's pending flag. This makes the workqueue appear to be permanently busy, so any subsequent attempts to use it will fail. [PATCH] ppc64: Use slbie, not slbia in hugepage code On PPC64, when we prepare segments below 4G for use with hugepages, we need to flush their entries from the SLB, in case SLB entries specifying normal pages were already present. Previously we did that by flushing the entire SLB, the patch below changes this to individually flush each necessary segment with slbie. The new version may well be slightly faster, but the real reason for it is so that this code path doesn't need to be changed to reinstate any bolted SLB entries, if we add them. The existing version has already caused problems (read, crashes) when combined with some patches that add bolted SLB entries. [PATCH] ppc32: Updated boot fix This fixes booting on some PPC32 machines, notably CHRP and powermac machines. This is a modified version of Tom Rini's patch that addresses the concerns I had with it. The problem was that the linker script was getting included in the list of things that got put together to make some of the sorts of bootable images that we produce. This removes ld.script in cases where it wasn't appropriate and changes the rules in others so that although we have the dependency on ld.script, it doesn't get included in the list of things to link. [SERIAL] 8250_hcdp needs irq sharing Patch from Alex Williamson Here's a trivial patch that makes 8250_hcdp setup the correct flags when IRQ sharing is enabled for serial ports. The HCDP table tells us if the device is a PCI UART. We can use this to set the shared interrupt flag as well as program the interrupt with the correct polarity/trigger (should get rid of "changing vector from IO-SAPIC-edge to IO-SAPIC-level" messages at bootup). This also allows non-PCI UARTs to be left un-shareable, which is likely much more safe (edge triggered). The bit that I'm keying on is still part of the older 1.0a HCDP spec, so should be implemented (it was on all the boxes I tested). If there's firmware out there that doesn't set this bit or the interrupt supported flag, the HCDP UART may run in polling mode, but should still be functional. [ARM] Fix potential oops and kill unused variable warning in sa1111.c This fixes a potential oops/use after free bug, and removes an unused variable warning. [ARM] Update mach-types file again. [SERIAL] default to serial console when possible Patch from Bjorn Helgaas This adds efi_uart_console_only() so we can default to using a serial console if the EFI console path only contains UARTs. [PATCH] mremap pte_unmap NULL Old bug noone seems to have hit, but mremap's pte_unmap dst might be NULL: would get preempt count wrong even when not DEBUG_HIGHMEM. [PATCH] add_to_page_cache comments Remove two layers of the fossil record from comments on add_to_page_cache: 2.6.6 moves swapcache handling away, and we long ago stopped masking flags. JFS: [CHECKER] Memory leak in jfs_link JFS: [CHECKER] get rid of txAbortCommit txAbortCommit is broken and fixing it makes it equivalent to txAbort, so get rid of it and use txAbort instead. Be more careful about waking up rwsem waiters Get a reference count on the the sleeper, so that it can't possibly go away before we've sent it the wakeup event. Noted by Nick Piggin David Howells [PCMCIA] add EnE specific initialization to fix HDSP Patch from Daniel Ritz. This patch clears an almost undocumented EnE specific test register that makes sound on RME Hammerfall DSP Carbus work...should even work after suspend. [SERIAL] Remove unused variable. [PATCH] fix memleak in sys_mq_timedsend Move error handling to capture all three possible error conditions on sending to a full queue. Without this fix any unprivileged user can leak arbitrary amounts of kernel memory. [PATCH] report size of printk buffer From: In the old days the printk log buffer had a constant size, and dmesg asked for the 4096, later 8192, later 16384 bytes in there. These days the printk log buffer has variable size, and it is not easy for dmesg to do the right thing, especially when doing a "read and clear". The patch below adds a syslog subfuntion that reports the buffer size. [PATCH] fix queues_count accounting in mqueue_delete_inode() During mqueue_get_inode(), it's possible that kmalloc() of the info->messages array will fail. This failure mode will cause the queues_count to be (incorrectly) decremented twice. This patch uses info->messages on mqueue_delete_inode() to determine whether the mqueue was every truly created, and hence proper accounting is needed on destruction. [NET]: Update netpoll credits. [IEEE1394]: Fix deadlock in killing kernel thread [PATCH] ppc/ppc64: Cleanup PPC970 CPU initialization This cleans up the code used to initialize the 970 CPU. More specifically, it adds support for the 970FX, makes sure we don't touch registers we aren't supposed to when running in LPAR mode, and stop blindly zeroing out HID4 and HID5, we just clear the bits we really want clear in there and leave the rest to the firmware. [PATCH] Fix my address in CREDITS Heh, I moved 6 month ago, time to update CREDITS ;) [PATCH] ppc32: Add missing [pci_]dma_mapping_error() Those were missing from ppc32, please apply. [PATCH] ppc32: pmac support update This adds some initial support for the latest model of iBook G4 (still need some work on the clock chip at least and some radeonfb updates that I'll send later along with other fixes for this driver). It also removes a useless delay and fixes detection of the airport card on the "Windtunnel" class desktop G4 machines. [PATCH] page_mapping race fix From: Hugh Dickins Remove this development-only debug code - Hugh thinks that its BUG_ON() can trigger by accident. [PATCH] Fix oops in video_register_device degerrit@web.de wrote: "I caused an oops in unusual circumstances by accidentally "forcing" a video device number which was too high or already taken (don't know which). I assume this probably shouldn't give an oops (though it was my fault), so here's a bugreport..." Fixed by adding a range check for the number passed in by the driver. [PATCH] allow drivers to claim the lapic NMI watchdog HW Here is an updated lapic NMI ownership tracking patch which should address the issues that were raised with the first one: - Simplified the API function names to {reserve,release}_lapic_nmi(). - Rewrote the ownership tracking code to use two individually named flags instead of using arithmetic and the sign. The code is now simple enough that no "hiding" macros are needed. (Thanks Albert for that suggestion.) [PATCH] fixup for C1 Halt Disconnect problem on nForce2 chipsets Based on information provided by "Allen Martin" : A hang is caused when the CPU generates a very fast CONNECT/HALT cycle sequence. Workaround is to set the SYSTEM_IDLE_TIMEOUT to 80 ns. This allows the state-machine and timer to return to a proper state within 80 ns of the CONNECT and probe appearing together. Since the CPU will not issue another HALT within 80 ns of the initial HALT, the failure condition is avoided. [PATCH] sata_vsc initialization fix [libata sata_sis] support SATA SCRs in PCI cfg space [SCTP] Fix accessing Gap Ack blocks array with a -ve index in sctp_outq_sack() [PATCH] ISDN Eicon driver: accept capidrv parameters Accept negative level3cnt value in register_application for special b-channel calculation. Necessary to work with capidrv. [PATCH] cciss update From: This patch adds support for 2 new controllers. The first is a PCI-Express version of the 6400. The second is actually a SATA controller using the cciss interface. [PATCH] bug in bigsmp CPU bringup There is an bug in bigsmp sub-architecture, due to which it will not enable all the CPUs when the BIOS-APICIDs are not 0 to n-1 (where n is total number of CPUs). Particularly, only 2 CPU comes up on a system that has 4 CPUs with BIOS APICID as (0, 1, 6, 7).=20 The bug is root caused to check_apicid_present(bit) call in smpboot.c, when bigsmp is expecting apicid in place of bit. check_apicid_present(bit) in bigsmp subarchitecture checks the bit with phys_id_present_map (which is actually map representing all apicids and not bit). One solution is to change check_apicid_present(bit) to check_apicid_present(apicid), in smp_boot_cpus(). But, it can affect all the other subarchitectures in various subtle ways. So, here is a simple alternate fix (Thanks to Martin Bligh), which solves the above problem. [ Confirmation from Martin: Looks fine, it's exactly the same fix we use for Summit. Since we're using the other method instead of the bitmap, this check isn't needed, so we can just bypass it. This way also has the great advantage of being isolated to the bigsmp subarch, so it only needs testing there ;-) ] [PATCH] PPC64 iSeries: replace semaphores with completions This replaces some usages of sempahores on the stack with completions. We think we have had at least one bug report that could be caused by the inherent race in the semaphore usage. [PATCH] ide-disk.c: write cache handling fixes From: Alan Cox , Arjan van de Ven - calculate drive->wcache for non-removable disks too - flush the cache before unlocking the door on removable media, otherwise you have a small race with the human [PATCH] bug fix for megaraid memory leak I was going through the code looking for bits and pieces to pull across into the new LSI Logic beta megaraid driver /sys fs code and came across this one. LSI Logic have already fixed this issue for the 2.4 driver, and the new beta driver does not use the /proc filesystem at all, so no problem there. The problem is that resources are not freed upon certain error conditions in the in-kernel megaraid driver, to quote from Lester Hightower (who originally found the issue): "The problem occurs only in the circumstance where one reads one of the /proc/megaraid/hba/diskdrives-ch files where the card does not have channel on it. Most people would likely not notice this leak in normal operation, but due to the way that we monitor our MegaRaid cards in our company (we read these /proc entries every 180s) so we found the leak rather quickly, and unpleasantly (when your kernel eats all your RAM)." Anyway, here is the fix, compiled and tested OK for me. [PATCH] b44 driver needs mii [PATCH] ncpfs data corruption when using large TCP transfers ncpfs was forgetting to update iovec's iov_base field whenever partial transmission occured. This was causing data corruption during large (60kB) writes. The code now also passes copy of iovec to the sock_sendmsg, so it does not rely on network stack updating (or not updating) passed iovec in case of success (or failure). NTFS: Read the journal ($LogFile) and determine if the volume has been shutdown cleanly and force a read-only mount if not (fs/ntfs/super.c and fs/ntfs/logfile.c). This is a little bit of a crude check in that we only look at the restart areas and not at the actual log records so that there will be a very small number of cases where we think that a volume is dirty when in fact it is clean. This should only affect volumes that have not been shutdown cleanly and did not have any pending, non-check-pointed i/o. [PATCH] mxcsr patch for i386 & x86-64 This enables proper mxcsr register masking: the magic mask "0xffbf" is not necessarily correct for all CPU's, and there is an architected way to discover the proper MXCSR feature bits by examining the fxsave results. Please refer to IA32 Software Developer's Manual, Volume 1, Section 11.6.6 for more details. NTFS: Eeek. Forgot to revert the Makefile before checking it in last time... [PATCH] fix value toggle in gconf gconf doesn't correctly toggle through the values of a symbol, so use sym_toggle_tristate_value() instead. Problem reported by Martin Persenius [PATCH] IDE disk cache flush at unopportune momemnts This makes the idedisk_release function only flush the cache on final release; with the recent 2.6 blocklayer updates release gets called somewhat frequently, and at times where IO is outstanding to the disk. This bug didn't trigger before simply because ide_cacheflush_p() always was a nop. [PATCH] logips2pp driver update (MX510/310 support), cleanup I've updated the logips2pp driver to detect the MX310 and MX510 mice and also made it more maintainable by putting everything into one table instead of having 4 arrays for them (the MX700 support wasn't added correctly in the last revision). [PATCH] ppc64: Fix nasty typo in PTE freeing code There is a typo in the PTE freeing code causing us to possibly overflow the batch structure. Obvious fix (look at the closing parentheses). [PATCH] Suspend IDE disks on shutdown When Patrick removed ide_notify_reboot() in 2.5.42, he didn't notice that it meant that IDE no longer had any shutdown() functionality. So we did the right thing on suspend, but not on shutdown. ide_notify_reboot() was only doing STANDBY on shutdown (because FLUSH 'doesn't work' in 2.4 too) but it worked okay and we still should do STANDBY on shutdown because some broken disks flush their caches. Thus just calls bus->suspend() (FLUSH+STANDBY) at shutdown time. We can add some safety delay later - 2.4 doesn't have any. [PATCH] ide: don't send cacheflush to drives that don't understand it [PATCH] Fix IO bitmap invalidate There is a bug where if any process that obtained an IO access permissions via ioperm() does not explicitly "drop" that permissions, the IO permissions don't get properly invalidated on process exit. The cause is that exit_thread() only invalidates the per-thread io_bitmap pointer, but doesn't invalidate the per-TSS io_bitmap pointer as well. As the per-thread pointer is invalidated, __switch_to() doesn't take care of that one either, so the per-TSS pointer stays valid as long as some other process does ioperm(). This fixes the problem - it invalidates the per-TSS io_bitmap pointer and the problem goes away. NTFS: 2.1.8 release - If the $LogFile indicates a clean shutdown and a read-write (re)mount is requested, empty $LogFile by overwriting it with 0xff bytes to ensure that Windows cannot cause data corruption by replaying a stale journal after Linux has written to the volume. x86-64: fix preempt race in exit_thread This fixes a (very very small) preempt race window when we invalidate the IO permission bitmap on process exit. [ARM] Remove DMA support in Versatile We don't have DMA support for AMBA devices yet. [ARM] Enclose MMC-related code in #ifdef CONFIG_MMC .. #endif [SERIAL] Remove unmerged 'clk' subsystem from PL011 driver. [CRYPTO]: Fix typing in crc32c's chksum_update All the Intel LPC bridges have the same PCI quirks. They all have 128 bytes of ACPI/TCO IO space pointed to by config space register 0x40, and 64 bytes of GPIO space pointed to by 0x58. Thanks to Jun Nakajima for the full list. [PATCH] ISDN Eicon driver: fix empty queue check Check for last adapter link is done by next member, because entries are not removed yet. [PATCH] Fix CTS handling in pmac-zilog.c From: Paul Mackerras This patch fixes a bug in the pmac-zilog driver where if you enable CRTSCTS mode, it won't output data when CTS is asserted. On powermacs, the CTS input is inverted. It also fixes a logic bug in testing for CTS and DCD changes. [PATCH] fix WARN_ON on XFS module unload From: Christoph Hellwig This one is a little funny. The SGI trees don't show this issue because dmapi and quota are separate modules so they must be unloaded before xfs_fs_exit can be called at all. So let's move the exitcalls for them in mainline first to simulate that behaviour. [SUNZILOG]: Fix DCD/CTS change tests, just like in pmac_zilog. [SPARC64]: Use $(CC) in NEW_GCC checks. [NET]: Add sock_create_kern() Under SELinux, and potentially other LSMs, we need to be able to distinguish between user sockets and kernel sockets. For SELinux specifically, kernel sockets need to be specially labeled during creation, then bypass access control checks (they are controlled by the kernel itself and not subject to SELinux mediation). This addresses a class of potential issues in SELinux where, for example, a TCP NFS session times out, then the kernel re-establishes an RPC connection upon further user activity. We do not want such kernel created sockets to be labeled with user security contexts. sock_create() and sock_create_kern() are wrapper functions, which seems semantically clearer to me than e.g. adding a flag to sock_create(). If you prefer the latter, then let me know. The patch also adds an argument to the LSM socket creation functions indicating whether the socket being created is a kernel socket or not. [NET]: Add sock_create_lite() The purpose of this is to allow sockets created by the kernel in this way to be passed through the LSM socket creation hooks and be labeled and mediated in the same manner as other sockets. This patches addresses a class of potential issues with LSMs, where such sockets will not be labeled correctly (if at all), or mediated during creation. Under SELinux, it fixes a specific bug where RPC sockets created by the kernel during TCP NFS serving are unlabeled. [IPV4]: Use time_after() in override ARP calculation. [SCTP]: Fix multihomed connection failures on 64-bit systems. Avoid the use of sizeof() and pointer arithmetic to get to the end of sctp_cookie structure. Instead use the last element peer_init which is a zero-sized array as the offset. [TCP]: BIC TCP for Linux 2.6.6 This is a version of Binary Increase Control (BIC) TCP developed by NCSU. It is yet another TCP congestion control algorithm for handling big fat pipes. For normal size congestion windows it behaves the same as existing TCP Reno, but when window is large it uses additive increase to ensure fairness and when window is small it uses binary search increase. For more details see the BIC TCP web page http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/ The original code was for web100 (2.4); this version is pretty much the same but targeted for 2.6 with less sysctl parameters and more constants. I don't have a real high speed long haul network to test, but when running over 1G links with delays, the performance is more stable (ie tests are repeatable) and as fast as existing Reno. [NET]: Undo marking sock_alloc() as static, still exported to modules. [SPARC64]: hugetlbpage.c needs linux/module.h [PATCH] run populate_rootfs() before initcalls I moved this a little too late - we need to run populate_rootfs() before running initcalls because some driver initcalls need to open files for firmware. The populate_rootfs() call is still coming after init_idle(), so it won't knock the scheduler over. Waste less memory in dentries. We don't bother aligining them on a cacheline boundary, since that is totally excessive in some configurations (especially P4's with 128-byte cachelines). Instead, we make the minimum inline string size a bit longer, and re-order a few fields that allow for better packing on 64-bit architectures, for better memory utilization. [ARM PATCH] 1844/1: Allow OMAP-730 and OMAP-5910 to use ARM926 in mm/Kconfig Patch from Tony Lindgren Adds OMAP-730 and OMAP-5910 support [ARM PATCH] 1846/1: OMAP update 1/2: arch files Patch from Tony Lindgren This patch syncs the mainline kernel with the linux-omap tree. The patch contains following updates: - Move virtual IO area to 0xfefb0000 from 0xfffb0000 to fix parts of IO area overlapping with ARM Linux reserved memory area - Add support to OMAP-730, OMAP-5912, and OMAP-1710 processors - Reorganize board support - Add OMAP core detection This patch requires ARM Linux patch 1844/1 be applied to compile OMAP-730 and OMAP-5912 [ARM PATCH] 1847/1: OMAP update 2/2: include files Patch from Tony Lindgren This patch syncs the mainline kernel with the linux-omap tree. The patch contains following updates: - Move virtual IO area to 0xfefb0000 from 0xfffb0000 to fix parts of IO area overlapping with ARM Linux reserved memory area - Add support to OMAP-730, OMAP-5912, and OMAP-1710 processors - Reorganize board support - Add OMAP core detection This patch requires ARM Linux patch 1844/1 be applied to compile OMAP-730 and OMAP-5912 [ARM PATCH] 1816/1: lh7a40x #2 (1/7) core Patch from Marc Singer Updated change set for the 2.6.5 kernel *and* for the April 8th arm patch. Also included are changes suggested by Russell that merge several of the files in the mach- directory. I have also endeavored to remove all unnecessary whitespace additions. Note that since I've found the cause of an annoying user-space crash, I believe that this patch is OK. The crash appears to have nothing to do with the system setup. [ARM PATCH] 1817/1: lh7a40x #2 (2/7) core-include Patch from Marc Singer Include files for this updated lh7a40x patch set. The changes in this set from the previous are mostly cosmetic. The memory macros were reworked in order to be more similar to the other ARM versions. The previous versions produced the same results, but the forms are slightly different. [ARM PATCH] 1818/1: lh7a40x #2 (3/7) doc Patch from Marc Singer Documentation for the Sharp-LH machines. [PATCH] ISDN Eicon driver: fix idi cleanup deadlock On IDI module cleanup, the freed card must be removed from list. Use list_empty() instead of list_for_each() loop. Thanks Linus. [PATCH] Fix machine check handler on x86-64 This fixes a bug in the new machine check handler on x86-64. One nasty part was that when you got an MCE during boot up then it would not always print it on the screen, but still panic because it attempted to kill the idle task. This patch does: - Always use KERN_EMERG when printing MCEs - Always panic and print on screen before killing idle loop or init. [PATCH] Fix x86-64 compilation without iommu for 2.6.6rc3 Various people hit this in earlier kernels. The x86-64 kernel did not compile without CONFIG_IOMMU_GART in various configurations. Just add the missing symbol and export it. Also export iommu_merge while I am at it. Mark the ACPI CPU throttle and timer IO regions busy. This should help some laptops where the generic PCI code might otherwise believe that this range is unused. The ACPI IO range is usually not visible as a standard BAR. Linux 2.6.6