2007-05-31 kernel 2.6.16 bug fix patch 15 ("October 2005")

If you download any software from this web site please be aware of the Warranty Disclaimer and Limitation of Liabilities.

linux-2.6.16-s390-15-october2005.tar.gz / MD5 ... accumulated patch, recommended (2007-05-31)

linux-2.6.16-s390-15-october2005-patches.tar.gz / MD5 ... per-problem-patches, recommended (2007-05-31)

This patch contains the following linux kernel bug fixes:

Description:
cio: Device status validity.
Symptom:
Device driver assumes final status for request while it is not.
Problem:
Device status in IRB contains channel end/device end, but it is invalid.
Solution:
Only accumulate device status field in IRB if it is valid.
Problem-ID:
34136
Description:
cio: Handle clear interrupts correctly.
Symptom:
ioctl(BIODASDDISABLE) hangs.
Problem:
The dasd driver issues a clear subchannel for an I/O for which no final status has been received. The common I/O layer had accumulated a primary status into its internal IRB to which the interrupt for the clear subchannel is accumulated, resulting in an IRB not recognized as final status and not delivered to the dasd driver.
Solution:
Wipe internal IRB if the clear function bit is set before accumulating bits from the irb in order to follow hardware behavior.
Problem-ID:
32612
Description:
cio: Re-start path verification after aborting internal I/O.
Symptom:
Devices are not informed of a no-path state but get an deferred cc=3 when trying to start I/O.
Problem:
Path verification triggered by changes to the available CHPIDs will be interrupted by another change but not re-started. This results in an invalid path mask.
Solution:
Make sure to completely re-start path verification when changing the available paths.
Problem-ID:
33533
Description:
cmm2: locking problem in shmem_getpage.
Symptom:
Message "BUG: sleeping function called from invalid context at /include/linux/pagemap.h:155".
Problem:
shmem_getpage takes a spinlock then does a lookup in the swap cache. If a page is found but can not be made stable it is discarded. The page_discard function is called while still holding the lock and calls lock_page which might sleep.
Solution:
Release the lock before discarding the page and then re-acquire the lock.
Problem-ID:
-
Note:
applicable for 64-bit Linux, only
Description:
dasd: Add sysfs-attribute 'status' and generate uevent(CHANGE) for the ccw-device.
Symptom:
Device status not available in user-space.
Problem:
Since status information for DASD devices is not available in user-space, it is not possible for user-space applications to implement appropriate processing.
Solution:
Make status available via sysfs and generate uevent for each status change.
Problem-ID:
29168
Description:
dasd: Race condition in dasd_eckd_dump_sense.
Symptom:
Kernel crash in dasd_eckd_dump_sense.
Problem:
Data access outside allocated buffer because the routine did not take care about IDALs.
Solution:
Check for IDALs flag set in CCW.
Problem-ID:
-
Description:
kernel: Enable user-copy functions for non-GPL modules.
Symptom:
Non-GPL kernel modules cannot use user-copy functions.
Problem:
The uaccess_ops struct is exported via EXPORT_SYMBOL_GPL, which prevents all non-GPL modules from using any user-copy function.
Solution:
Export uaccess_ops struct via EXPORT_SYMBOL.
Problem-ID:
-
Description:
kernel: Handling of page table entries of discarded swap pages.
Symptom:
Anonymous, swapped memory gets zero in the forked process.
Problem:
The copy of the page table entries is not done correctly when copy_page_range is called e.g. by fork for a page table that contains entries to discarded swap pages.
Solution:
Fix the placement of the check for discarded pages in copy_one_pte and replace PTEs to a discarded swap pages with the correct swap entry.
Problem-ID:
-
Description:
kernel: Handling of remap_file_pages and discarded pages.
Symptom:
Pages remapped with remap_file_pages appear at the wrong offset in the mmap after the pages went through a discard.
Problem:
The PTEs of a non-linear mapping are replaced with the empty PTE when a page gets discarded.
Solution:
Replace the PTEs of non-linear mappings of discarded pages with the correct file PTE.
Problem-ID:
-
Note:
applicable for 64-bit Linux, only
Description:
qdio: Time calculation is wrong.
Symptom:
Time calculation in qdio_get_micros does not return microseconds as expected.
Problem:
The return value of get_clock is shifted by 10, which does not return microseconds.
Solution:
Use value 12 for shift operation to get microseconds.
Problem-ID:
34529
Description:
qdio: Too many interrupts on qdio-driven devices.
Symptom:
qdio is getting more interrupts than needed.
Problem:
Appropriate Data Channel is used without QEBSM support. When receiving a bunch of SBALs on the input queue which are in state PRIMED, qdio is processing them sequentially and set their state from 0x82 to 0x80. But it never sets the last one to 0x81 which should be set to avoid further interrupts.
Solution:
On the last SBAL set its state to 0x81 to avoid further interrupts.
Problem-ID:
34522
Note:
applicable for 64-bit Linux, only
Description:
qdio: System hang with zfcp in case of adapter problems.
Symptom:
System hang after enforced zfcp adapter outage for Linux on System z running under z/VM.
Problem:
The QDIO-QEBSM-support (V=V-support) is active. The enforced adapter outage results in a ccq-value 65 returned from the adapter after an outbound request, where qdio-buffers have to be set to PRIMED state. In case of a returned ccq value 65 none of the qdio buffers might be set to PRIMED, which causes an endless loop in the qdio-code.
Solution:
Stop trying to set qdio-buffers to PRIMED state, if an attempt returns with 0 as the number of processed buffers.
Problem-ID:
33046
Description:
qeth: Keep set layer2 MAC address (Virtual NIC recovery).
Symptom:
After Virtual NIC recovery old MAC address is not kept.
Problem:
If a z/VM Virtual NIC is coupled to a LAN of type. QDIO ETHER, z/VM generates an initial MAC address. This MAC address can be changed later on. But after qeth recovery of such a device, a changed MAC address is lost and the z/VM-generated MAC address is used.
Solution:
If running under z/VM with a Virtual NIC layer2 qeth interface, a set MAC address should be kept after qeth recovery.
This is especially important for a bonding setup over Virtual NICs.
Problem-ID:
33480
Description:
zfcp: Fix initialization of zfcp FSF timer.
Symptom:
The command san_disc -c PORT_LIST does not show all the available PORTs. Furthermore, it gives different results each time.
Problem:
FSF timer was not correctly initialized, it was already expired at the time of initialization.
Solution:
Correctly initialize the timer with jiffies+timeout.
Problem-ID:
32828
Note:
applicable for 64-bit Linux, only
Description:
zfcp: I/O stall after deleting and path checker changes after re-enabling zfcp device.
Symptom:
Setting one zfcp device offline using chccwdev in a multipath environment and waiting will lead to I/O stall on all paths. After setting the zfcp device back online using chccwdev, the devices with I/O stall will have a different path checker.
Problem:
Devices corresponding to the deleted units are never freed. This has the effect that 'slave_destroy' is never called and zfcp still thinks that this unit is registered (ZFCP_STATUS_UNIT_REGISTERED is still set). Hence the erp routine is not called correctly and the unit is not enabled properly.
Solution:
Do not delete rport and the sdev. Just set the host to block on 'offline'. Host online would then just remove the blocked status and everything would be good again.
Problem-ID:
32746
Note:
applicable for 64-bit Linux, only
Description:
zfcp: I/O stall with blast during cable pull with linebreaker.
Symptom:
Running I/O on many filesystems while simulating 1.5min cable pulls between storage system and switch results in I/O stalls on most filesystems.
Problem:
The scsi_er_timer for an adapter was used twice. One usage was for an abort or a unit reset. Second usage must have happened when zfcp_scsi_eh_timed_out handler was called. Problem is that the timer was deleted by one user and the adapter is stuck. So there is no timer active to trigger an adapter re-open.
Solution:
Introduced struct timer_list to struct zfcp_fsf_req. So if a timer is needed for an FSF request, fsf_req->timer can be used.
Problem-ID:
27943
Note:
applicable for 64-bit Linux, only
Description:
zfcp_hbaapi: Add license macro.
Symptom:
Loading of zfcp_hbaapi module fails with error message:
"Unknown symbol in module, or unknown parameter (see dmesg)"
dmesg shows:
"zfcp_hbaapi: module license 'unspecified' taints kernel.
zfcp_hbaapi: Unknown symbol uaccess".
Problem:
Only GPL modules are allowed to access the kernel function uaccess.
Solution:
Add the license macro MODULE_LICENSE("GPL") to zfcp_hbaapi. The GPL license was already specified in the file header, now the kernel module loader knows about it, too.
Problem-ID:
32724
Note:
applicable for 64-bit Linux, only

