Summary of changes from v2.6.9-rc4 to v2.6.9-final ============================================ [PATCH] ACPI: check parameter for NULL ACPI still explodes on my old PII and stops it booting. Anyway, it is oopsing in drivers/acpi/scan.c line 207 where element (which is NULL) gets dereferenced. The ACPI bios on this thing has always seemed to be pretty broken, but this at least allows the 'power' button to continue to work (the only reason why I want ACPI). [PATCH] megaraid 2.20.4: fix a data corruption bug Fixes a data corruption issue. Because of a typo in the driver, IO packets were wrongly shared by the IOCTL path. This caused the whole IO command to be replaced by an incoming IOCTL command. [PATCH] ppc64: one more explicit cmp instruction sizing Signed-off-by: David Woodhouse Signed-off-by: Linus Torvalds [PATCH] USB: corrected digi_acceleport 2.6.9-rc1 fix for hang on disconnect - Fixed hang on disconnect in digi_acceleport USB serial driver. See http://bugme.osdl.org/show_bug.cgi?id=2459. Close after disconnect no longer tries to communicate with the device. Signed-off-by: Al Borchers Signed-off-by: Greg Kroah-Hartman [PATCH] USB: "Lost sync on frames" error in konicawc module From: http://bugme.osdl.org/show_bug.cgi?id=3286 The kernel keeps printing "Lost sync on frames" error messages as soon as a program tries to access the webcam. No video data can be retrieved from the webcam. The following patch seems enough to solve the problem. (just inverting the order at which the old and new data blocks are sent to the user). Signed-off-by: Andrew Morton Signed-off-by: Greg Kroah-Hartman [PATCH] USB: EHCI SMP fix This addresses an SMP-only issue with the EHCI driver, where only one CPU should scan the schedule at a time (scanning is not re-entrant) but either the IRQ handler or a watchdog timer could end up starting it. Many thanks to Olaf Hering for isolating the failure mode, and testing this fix! Once once CPU starts scanning, any other might as well finish right away. This fix just adds a flag to detect that case. Signed-off-by: David Brownell Signed-off-by: Greg Kroah-Hartman [PATCH] USB: Fix oops in usblp driver This bug was reported back in July, and I sent out a patch but apparently it never got to you. The usblp driver was calling usb_buffer_free() from usblp_cleanup(), which runs after disconnect() if a user process holds the device open. But once the usb_device is gone usb_buffer_free() will oops. The patch frees the buffers in usb_disconnect() instead. Recently Joost Witteveen reported the same oops and found that the patch solved it for him. So there shouldn't be problems with accepting it. Signed-off-by: Alan Stern Signed-off-by: Vojtech Pavlik Signed-off-by: Greg Kroah-Hartman [PATCH] USB: net2280 updates Net2280 patches to: - Make reset logic ensure endpoint toggle and halt bits only get cleared on endpoints other than ep0 to fix an extremely unlikely (but possible) state when a setup packet come in after we've checked the reset status but before calling ep_reset(). - Avoid a disconnect hang by exchanging SUSPEND_IMMEDIATELY (intended for use when the 8051 is the PCI host) with SUSPEND_REQUEST_INTERRUPT to suspend the NET2280. - Make rmmod of gadget drivers trigger disconnect; earlier changes to reset logic broke this. Signed-off-by: Alex Sanks Signed-off-by: David Brownell Signed-off-by: Greg Kroah-Hartman [PATCH] USB: Fix hiddev devfs oops From: Herbert Xu There is a long-standing devfs_unregister oops in hid/hiddev. It's caused by hid calling hiddev_exit before unregistering itself which in turn calls hiddev_disconnect. hiddev_exit removes the directory which contains the hiddev devices. Therefore it needs to be called after the hiddev devices have been disconnected. Signed-off-by: Herbert Xu Signed-off-by: Andrew Morton Signed-off-by: Greg Kroah-Hartman [XFS] Fix up write_inode return type to use the right signedness. SGI Modid: xfs-linux:xfs-kern:19632a Signed-off-by: Nathan Scott [XFS] Fix regression when running in laptop mode, causes hangs on sync. SGI Modid: xfs-linux:xfs-kern:19744a Signed-off-by: Nathan Scott [XFS] fix a freeze/thaw deadlock Signed-off-by: Nathan Scott [PATCH] time interpolator fixes - Remove the setting of CLOCK_REALTIME and CLOCK_MONOTONIC resolution according to the interpolator resolution since this causes periodic timer signals to fail. The clocks will still be high-resolution but the "resolution" reported reflects the timer intervals possible via timer_settime (also more conformant to what the Single Unix Specification says). - Make the IA64 clock_gettime fastcall fall back on negative clock numbers instead of returning CLOCK_REALTIME. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] fix oops in fork() cleanup path It will oops on an error path if the thread being forked is a process with a NULL mm. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] revert writeback threshold changes The post-2.6.8 recent tweaks to the page writeback thresholding code seems to be doing the wrong thing for small unmapped_ratios - nathans had a few problems with it. The problem it was trying to fix is minor and fairly theoretical anyway, so back it out to the old code. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] m32r: fix syscall table This patch fixes the system call table for m32r. The latest kernel cannot be linked for m32r, because the following experimental syscalls doesn't exist in the prepatch kernel of bk-tree. * include/asm-m32r/unistd.h: - Remove syscalls from #285(perfctr_info) to #293(keyctl). * arch/m32r/kernel/entry.S: ditto. Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] m32r: remove obsolete system calls This patch is for removing obsolete system calls from m32r kernel, such as old_mmap and old_select. * arch/m32r/kernel/entry.S: - Remove an obsolete system call, old_mmap, from the syscall table. * arch/m32r/kernel/sys_m32r.c: - Remove obsolete system calls, old_mmap() and old_select(). - do_mmap2() is renamed to sys_mmap2(). * CAUTION (for m32r users): The new kernel (applied this patch) does not have a backward compatibility. The new kernel and old library pair does not work. So, those who want to use the new kernel must use a new version of glibc (the GNU C library), which uses the "mmap2(_NR_mmap2)" syscall for __mmap() instead of the "old_mmap(__NR_mmap)". The new glibc package, libc6_2.3.2.ds1-16.0.3_m32r.deb, is provided on the following site, please apt-get/download it and upgrade. http://debian.linux-m32r.org/dists/03_cambrian/main/binary-m32r/ Signed-off-by: Hirokazu Takata Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] cyber2000: fix init/exit section confusion - cyberpro_free_fb_info() is called by both __devinit & __devexit code, so it cannot be __devinit. - igs_regs[] is used by resume code (indirectly), so it cannot be discardable. This leaves one reference in cyber2000fb that 'make buildcheck' complains about, but I believe that it's OK, that being ".probe" here: static struct pci_driver cyberpro_driver = { .name = "CyberPro", .probe = cyberpro_pci_probe, Signed-off-by: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] ptep_establish smp race x86 PAE >4G This avoid userspace mm corruption during COWs with threads (i.e. malloc;fork;clone) on x86 PAE with >4G of ram Signed-Off-By: Andrea Arcangeli Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] Fix oops in parkbd parkbd - zero-fill allocated serio structure to prevent Oops when registering port. Signed-off-by: Dmitry Torokhov Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] auth_domain_lookup fix This patch makes sure that auth_domain_lookup returns NULL when it doesn't find a matching entry, rather than the last entry in the hash chain. Signed-off-by: Olaf Kirch Acked-by: Neil Brown Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] Fix MTD build error for Lubbock map driver Without this patch, Lubbock is pretty unusable in current 2.6.9-rc4. The same fix already present in the MTD CVS. Signed-off-by: Nicolas Pitre Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] Fix reporting of process start times Derive process start times from the posix_clock_monotonic notion of uptime instead of "jiffies", consistent with the earlier change to /proc/uptime itself. (http://linus.bkbits.net:8080/linux-2.5/cset@3ef4851dGg0fxX58R9Zv8SIq9fzNmQ?na%0Av=index.html|src/.|src/fs|src/fs/proc|related/fs/proc/proc_misc.c) Process start times are reported to userspace in units of 1/USER_HZ since boot, thus applications as procps need the value of "uptime" to convert them into absolute time. Currently "uptime" is derived from an ntp-corrected time base, but process start time is derived from the free-running "jiffies" counter. This results in inaccurate, drifting process start times as seen by the user, even if the exported number stays constant, because the users notion of "jiffies" changes in time. It's John Stultz's patch anyways, which I only messed up a bit, but since people started trading signed-off lines on lkml: Signed-off-by: Tim Schmielau Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] SELinux: retain ptracer SID across fork This fixes a bug in SELinux to retain the ptracer SID (if any) across fork. Otherwise, SELinux will always deny attempts by traced children to exec domain-changing programs even if the policy would have allowed the tracer to trace the new domains as well. Signed-off-by: Stephen Smalley Signed-off-by: James Morris Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] SELinux: fix bugs in mprotect hook The patch below by Roland McGrath fixes two bugs in the implementation of the selinux_file_mprotect hook: It calls selinux_file_mmap, which has two problems. First, the stacked security module will get both mmap and mprotect callbacks for an mprotect call, which is wrong. Secondly, the vm_flags value contains VM_* bits, and these do not match the MAP_* bits of the same name or function, so it passes bogus flags and causes every mprotect to be treated as if MAP_SHARED were in use. The patch shares the common code while not having one function call the other, and fixes these two bugs. Signed-off-by: James Morris Signed-off-by: Roland McGrath Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: don't declare cpu_online - fix compilation error Avoid redeclaring again (resulting in a compilation error) cpu_online and cpu_*_map, which are now declared elsewhere. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: fix wrong type for rb_entry call With the type-safe rb_entry (based on container_of, I sent it) I discovered this type error, so I've fixed it. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: fix warning for unused var That var is used only when CONFIG_UML_REAL_TIME_CLOCK is on, so #ifdef its definition. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: finish update for 2.6.8 API changes Add some updates for API changes in 2.6.8 which were not included in the original UML patch; these fixes were detected by some warnings, so I probably missed some more ones. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: fix an "unused" warnings Fixes some random warnings. To avoid "defined but not used" for not_configged_ops, make it be defined only if at least one channel is not defined. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: export more Symbols Adds a lot more EXPORT_SYMBOLS calls. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: Set cflags before including arch Makefile If arch/$(ARCH)/Makefile is included before adding -O2 (and the rest) to CFLAGS, I must duplicate the addition of it to USER_CFLAGS for UML. So let's fix this. Also, the below code is useless, since if CONFIG_DEBUG_INFO is y, then CONFIG_FRAME_POINTER is always y. ifeq ($(CONFIG_DEBUG_INFO),y) CFLAGS := $(subst -fomit-frame-pointer,,$(CFLAGS)) endif Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: force using /bin/bash for building This forces make to use bash rather than whatever /bin/sh is linked to. Without this, since there are some bash extensions used in the build and when /bin/sh isn't bash, then the build fails without a clear error message. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: no extraversion in arch/um/Makefile for mainline Extraversion in arch/um/Makefile is not needed in mainline, but just for separate patches; also, they should set it in the main Makefile, not elsewhere (Jeff Garzik has just complained). Also remove the dependency from version.h on arch/um/Makefile: it was added because arch/um/Makefile could change the kernel version number. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: Single Linking Step for vmlinux Uml-specific patch (which requires a mainline hook, mailed separately). This patch avoid the linking kludge which leaves kbuild link vmlinux and then link it with libc inside linux. This kludge has the big problem of making kallsyms break, since the kallsyms pass is done on a completely Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: make -j fix Makes the UML build system work well even under parallel make (tested, so far, even with -j50). Please notice that it must be updated for every makefile change. Or better, every makefile change must use correct dependencies (and they are easy to miss). Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: update makefile to new kbuild API names Drop the usage of check_gcc and host-progs, and use their new names. A must-have :-). Oh, and it will create lots of serious problems - it will give me your root account! Yes, you don't see the code in the patch, but it happens! :-))) Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: kbuild - add even more cleaning Remove one more symlink when doing make mrproper ARCH=um Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: mark broken configs Some configuration options are known not to compile. So then make them depend on CONFIG_BROKEN. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: fix ubd deadlock on SMP From: BlaisorBlade , Chris Wright Avoid deadlocking onto the request lock in the UBD driver, i.e. don't lock the queue spinlock when called from the request function. In detail: Rename ubd_finish() to __ubd_finish() and remove ubd_io_lock from it. Add wrapper, ubd_finish(), which grabs lock before calling __ubd_finish(). Update do_ubd_request to use the lock free __ubd_finish() to avoid deadlock. Also, apparently prepare_request is called with ubd_io_lock held, so remove locks there. Signed-off-by: Chris Wright Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: use always a separate io thread for UBD Currently, ubd=sync is different from replacing ubd#= with ubd#s=. This is against Principle of Least Surprise, so remove this difference. Also the current ubd=sync behaviour is completely useless: it is to make sure that when the kernel has synched its I/O to the virtual disk, the host does not invalidate this with his caching; this causes ReiserFS corruption. But since actually we call end_request() only after the io_thread has done its work, we never lie to the block layer. Using O_SYNC as we do when replacing ubd#= with ubd#s= is enough. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] uml: fix critical IP checksum corruption From: Lars Ellenberg Add a memory barrier to the assembly checksum code - the code was copied straight from the i386 one, and the patch resyncs the code with the original. I'll check if the original code can be included directly (i.e. "#include") after 2.6.9. Without this patch, every 2.6 UML release corrupts the checksum of every UDP fragmented packet with size >= MTU (verified by various people, we all agree on this issue; nobody reported "Works fine here"). The corrupted packets are not accepted, thus blocking any kind of communication with large-sized UDP packets. In fact, I've even dissected the UML -> host traffic before and after this patch with Ethereal - and it always reported an incorrect checksum for fragmented UDP packets before and always correct after applying the patch. Signed-off-by: Paolo 'Blaisorblade' Giarrusso Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] H8/300 some error/warning fix Signed-off-by: Yoshinori Sato Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds Fix threaded user page write memory ordering Make sure we order the writes to a newly created page with the page table update that potentially exposes the page to another CPU. This is a no-op on any architecture where getting the page table spinlock will already do the ordering (notably x86), but other architectures can care. Take the whole PCI bus range into account when scanning PCI bridges. A bridge that has been set up by firmware to cover multiple PCI buses but doesn't actually have anything connected behind some of them caused us to use the incorrect maxmimum bus number span when scanning the bridge chip. Problem reported by Tim Saunders, with Russell King suggesting the fix. [PATCH] PCI Hotplug: rpaphp safe list traversal Hoping you will accept this fix. The bug can cause a crash upon hotplug remove. The bug involves unsafe traversal of a list while deleting list members. The fix uses list_for_each_safe() rather than list_for_each(). Also threw in an initialization to get rid of a compiler warning. Signed-off-by: John Rose Signed-off-by: Greg Kroah-Hartman Linux 2.6.9-final Let's try the 2.4.x release methodology