Summary of changes from v2.6.9-rc4 to v2.6.9 ============================================ [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 [PATCH] ext3 direct io assert fix Fix bug identified by Badari Pulavarty Local variable `handle' will become stale if ext3_direct_io_get_blocks() closes off the current transaction and starts a new one. This causes a BUG in journal_stop(). So reacquire the handle from *current after performing the I/O. Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] ppc64: Split iomap implementation & eeh ! Nowadays, it's possible to build CONFIG_PPC_PMAC without CONFIG_PPC_PSERIES, in which case, eeh will not be included in the build (and the eeh checks are turned into no-ops). However, we then "lose" the iomap functions. This patch moves them to a separate file. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Linus Torvalds [PATCH] ppc32: Add "native" iomap interfaces This patch adds proper ppc32 "iomap" interfaces. Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Linus Torvalds [PATCH] ppc64: fix some issues with mem_reserve I found a couple of issues with reserve_mem: - If we try and mem_reserve something of zero length, everything reserved after it would get ignored. This is because early_reserve_mem sees a zero length as a terminator. - The code rounded the top down instead of up. Signed-off-by: Anton Blanchard Signed-off-by: Linus Torvalds [PATCH] joydump needs gameport Signed-off-by: Adrian Bunk Signed-off-by: Linus Torvalds [PATCH] ppc64: more issues with mem_reserve As Milton noticed, Anton actually broke the logic if the memory isn't aligned in the first place. Sorry about this mess for such a little piece of code. This _really_ fixes is it all Signed-off-by: Benjamin Herrenschmidt Signed-off-by: Linus Torvalds [PATCH] intel_agp: dangling devexit reference Fix error found by 'scripts/reference_discarded.pl': Error: ./drivers/char/agp/intel-agp.o .data refers to 00000914 R_386_32 .exit.text Signed-off-by: Randy Dunlap Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] tailcall prevention in sys_wait4() and sys_waitid() A hack to prevent the compiler from generatin tailcalls in these two functions. With CONFIG_REGPARM=y, the tailcalled code ends up stomping on the syscall's argument frame which corrupts userspace's registers. Signed-off-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] swsusp: fix x86-64 - do not use memory in copy loop In assembly code, there are some problems with "nosave" section (linker was doing something stupid, like duplicating the section). We attempted to fix it, but fix was worse then first problem. This fixes is for good: We no longer use any memory in the copy loop. (Plus it fixes indentation and uses meaningful labels.) Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] kswapd lockup fix Fix some bugs in the kswapd logic which can cause kswapd lockups. The balance_pgdat() logic is supposed to cause kswapd to loop across all zones in the node until each zone either a) has enough pages free or b) is deemed to be in an "all pages unreclaimable" state. In the latter case, we just give the zone a light scan on each balance_pgdat() scan and wait for the zone to come back to life again. But the zone->all_unreclaimable logic is broken - if the zone has no pages on the LRU at all, we perform no scanning of that zone (of course). So the zone->pages_scanned is not incremented and the expression if (zone->pages_scanned > zone->present_pages * 2) zone->all_unreclaimable = 1; never is satisfied. The patch changes that logic to if (zone->pages_scanned >= (zone->nr_active + zone->nr_inactive) * 4) zone->all_unreclaimable = 1; so if the zone has no LRU pages it will still enter the all_unreclaimable state. Another problem is that if the zone has no LRU pages we will tell shrink_slab() that we scanned zero LRU pages. This causes shrink_slab() to scan zero slab objects, which is obviously wrong. So change shrink_slab() to perform a decent chunk of slab scanning in this situation. And put a cond_resched() into the balance_pgdat() outer loop. Probably unnecessary, but that's what Jeff had in place when he confirmed that this patch fixed the lockup :( Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [PATCH] ppc64: fix smp_startup_cpu for cpu hotplug This change is needed in order to allow cpus to be onlined after boot. This used to work but the declaration of pseries_secondary_smp_init in this file was changed in Ben's big cleanup patch a while back, so the cpu would start at a bad address. Signed-off-by: Nathan Lynch Signed-off-by: Linus Torvalds [PATCH] Fix NFS3 krb5 clients on x86-64 This patch is necessary to make NFS3 krb5 clients work on x86-64. ACK'ed by Trond Signed-off-by: Mark Goodman Signed-off-by: Adrian Bunk Signed-off-by: Linus Torvalds [PATCH] security issue in firmware system The firmware loader has a security issue. Firmware on some devices can write to all memory through DMA. Therefore the ability to feed firmware to the kernel is equivalent to writing to /dev/kmem. CAP_SYS_RAWIO is needed to protect itself. [ Editors note: the firmware file is 0644, and owned by root, so this "security issue" is really only an issue for people who use capabilities explicitly, rather than the regular Unix permissions. This patch makes it do the same checks we do for /dev/mem etc. ] Signed-Off-By: Oliver Neukum Signed-off-by: Andrew Morton Signed-off-by: Adrian Bunk Signed-off-by: Linus Torvalds [PATCH] unbalanced locking in MTD Intel chip driver This obvious missing unlock is screwing the preemption count. Fix was applied to MTD CVS already. Signed-off-by: Nicolas Pitre Signed-off-by: Linus Torvalds [PATCH] Duh. _Really_ unbalanced locking in MTD Intel chip driver I apparently can't copy simple obvious fixes by hand. Signed-off-by: Nicolas Pitre Signed-off-by: Linus Torvalds [PATCH] USB: handle NAK packets in input devices. Andrew requested this fix go in before 2.6.9 was out, to keep people's syslog quiet for a lot of different USB input devices. Fixes bug bugzilla.kernel.org bug #3564 Signed-off-by: Greg Kroah-Hartman Signed-off-by: Linus Torvalds Linux 2.6.9