Everybody should apply this patch.

To create the complete linux kernel sources, the following patches need to be applied in sequence:

linux-2.6.16.tar.gz (from http://www.kernel.org/pub/linux/kernel/v2.6)
+ linux-2.6.16-s390-base-october2005.diff (IBM)
+ linux-2.6.16-s390-01-october2005.diff (IBM)
+ linux-2.6.16-s390-02-october2005.diff (IBM)
+ linux-2.6.16-s390-03-october2005.diff (IBM)
+ linux-2.6.16-s390-04-october2005.diff (IBM)
+ linux-2.6.16-s390-05-october2005.diff (IBM)
+ linux-2.6.16-s390-06-october2005.diff (IBM)
+ linux-2.6.16-s390-07-october2005.diff (IBM)
+ linux-2.6.16-s390-08-october2005.diff (IBM)
+ linux-2.6.16-s390-09-october2005.diff (IBM)
+ linux-2.6.16-s390-10-october2005.diff (IBM)
+ linux-2.6.16-s390-11-october2005.diff (IBM)
+ linux-2.6.16-s390-12-october2005.diff (IBM)
+ linux-2.6.16-s390-13-october2005.diff (IBM)
+ linux-2.6.16-s390-14-october2005.diff (IBM)
+ linux-2.6.16-s390-15-october2005.diff (IBM)

Contact the IBM team

If you want to contact the Linux on System z IBM team refer to the Contact the Linux on System z IBM team page.