If you download any software from this web site please be aware of the Warranty Disclaimer and Limitation of Liabilities.
These patches contain the following linux kernel bug fixes:
- cio: 0 is a valid CHPID.
- /sys/devices/css0/chp0.0 is not created, although devices that use the channel path with id 0 are present in the system.
- 0 was not considered a valid CHPID.
- Check for CHPID validity via the path installed mask (pim).
- cio: I/O request failure after CHPID deactivation.
- CCW device I/O fails after CHPID vary off operation despite remaining paths.
- After I/O finishes during CHPID vary grace period, path verification is not started.
- Start path verification after I/O finished during grace period.
- cio: css_probe_device() must be called enabled.
- 'BUG: sleeping function called from invalid context' message when re-defining a device number with 'DEFINE xxxx AS yyyy' in z/VM.
- In case of a revalidate machine check, css_probe_device() was called while interrupts were still disabled.
- Move call to css_probe_device() after interrupts have been re-enabled.
- cio: inaccessible device after CHPID deactivation.
- CCW device enters state 'no device' after a CHPID is deactivated.
- Internal I/O operations are not re-tried when aborted by CHPID deactivation.
- Re-try internal I/O when aborted by CHPID deactivation.
- cio: incorrect detection of unsolicited interrupts during sense pgid.
- Calls to set a device online with path grouping may get stuck in some cases. This can result in a hang during boot or when trying to set a device online at a later time.
- Certain device conditions were discarded in response to unsolicited interrupts.
- Check subchannel activity in these cases and re-try if the subchannel is idle.
- cio: incorrect device operational notification.
- DASD device driver reports failed I/O request after running out of re-tries when channel paths become unavailable during path verification.
- Device operational notifications are reported to the device driver even though device has become unavailable during the course of path verification.
- Reset device operational notification flag on failed path verification.
- cio: incorrect no-path indication after machine check.
- Device enters no-path state after disabling a channel path via the SE even though another path has been reenabled at the SE.
- Device is set into no-path state before triggering path verification even though other paths may have become available.
- Trigger path verification before setting a device into no-path state.
- cio: path group not updated by CHPID vary operation.
- CHPIDs that are logically varied off will not be removed from a CCW device's path group.
- Command resign-from-pathgroup is issued with invalid path mask of 0 because internal CCW operations are masked by the logical path mask after the relevant bits are cleared by the vary operation.
- Do not apply logical path mask to internal operations.
- cio: path verification ignores re-appearing channel paths.
- Re-appearing channel paths are sometimes not utilized by CCW devices.
- Path verification incorrectly relies on path-operational-mask information which is not updated until a channel path has been used again.
- Modify path verification procedure to always query all available paths to a device.
- cio: race condition leaves device in inaccessible state.
- Availability of CCW device becomes 'no path' or 'no device' for no apparent reason.
- Asynchronous subchannel evaluation operates channel without proper locking.
- Add locking to subchannel evaluation.
- cio: subchannel scan loop for re-appearing channel paths ends early.
- Subchannel may incorrectly remain in state no-path after channel paths have re-appeared.
- The scan for subchannels which are using a channel path ends at the first occurrence if a full link address was provided by the channel subsystem.
- Always continue scan for subchannels after first occurrence.
- dasd: Failing partition detection during device bring-up.
- Setting a device online either failing or leading to invalid (-24) partition size.
- DASD allows to open a device as soon as gendisk is registered,
which means that the device is a fake device (capacity=0) and we
do know nothing about blocksize and partitions at that point of
In case the device is opened by someone, the bdev and inode creation is done with the fake device info and the following partition detection code is just using these wrong data (capacity = 0 minus offset 24 leading to a partition size = -24).
- Modify the DASD state machine to make sure that the open is rejected until the device analysis is either finished or a unformatted device was detected.
- kernel: incorrect copy_in_user.
- Incorrect execution of 31-bit programs on a 64-bit kernel.
- The copy_in_user function copies 1 byte too much.
- Correct the copy_in_user function.
- applicable for 64-bit Linux, only
- kernel: user readable un-initialized kernel memory.
- A user space program can read un-initialized kernel memory by appending to a file from a bad address and then reading the result back. The cause is the copy_from_user function that does not clear the remaining bytes of the kernel buffer after it got a fault on the user space address.
- Fix the copy_from_user function to clear the remaining bytes of the kernel buffer after a user space fault.
- qeth: After cable pull (out/in) device does not work.
- After cable pulling, DMESG said that qeth successfully recovered, but PING ist not working.
- Recovery procedure does not correctly handle netif carrier.
- When the link is established again call netif_carrier_on before starting the card recovery.
- qeth: do not manipulate outgoing cloned skbs.
- tcpdump shows damaged LL headers for outgoing vlan packets.
- The skb given to qeth is a clone, so qeth is not allowed to change the skb.
- Create a copy of the skb and change the copy not the clone.
- qeth: VLAN header re-ordering does not work on packets received through qeth interface in layer 2 mode.
- dhcpcd (dhcp client) does not work.
- qeth removes vlan tag and uses vlan_hwaccel_rx(). vlan driver does not do header re-ordering because it is not necessary for hw accelerated packets. Looking at the packet in memory the ip header is prefixed by vlan (not ethernet as expected by dhcpcd).
- Since qeth layer 2 mode is not hardware accelerated, qeth should not remove vlan tag and call vlan_hwaccel_rx(). Leave the packet as is and call netif_rx() instead of vlan_hwaccel_rx(), so that the vlan driver will do the job of header re-ordering.
- z90crypt: Logfile flooding when no crypto hardware is available.
- z90crypt floods logfiles when no hardware is available with unnecessary error messages.
- probe_crypto_domain() in z90main.c is periodically called to scan AP bus for devices. If no devices are found an error message is printed regardless if this error message was printed earlier.
- Provide new PRINTK.*_ONCE macro to print an error message only once.
Everybody should apply this patch.
To create the complete linux kernel sources, the following patches need to be applied in sequence:
linux-2.6.5.tar.gz (see www.kernel.org/pub/linux/kernel/v2.6)
+ linux-2.6.5-s390-base-april2004.diff (IBM)
+ linux-2.6.5-s390-01-april2004.diff (IBM)
+ xipfs612 (see linuxvm.org/patches/index.html)
+ xipfs622 (see linuxvm.org/patches/index.html)
+ linux-2.6.5-s390-02-april2004.diff (IBM)
+ linux-2.6.5-s390-03-april2004.diff (IBM)
+ single threaded workqueue patch (see marc.theaimsgroup.com/?l=bk-commits-head&m=108305028322900&q=raw)
+ linux-2.6.5-s390-04-april2004.diff (IBM)
+ linux-2.6.5-s390-05-april2004.diff (IBM)
+ linux-2.6.5-s390-06-april2004.diff (IBM)
+ linux-2.6.5-s390-07-april2004.diff (IBM)
+ linux-2.6.5-s390-08-april2004.diff (IBM)
+ linux-2.6.5-s390-09-april2004.diff (IBM)
+ linux-2.6.5-s390-10-april2004.diff (IBM)
+ linux-2.6.5-s390-11-april2004.diff (IBM)
+ linux-2.6.5-s390-12-april2004.diff (IBM)
+ linux-2.6.5-s390-13-april2004.diff (IBM)
+ linux-2.6.5-s390-14-april2004.diff (IBM)
+ linux-2.6.5-s390-15-april2004.diff (IBM)
+ linux-2.6.5-s390-16-april2004.diff (IBM)
+ linux-2.6.5-s390-17-april2004.diff (IBM)
+ linux-2.6.5-s390-18-april2004.diff (IBM)
+ linux-2.6.5-s390-19-april2004.diff (IBM)
+ linux-2.6.5-s390-20-april2004.diff (IBM)
+ linux-2.6.5-s390-21-april2004.diff (IBM)
+ linux-2.6.5-s390-22-april2004.diff (IBM)
+ linux-2.6.5-s390-23-april2004.diff (IBM)
+ linux-2.6.5-s390-24-april2004.diff (IBM)
+ linux-2.6.5-s390-25-april2004.diff (IBM)
+ linux-2.6.5-s390-26-april2004.diff (IBM)
+ linux-2.6.5-s390-27-april2004.diff (IBM)
+ linux-2.6.5-s390-28-april2004.diff (IBM)
+ linux-2.6.5-s390-29-april2004.diff (IBM)
+ linux-2.6.5-s390-30-april2004.diff (IBM)
+ linux-2.6.5-s390-31-april2004.diff (IBM)
+ linux-2.6.5-s390-32-april2004.diff (IBM)
+ linux-2.6.5-s390-33-april2004.diff (IBM)
+ linux-2.6.5-s390-34-april2004.diff (IBM)
+ linux-2.6.5-s390-35-april2004.diff (IBM)
+ linux-2.6.5-s390-36-april2004.diff (IBM)
+ linux-2.6.5-s390-37-april2004.diff (IBM)
+ linux-2.6.5-s390-38-april2004.diff (IBM)
+ linux-2.6.5-s390-39-april2004.diff (IBM)
+ linux-2.6.5-s390-40-april2004.diff (IBM)