[kernel] r7688 - in dists/trunk/linux-2.6/debian: . patches/bugfix

maximilian attems maks-guest at alioth.debian.org
Sat Nov 4 03:41:19 UTC 2006


Author: maks-guest
Date: Sat Nov  4 04:41:18 2006
New Revision: 7688

Modified:
   dists/trunk/linux-2.6/debian/changelog
   dists/trunk/linux-2.6/debian/patches/bugfix/2.6.18.2
Log:
add official 2.6.18.2 from lkml
merge it's huge changelog of 62 changes, 1 ipv6 security fix


Modified: dists/trunk/linux-2.6/debian/changelog
==============================================================================
--- dists/trunk/linux-2.6/debian/changelog	(original)
+++ dists/trunk/linux-2.6/debian/changelog	Sat Nov  4 04:41:18 2006
@@ -52,9 +52,70 @@
   * [s390]: Fix funny timespeed on hercules emulator. (closes: 395247)
   * bcm43xx: Add full netdev watchout timeout patch. (closes: 392065)
     Thanks Sjoerd Simons <sjoerd at spring.luon.net> for the testing.
-  * Add stable prerelease 2.6.18.2:
+  * Add stable release 2.6.18.2:
     - Remove not yet released, revert the included patches.
     - Keep aboves bcm43xx fix, it's more complete.
+    - Watchdog: sc1200wdt - fix missing pnp_unregister_driver()
+    - fix missing ifdefs in syscall classes hookup for generic targets
+    - JMB 368 PATA detection
+    - usbfs: private mutex for open, release, and remove
+    - sound/pci/au88x0/au88x0.c: ioremap balanced with iounmap
+    - x86-64: Fix C3 timer test
+    - Reintroduce NODES_SPAN_OTHER_NODES for powerpc
+    - ALSA: emu10k1: Fix outl() in snd_emu10k1_resume_regs()
+    - IB/mthca: Use mmiowb after doorbell ring
+    - SCSI: DAC960: PCI id table fixup
+    - ALSA: snd_rtctimer: handle RTC interrupts with a tasklet
+    - JFS: pageno needs to be long
+    - SPARC64: Fix central/FHC bus handling on Ex000 systems.
+    - SPARC64: Fix memory corruption in pci_4u_free_consistent().
+    - SPARC64: Fix PCI memory space root resource on Hummingbird.
+    - Fix uninitialised spinlock in via-pmu-backlight code.
+    - SCSI: aic7xxx: pause sequencer before touching SBLKCTL
+    - IPoIB: Rejoin all multicast groups after a port event
+    - ALSA: Dereference after free in snd_hwdep_release()
+    - rtc-max6902: month conversion fix
+    - NET: Fix skb_segment() handling of fully linear SKBs
+    - SCTP: Always linearise packet on input
+    - SCSI: aic7xxx: avoid checking SBLKCTL register for certain cards
+    - IPV6: fix lockup via /proc/net/ip6_flowlabel [CVE-2006-5619]
+    - fix Intel RNG detection
+    - ISDN: check for userspace copy faults
+    - ISDN: fix drivers, by handling errors thrown by ->readstat()
+    - splice: fix pipe_to_file() ->prepare_write() error path
+    - ALSA: Fix bug in snd-usb-usx2y's usX2Y_pcms_lock_check()
+    - ALSA: Repair snd-usb-usx2y for usb 2.6.18
+    - PCI: Remove quirk_via_abnormal_poweroff
+    - Bluetooth: Check if DLC is still attached to the TTY
+    - vmscan: Fix temp_priority race
+    - Use min of two prio settings in calculating distress for reclaim
+    - __div64_32 for 31 bit.
+    - DVB: fix dvb_pll_attach for mt352/zl10353 in cx88-dvb, and nxt200x
+    - fuse: fix hang on SMP
+    - md: Fix bug where spares don't always get rebuilt properly when they become live.
+    - md: Fix calculation of ->degraded for multipath and raid10
+    - knfsd: Fix race that can disable NFS server.
+    - md: check bio address after mapping through partitions.
+    - fill_tgid: fix task_struct leak and possible oops
+    - uml: fix processor selection to exclude unsupported processors and features
+    - uml: remove warnings added by previous -stable patch
+    - Fix sfuzz hanging on 2.6.18
+    - SERIAL: Fix resume handling bug
+    - SERIAL: Fix oops when removing suspended serial port
+    - sky2: MSI test race and message
+    - sky2: pause parameter adjustment
+    - sky2: turn off PHY IRQ on shutdown
+    - sky2: accept multicast pause frames
+    - sky2: GMAC pause frame
+    - sky2: 88E803X transmit lockup (2.6.18)
+    - tcp: cubic scaling error
+    - mm: fix a race condition under SMC + COW
+    - ALSA: powermac - Fix Oops when conflicting with aoa driver
+    - ALSA: Fix re-use of va_list
+    - posix-cpu-timers: prevent signal delivery starvation
+    - NFS: nfs_lookup - don't hash dentry when optimising away the lookup
+    - uml: make Uml compile on FC6 kernel headers
+    - Fix potential interrupts during alternative patching
 
   [ Sven Luther ]
   * [powerpc] Added exception alignement patch from Benjamin Herrenschmidt.
@@ -98,7 +159,7 @@
     - bugfix/mips/dec-serial.patch, replaces mips-dec-serial.patch, fix
       serial console handling on DECstations.
 
- -- maximilian attems <maks at sternwelten.at>  Thu,  2 Nov 2006 18:47:45 +0100
+ -- maximilian attems <maks at sternwelten.at>  Sat,  4 Nov 2006 04:37:10 +0100
 
 linux-2.6 (2.6.18-3) unstable; urgency=low
 

Modified: dists/trunk/linux-2.6/debian/patches/bugfix/2.6.18.2
==============================================================================
--- dists/trunk/linux-2.6/debian/patches/bugfix/2.6.18.2	(original)
+++ dists/trunk/linux-2.6/debian/patches/bugfix/2.6.18.2	Sat Nov  4 04:41:18 2006
@@ -1,7 +1,8 @@
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/i386/Kconfig.cpu linux-2.6.18.2-rc1/arch/i386/Kconfig.cpu
---- linux-2.6.18.1/arch/i386/Kconfig.cpu	2006-10-31 21:13:26.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/i386/Kconfig.cpu	2006-10-31 16:13:26.000000000 -0800
-@@ -7,6 +7,7 @@
+diff --git a/arch/i386/Kconfig.cpu b/arch/i386/Kconfig.cpu
+index 21c9a4e..fc4f2ab 100644
+--- a/arch/i386/Kconfig.cpu
++++ b/arch/i386/Kconfig.cpu
+@@ -7,6 +7,7 @@ choice
  
  config M386
  	bool "386"
@@ -9,7 +10,7 @@
  	---help---
  	  This is the processor type of your CPU. This information is used for
  	  optimizing purposes. In order to compile a kernel that can run on
-@@ -301,7 +302,7 @@
+@@ -301,7 +302,7 @@ config X86_USE_PPRO_CHECKSUM
  
  config X86_USE_3DNOW
  	bool
@@ -18,10 +19,11 @@
  	default y
  
  config X86_OOSTORE
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/i386/kernel/alternative.c linux-2.6.18.2-rc1/arch/i386/kernel/alternative.c
---- linux-2.6.18.1/arch/i386/kernel/alternative.c	2006-10-31 21:13:26.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/i386/kernel/alternative.c	2006-10-31 16:13:26.000000000 -0800
-@@ -344,6 +344,7 @@
+diff --git a/arch/i386/kernel/alternative.c b/arch/i386/kernel/alternative.c
+index 28ab806..583c238 100644
+--- a/arch/i386/kernel/alternative.c
++++ b/arch/i386/kernel/alternative.c
+@@ -344,6 +344,7 @@ #endif
  
  void __init alternative_instructions(void)
  {
@@ -29,7 +31,7 @@
  	if (no_replacement) {
  		printk(KERN_INFO "(SMP-)alternatives turned off\n");
  		free_init_pages("SMP alternatives",
-@@ -351,6 +352,8 @@
+@@ -351,6 +352,8 @@ void __init alternative_instructions(voi
  				(unsigned long)__smp_alt_end);
  		return;
  	}
@@ -38,27 +40,17 @@
  	apply_alternatives(__alt_instructions, __alt_instructions_end);
  
  	/* switch to patch-once-at-boottime-only mode and free the
-@@ -386,4 +389,5 @@
+@@ -386,4 +389,5 @@ #ifdef CONFIG_SMP
  		alternatives_smp_switch(0);
  	}
  #endif
 +	local_irq_restore(flags);
  }
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/powerpc/configs/pseries_defconfig linux-2.6.18.2-rc1/arch/powerpc/configs/pseries_defconfig
---- linux-2.6.18.1/arch/powerpc/configs/pseries_defconfig	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/powerpc/configs/pseries_defconfig	2006-10-31 16:13:27.000000000 -0800
-@@ -184,6 +184,7 @@
- CONFIG_MIGRATION=y
- CONFIG_RESOURCES_64BIT=y
- CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
-+CONFIG_NODES_SPAN_OTHER_NODES=y
- # CONFIG_PPC_64K_PAGES is not set
- CONFIG_SCHED_SMT=y
- CONFIG_PROC_DEVICETREE=y
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/powerpc/Kconfig linux-2.6.18.2-rc1/arch/powerpc/Kconfig
---- linux-2.6.18.1/arch/powerpc/Kconfig	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/powerpc/Kconfig	2006-10-31 16:13:27.000000000 -0800
-@@ -729,6 +729,15 @@
+diff --git a/arch/powerpc/Kconfig b/arch/powerpc/Kconfig
+index 694b0c6..f35bb14 100644
+--- a/arch/powerpc/Kconfig
++++ b/arch/powerpc/Kconfig
+@@ -729,6 +729,15 @@ config ARCH_MEMORY_PROBE
  	def_bool y
  	depends on MEMORY_HOTPLUG
  
@@ -74,10 +66,23 @@
  config PPC_64K_PAGES
  	bool "64k page size"
  	depends on PPC64
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/s390/Kconfig linux-2.6.18.2-rc1/arch/s390/Kconfig
---- linux-2.6.18.1/arch/s390/Kconfig	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/s390/Kconfig	2006-10-31 16:13:26.000000000 -0800
-@@ -51,6 +51,10 @@
+diff --git a/arch/powerpc/configs/pseries_defconfig b/arch/powerpc/configs/pseries_defconfig
+index a8cdf31..40782c0 100644
+--- a/arch/powerpc/configs/pseries_defconfig
++++ b/arch/powerpc/configs/pseries_defconfig
+@@ -184,6 +184,7 @@ CONFIG_SPLIT_PTLOCK_CPUS=4
+ CONFIG_MIGRATION=y
+ CONFIG_RESOURCES_64BIT=y
+ CONFIG_HAVE_ARCH_EARLY_PFN_TO_NID=y
++CONFIG_NODES_SPAN_OTHER_NODES=y
+ # CONFIG_PPC_64K_PAGES is not set
+ CONFIG_SCHED_SMT=y
+ CONFIG_PROC_DEVICETREE=y
+diff --git a/arch/s390/Kconfig b/arch/s390/Kconfig
+index 2f4f70c..bf25932 100644
+--- a/arch/s390/Kconfig
++++ b/arch/s390/Kconfig
+@@ -51,6 +51,10 @@ config 64BIT
  	  Select this option if you have a 64 bit IBM zSeries machine
  	  and want to use the 64 bit addressing mode.
  
@@ -88,9 +93,20 @@
  config SMP
  	bool "Symmetric multi-processing support"
  	---help---
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/s390/lib/div64.c linux-2.6.18.2-rc1/arch/s390/lib/div64.c
---- linux-2.6.18.1/arch/s390/lib/div64.c	1969-12-31 16:00:00.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/s390/lib/div64.c	2006-10-31 16:13:26.000000000 -0800
+diff --git a/arch/s390/lib/Makefile b/arch/s390/lib/Makefile
+index e05d087..1400141 100644
+--- a/arch/s390/lib/Makefile
++++ b/arch/s390/lib/Makefile
+@@ -7,3 +7,4 @@ EXTRA_AFLAGS := -traditional
+ lib-y += delay.o string.o
+ lib-y += $(if $(CONFIG_64BIT),uaccess64.o,uaccess.o)
+ lib-$(CONFIG_SMP) += spinlock.o
++lib-$(CONFIG_32BIT) += div64.o
+diff --git a/arch/s390/lib/div64.c b/arch/s390/lib/div64.c
+new file mode 100644
+index 0000000..0481f34
+--- /dev/null
++++ b/arch/s390/lib/div64.c
 @@ -0,0 +1,151 @@
 +/*
 + *  arch/s390/lib/div64.c
@@ -243,18 +259,11 @@
 +#endif /* MARCH_G5 */
 +
 +EXPORT_SYMBOL(__div64_32);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/s390/lib/Makefile linux-2.6.18.2-rc1/arch/s390/lib/Makefile
---- linux-2.6.18.1/arch/s390/lib/Makefile	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/s390/lib/Makefile	2006-10-31 16:13:26.000000000 -0800
-@@ -7,3 +7,4 @@
- lib-y += delay.o string.o
- lib-y += $(if $(CONFIG_64BIT),uaccess64.o,uaccess.o)
- lib-$(CONFIG_SMP) += spinlock.o
-+lib-$(CONFIG_32BIT) += div64.o
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/sparc64/kernel/central.c linux-2.6.18.2-rc1/arch/sparc64/kernel/central.c
---- linux-2.6.18.1/arch/sparc64/kernel/central.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/sparc64/kernel/central.c	2006-10-31 16:13:26.000000000 -0800
-@@ -126,6 +126,10 @@
+diff --git a/arch/sparc64/kernel/central.c b/arch/sparc64/kernel/central.c
+index b66336d..e724c54 100644
+--- a/arch/sparc64/kernel/central.c
++++ b/arch/sparc64/kernel/central.c
+@@ -126,6 +126,10 @@ static void probe_other_fhcs(void)
  		int board;
  		u32 tmp;
  
@@ -265,10 +274,11 @@
  		fhc = (struct linux_fhc *)
  			central_alloc_bootmem(sizeof(struct linux_fhc));
  		if (fhc == NULL)
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/sparc64/kernel/of_device.c linux-2.6.18.2-rc1/arch/sparc64/kernel/of_device.c
---- linux-2.6.18.1/arch/sparc64/kernel/of_device.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/sparc64/kernel/of_device.c	2006-10-31 16:13:26.000000000 -0800
-@@ -398,16 +398,22 @@
+diff --git a/arch/sparc64/kernel/of_device.c b/arch/sparc64/kernel/of_device.c
+index 238bbf6..c7bbd7a 100644
+--- a/arch/sparc64/kernel/of_device.c
++++ b/arch/sparc64/kernel/of_device.c
+@@ -398,16 +398,22 @@ static void of_bus_sbus_count_cells(stru
  		*sizec = 1;
  }
  
@@ -298,7 +308,7 @@
  
  /*
   * Array of bus specific translators
-@@ -429,8 +435,17 @@
+@@ -429,8 +435,17 @@ static struct of_bus of_busses[] = {
  		.addr_prop_name = "reg",
  		.match = of_bus_sbus_match,
  		.count_cells = of_bus_sbus_count_cells,
@@ -318,10 +328,11 @@
  	},
  	/* Default */
  	{
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/sparc64/kernel/pci_common.c linux-2.6.18.2-rc1/arch/sparc64/kernel/pci_common.c
---- linux-2.6.18.1/arch/sparc64/kernel/pci_common.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/sparc64/kernel/pci_common.c	2006-10-31 16:13:27.000000000 -0800
-@@ -330,19 +330,6 @@
+diff --git a/arch/sparc64/kernel/pci_common.c b/arch/sparc64/kernel/pci_common.c
+index 7a59cc7..827ae30 100644
+--- a/arch/sparc64/kernel/pci_common.c
++++ b/arch/sparc64/kernel/pci_common.c
+@@ -330,19 +330,6 @@ #endif
  	return res;
  }
  
@@ -341,7 +352,7 @@
  static void __init pdev_record_assignments(struct pci_pbm_info *pbm,
  					   struct pci_dev *pdev)
  {
-@@ -400,19 +387,23 @@
+@@ -400,19 +387,23 @@ static void __init pdev_record_assignmen
  		pbm->parent->resource_adjust(pdev, res, root);
  
  		if (request_resource(root, res) < 0) {
@@ -371,10 +382,11 @@
  		}
  	}
  }
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/sparc64/kernel/pci_iommu.c linux-2.6.18.2-rc1/arch/sparc64/kernel/pci_iommu.c
---- linux-2.6.18.1/arch/sparc64/kernel/pci_iommu.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/sparc64/kernel/pci_iommu.c	2006-10-31 16:13:26.000000000 -0800
-@@ -281,7 +281,7 @@
+diff --git a/arch/sparc64/kernel/pci_iommu.c b/arch/sparc64/kernel/pci_iommu.c
+index 82e5455..2e7f142 100644
+--- a/arch/sparc64/kernel/pci_iommu.c
++++ b/arch/sparc64/kernel/pci_iommu.c
+@@ -281,7 +281,7 @@ static void pci_4u_free_consistent(struc
  
  	spin_lock_irqsave(&iommu->lock, flags);
  
@@ -383,10 +395,11 @@
  
  	spin_unlock_irqrestore(&iommu->lock, flags);
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/sparc64/kernel/pci_sabre.c linux-2.6.18.2-rc1/arch/sparc64/kernel/pci_sabre.c
---- linux-2.6.18.1/arch/sparc64/kernel/pci_sabre.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/sparc64/kernel/pci_sabre.c	2006-10-31 16:13:27.000000000 -0800
-@@ -1196,7 +1196,7 @@
+diff --git a/arch/sparc64/kernel/pci_sabre.c b/arch/sparc64/kernel/pci_sabre.c
+index 4589185..f04c6d2 100644
+--- a/arch/sparc64/kernel/pci_sabre.c
++++ b/arch/sparc64/kernel/pci_sabre.c
+@@ -1196,7 +1196,7 @@ static void pbm_register_toplevel_resour
  					    &pbm->mem_space);
  }
  
@@ -395,7 +408,7 @@
  {
  	struct pci_pbm_info *pbm;
  	struct device_node *node;
-@@ -1261,6 +1261,8 @@
+@@ -1261,6 +1261,8 @@ static void sabre_pbm_init(struct pci_co
  		node = node->sibling;
  	}
  	if (simbas_found == 0) {
@@ -404,7 +417,7 @@
  		/* No APBs underneath, probably this is a hummingbird
  		 * system.
  		 */
-@@ -1302,8 +1304,10 @@
+@@ -1302,8 +1304,10 @@ static void sabre_pbm_init(struct pci_co
  		pbm->io_space.end   = pbm->io_space.start + (1UL << 24) - 1UL;
  		pbm->io_space.flags = IORESOURCE_IO;
  
@@ -417,7 +430,7 @@
  		pbm->mem_space.flags = IORESOURCE_MEM;
  
  		if (request_resource(&ioport_resource, &pbm->io_space) < 0) {
-@@ -1315,6 +1319,17 @@
+@@ -1315,6 +1319,17 @@ static void sabre_pbm_init(struct pci_co
  			prom_halt();
  		}
  
@@ -435,17 +448,18 @@
  		pci_register_legacy_regions(&pbm->io_space,
  					    &pbm->mem_space);
  	}
-@@ -1450,5 +1465,5 @@
+@@ -1450,5 +1465,5 @@ void sabre_init(struct device_node *dp, 
  	/*
  	 * Look for APB underneath.
  	 */
 -	sabre_pbm_init(p, dp, vdma[0]);
 +	sabre_pbm_init(p, dp, vdma[0], vdma[0] + vdma[1]);
  }
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/sparc64/kernel/prom.c linux-2.6.18.2-rc1/arch/sparc64/kernel/prom.c
---- linux-2.6.18.1/arch/sparc64/kernel/prom.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/sparc64/kernel/prom.c	2006-10-31 16:13:26.000000000 -0800
-@@ -1080,23 +1080,22 @@
+diff --git a/arch/sparc64/kernel/prom.c b/arch/sparc64/kernel/prom.c
+index 5cc5ab6..03d6be8 100644
+--- a/arch/sparc64/kernel/prom.c
++++ b/arch/sparc64/kernel/prom.c
+@@ -1080,23 +1080,22 @@ static void sun4v_vdev_irq_trans_init(st
  
  static void irq_trans_init(struct device_node *dp)
  {
@@ -477,7 +491,7 @@
  	}
  #endif
  #ifdef CONFIG_SBUS
-@@ -1104,8 +1103,9 @@
+@@ -1104,8 +1103,9 @@ #ifdef CONFIG_SBUS
  	    !strcmp(dp->name, "sbi"))
  		return sbus_irq_trans_init(dp);
  #endif
@@ -489,7 +503,7 @@
  	if (!strcmp(dp->name, "virtual-devices"))
  		return sun4v_vdev_irq_trans_init(dp);
  }
-@@ -1517,7 +1517,7 @@
+@@ -1517,7 +1517,7 @@ static char * __init get_one_property(ph
  	return buf;
  }
  
@@ -498,7 +512,7 @@
  {
  	struct device_node *dp;
  
-@@ -1526,6 +1526,7 @@
+@@ -1526,6 +1526,7 @@ static struct device_node * __init creat
  
  	dp = prom_early_alloc(sizeof(*dp));
  	dp->unique_id = unique_id++;
@@ -506,7 +520,7 @@
  
  	kref_init(&dp->kref);
  
-@@ -1544,12 +1545,11 @@
+@@ -1544,12 +1545,11 @@ static struct device_node * __init build
  {
  	struct device_node *dp;
  
@@ -520,7 +534,7 @@
  		dp->path_component_name = build_path_component(dp);
  		dp->full_name = build_full_name(dp);
  
-@@ -1565,7 +1565,7 @@
+@@ -1565,7 +1565,7 @@ void __init prom_build_devicetree(void)
  {
  	struct device_node **nextp;
  
@@ -529,9 +543,10 @@
  	allnodes->path_component_name = "";
  	allnodes->full_name = "/";
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/um/include/kern_util.h linux-2.6.18.2-rc1/arch/um/include/kern_util.h
---- linux-2.6.18.1/arch/um/include/kern_util.h	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/um/include/kern_util.h	2006-10-31 16:13:26.000000000 -0800
+diff --git a/arch/um/include/kern_util.h b/arch/um/include/kern_util.h
+index b98bdd8..ab9c0b7 100644
+--- a/arch/um/include/kern_util.h
++++ b/arch/um/include/kern_util.h
 @@ -6,7 +6,6 @@
  #ifndef __KERN_UTIL_H__
  #define __KERN_UTIL_H__
@@ -540,9 +555,10 @@
  #include "sysdep/ptrace.h"
  #include "sysdep/faultinfo.h"
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/um/os-Linux/sys-i386/tls.c linux-2.6.18.2-rc1/arch/um/os-Linux/sys-i386/tls.c
---- linux-2.6.18.1/arch/um/os-Linux/sys-i386/tls.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/um/os-Linux/sys-i386/tls.c	2006-10-31 16:13:26.000000000 -0800
+diff --git a/arch/um/os-Linux/sys-i386/tls.c b/arch/um/os-Linux/sys-i386/tls.c
+index 64f547f..8dc6a49 100644
+--- a/arch/um/os-Linux/sys-i386/tls.c
++++ b/arch/um/os-Linux/sys-i386/tls.c
 @@ -1,4 +1,6 @@
  #include <errno.h>
 +#include <sys/syscall.h>
@@ -550,9 +566,10 @@
  #include <linux/unistd.h>
  #include "sysdep/tls.h"
  #include "user_util.h"
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/um/os-Linux/tls.c linux-2.6.18.2-rc1/arch/um/os-Linux/tls.c
---- linux-2.6.18.1/arch/um/os-Linux/tls.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/um/os-Linux/tls.c	2006-10-31 16:13:26.000000000 -0800
+diff --git a/arch/um/os-Linux/tls.c b/arch/um/os-Linux/tls.c
+index 297f263..3385784 100644
+--- a/arch/um/os-Linux/tls.c
++++ b/arch/um/os-Linux/tls.c
 @@ -1,6 +1,8 @@
  #include <errno.h>
  #include <sys/ptrace.h>
@@ -562,9 +579,10 @@
  #include "sysdep/tls.h"
  #include "uml-config.h"
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/um/sys-x86_64/stub_segv.c linux-2.6.18.2-rc1/arch/um/sys-x86_64/stub_segv.c
---- linux-2.6.18.1/arch/um/sys-x86_64/stub_segv.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/um/sys-x86_64/stub_segv.c	2006-10-31 16:13:26.000000000 -0800
+diff --git a/arch/um/sys-x86_64/stub_segv.c b/arch/um/sys-x86_64/stub_segv.c
+index 1c96702..652fa34 100644
+--- a/arch/um/sys-x86_64/stub_segv.c
++++ b/arch/um/sys-x86_64/stub_segv.c
 @@ -5,7 +5,6 @@
  
  #include <stddef.h>
@@ -573,10 +591,11 @@
  #include <asm/unistd.h>
  #include "uml-config.h"
  #include "sysdep/sigcontext.h"
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/arch/x86_64/kernel/time.c linux-2.6.18.2-rc1/arch/x86_64/kernel/time.c
---- linux-2.6.18.1/arch/x86_64/kernel/time.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/arch/x86_64/kernel/time.c	2006-10-31 16:13:26.000000000 -0800
-@@ -960,7 +960,7 @@
+diff --git a/arch/x86_64/kernel/time.c b/arch/x86_64/kernel/time.c
+index 7a9b182..ffd1cb8 100644
+--- a/arch/x86_64/kernel/time.c
++++ b/arch/x86_64/kernel/time.c
+@@ -960,7 +960,7 @@ #endif
   	if (boot_cpu_data.x86_vendor == X86_VENDOR_INTEL) {
  #ifdef CONFIG_ACPI
  		/* But TSC doesn't tick in C3 so don't use it there */
@@ -585,10 +604,11 @@
  			return 1;
  #endif
   		return 0;
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/block/ll_rw_blk.c linux-2.6.18.2-rc1/block/ll_rw_blk.c
---- linux-2.6.18.1/block/ll_rw_blk.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/block/ll_rw_blk.c	2006-10-31 16:13:27.000000000 -0800
-@@ -3021,6 +3021,7 @@
+diff --git a/block/ll_rw_blk.c b/block/ll_rw_blk.c
+index ddd9253..3ecdb34 100644
+--- a/block/ll_rw_blk.c
++++ b/block/ll_rw_blk.c
+@@ -3021,6 +3021,7 @@ void generic_make_request(struct bio *bi
  {
  	request_queue_t *q;
  	sector_t maxsector;
@@ -596,7 +616,7 @@
  	int ret, nr_sectors = bio_sectors(bio);
  	dev_t old_dev;
  
-@@ -3049,7 +3050,7 @@
+@@ -3049,7 +3050,7 @@ void generic_make_request(struct bio *bi
  	 * NOTE: we don't repeat the blk_size check for each new device.
  	 * Stacking drivers are expected to know what they are doing.
  	 */
@@ -605,7 +625,7 @@
  	old_dev = 0;
  	do {
  		char b[BDEVNAME_SIZE];
-@@ -3083,15 +3084,30 @@
+@@ -3083,15 +3084,30 @@ end_io:
  		 */
  		blk_partition_remap(bio);
  
@@ -639,10 +659,11 @@
  		ret = q->make_request_fn(q, bio);
  	} while (ret);
  }
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/block/DAC960.c linux-2.6.18.2-rc1/drivers/block/DAC960.c
---- linux-2.6.18.1/drivers/block/DAC960.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/block/DAC960.c	2006-10-31 16:13:26.000000000 -0800
-@@ -7115,7 +7115,7 @@
+diff --git a/drivers/block/DAC960.c b/drivers/block/DAC960.c
+index 4cd23c3..a360215 100644
+--- a/drivers/block/DAC960.c
++++ b/drivers/block/DAC960.c
+@@ -7115,7 +7115,7 @@ static struct pci_device_id DAC960_id_ta
  	{
  		.vendor 	= PCI_VENDOR_ID_MYLEX,
  		.device		= PCI_DEVICE_ID_MYLEX_DAC960_GEM,
@@ -651,10 +672,11 @@
  		.subdevice	= PCI_ANY_ID,
  		.driver_data	= (unsigned long) &DAC960_GEM_privdata,
  	},
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/char/hw_random/intel-rng.c linux-2.6.18.2-rc1/drivers/char/hw_random/intel-rng.c
---- linux-2.6.18.1/drivers/char/hw_random/intel-rng.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/char/hw_random/intel-rng.c	2006-10-31 16:13:26.000000000 -0800
-@@ -50,6 +50,43 @@
+diff --git a/drivers/char/hw_random/intel-rng.c b/drivers/char/hw_random/intel-rng.c
+index ccd7e71..8efbc9c 100644
+--- a/drivers/char/hw_random/intel-rng.c
++++ b/drivers/char/hw_random/intel-rng.c
+@@ -50,6 +50,43 @@ #define INTEL_RNG_ADDR				0xFFBC015F
  #define INTEL_RNG_ADDR_LEN			3
  
  /*
@@ -698,7 +720,7 @@
   * Data for PCI driver interface
   *
   * This data only exists for exporting the supported
-@@ -58,12 +95,50 @@
+@@ -58,12 +95,50 @@ #define INTEL_RNG_ADDR_LEN			3
   * want to register another driver on the same PCI id.
   */
  static const struct pci_device_id pci_tbl[] = {
@@ -755,7 +777,7 @@
  	{ 0, },	/* terminate list */
  };
  MODULE_DEVICE_TABLE(pci, pci_tbl);
-@@ -138,22 +213,115 @@
+@@ -138,22 +213,115 @@ static struct hwrng intel_rng = {
  };
  
  
@@ -780,11 +802,11 @@
 +	u8 bios_cntl_off, fwh_dec_en1_off;
 +	u8 bios_cntl_val = 0xff, fwh_dec_en1_val = 0xff;
 +	u8 hw_status, mfc, dvc;
-+
-+	for (i = 0; !dev && pci_tbl[i].vendor; ++i)
-+		dev = pci_get_device(pci_tbl[i].vendor, pci_tbl[i].device, NULL);
  
 -	if (!pci_dev_present(pci_tbl))
++	for (i = 0; !dev && pci_tbl[i].vendor; ++i)
++		dev = pci_get_device(pci_tbl[i].vendor, pci_tbl[i].device, NULL);
++
 +	if (!dev)
  		goto out; /* Device not found. */
  
@@ -874,10 +896,11 @@
  	err = -ENODEV;
  	hw_status = hwstatus_get(mem);
  	if ((hw_status & INTEL_RNG_PRESENT) == 0)
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/char/watchdog/sc1200wdt.c linux-2.6.18.2-rc1/drivers/char/watchdog/sc1200wdt.c
---- linux-2.6.18.1/drivers/char/watchdog/sc1200wdt.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/char/watchdog/sc1200wdt.c	2006-10-31 16:13:26.000000000 -0800
-@@ -392,7 +392,7 @@
+diff --git a/drivers/char/watchdog/sc1200wdt.c b/drivers/char/watchdog/sc1200wdt.c
+index 7c3cf29..cb92a1b 100644
+--- a/drivers/char/watchdog/sc1200wdt.c
++++ b/drivers/char/watchdog/sc1200wdt.c
+@@ -392,7 +392,7 @@ #endif
  	if (io == -1) {
  		printk(KERN_ERR PFX "io parameter must be specified\n");
  		ret = -EINVAL;
@@ -886,7 +909,7 @@
  	}
  
  #if defined CONFIG_PNP
-@@ -405,7 +405,7 @@
+@@ -405,7 +405,7 @@ #endif
  	if (!request_region(io, io_len, SC1200_MODULE_NAME)) {
  		printk(KERN_ERR PFX "Unable to register IO port %#x\n", io);
  		ret = -EBUSY;
@@ -895,7 +918,7 @@
  	}
  
  	ret = sc1200wdt_probe();
-@@ -435,6 +435,11 @@
+@@ -435,6 +435,11 @@ out_rbt:
  out_io:
  	release_region(io, io_len);
  
@@ -907,10 +930,11 @@
  	goto out_clean;
  }
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/ide/pci/generic.c linux-2.6.18.2-rc1/drivers/ide/pci/generic.c
---- linux-2.6.18.1/drivers/ide/pci/generic.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/ide/pci/generic.c	2006-10-31 16:13:27.000000000 -0800
-@@ -242,8 +242,10 @@
+diff --git a/drivers/ide/pci/generic.c b/drivers/ide/pci/generic.c
+index 6a1ddad..58e8efa 100644
+--- a/drivers/ide/pci/generic.c
++++ b/drivers/ide/pci/generic.c
+@@ -242,8 +242,10 @@ static int __devinit generic_init_one(st
  	    (!(PCI_FUNC(dev->devfn) & 1)))
  		goto out;
  
@@ -923,9 +947,10 @@
  
  	if (dev->vendor != PCI_VENDOR_ID_JMICRON) {
  		pci_read_config_word(dev, PCI_COMMAND, &command);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/infiniband/hw/mthca/mthca_cq.c linux-2.6.18.2-rc1/drivers/infiniband/hw/mthca/mthca_cq.c
---- linux-2.6.18.1/drivers/infiniband/hw/mthca/mthca_cq.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/infiniband/hw/mthca/mthca_cq.c	2006-10-31 16:13:26.000000000 -0800
+diff --git a/drivers/infiniband/hw/mthca/mthca_cq.c b/drivers/infiniband/hw/mthca/mthca_cq.c
+index 3e27a08..8030d6a 100644
+--- a/drivers/infiniband/hw/mthca/mthca_cq.c
++++ b/drivers/infiniband/hw/mthca/mthca_cq.c
 @@ -39,6 +39,8 @@
  #include <linux/init.h>
  #include <linux/hardirq.h>
@@ -935,7 +960,7 @@
  #include <rdma/ib_pack.h>
  
  #include "mthca_dev.h"
-@@ -210,6 +212,11 @@
+@@ -210,6 +212,11 @@ static inline void update_cons_index(str
  		mthca_write64(doorbell,
  			      dev->kar + MTHCA_CQ_DOORBELL,
  			      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
@@ -947,10 +972,11 @@
  	}
  }
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/infiniband/hw/mthca/mthca_qp.c linux-2.6.18.2-rc1/drivers/infiniband/hw/mthca/mthca_qp.c
---- linux-2.6.18.1/drivers/infiniband/hw/mthca/mthca_qp.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/infiniband/hw/mthca/mthca_qp.c	2006-10-31 16:13:26.000000000 -0800
-@@ -39,6 +39,8 @@
+diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c
+index 2e8f6f3..b66aa49 100644
+--- a/drivers/infiniband/hw/mthca/mthca_qp.c
++++ b/drivers/infiniband/hw/mthca/mthca_qp.c
+@@ -39,6 +39,8 @@ #include <linux/init.h>
  #include <linux/string.h>
  #include <linux/slab.h>
  
@@ -959,7 +985,7 @@
  #include <rdma/ib_verbs.h>
  #include <rdma/ib_cache.h>
  #include <rdma/ib_pack.h>
-@@ -1730,6 +1732,11 @@
+@@ -1730,6 +1732,11 @@ out:
  		mthca_write64(doorbell,
  			      dev->kar + MTHCA_SEND_DOORBELL,
  			      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
@@ -971,7 +997,7 @@
  	}
  
  	qp->sq.next_ind = ind;
-@@ -1849,6 +1856,12 @@
+@@ -1849,6 +1856,12 @@ out:
  	qp->rq.next_ind = ind;
  	qp->rq.head    += nreq;
  
@@ -984,7 +1010,7 @@
  	spin_unlock_irqrestore(&qp->rq.lock, flags);
  	return err;
  }
-@@ -2110,6 +2123,12 @@
+@@ -2110,6 +2123,12 @@ out:
  			      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
  	}
  
@@ -997,9 +1023,10 @@
  	spin_unlock_irqrestore(&qp->sq.lock, flags);
  	return err;
  }
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/infiniband/hw/mthca/mthca_srq.c linux-2.6.18.2-rc1/drivers/infiniband/hw/mthca/mthca_srq.c
---- linux-2.6.18.1/drivers/infiniband/hw/mthca/mthca_srq.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/infiniband/hw/mthca/mthca_srq.c	2006-10-31 16:13:26.000000000 -0800
+diff --git a/drivers/infiniband/hw/mthca/mthca_srq.c b/drivers/infiniband/hw/mthca/mthca_srq.c
+index b60a9d7..a01f1a8 100644
+--- a/drivers/infiniband/hw/mthca/mthca_srq.c
++++ b/drivers/infiniband/hw/mthca/mthca_srq.c
 @@ -35,6 +35,8 @@
  #include <linux/slab.h>
  #include <linux/string.h>
@@ -1009,7 +1036,7 @@
  #include "mthca_dev.h"
  #include "mthca_cmd.h"
  #include "mthca_memfree.h"
-@@ -593,6 +595,12 @@
+@@ -593,6 +595,12 @@ int mthca_tavor_post_srq_recv(struct ib_
  			      MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
  	}
  
@@ -1022,10 +1049,11 @@
  	spin_unlock_irqrestore(&srq->lock, flags);
  	return err;
  }
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/infiniband/ulp/ipoib/ipoib_ib.c linux-2.6.18.2-rc1/drivers/infiniband/ulp/ipoib/ipoib_ib.c
---- linux-2.6.18.1/drivers/infiniband/ulp/ipoib/ipoib_ib.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/infiniband/ulp/ipoib/ipoib_ib.c	2006-10-31 16:13:26.000000000 -0800
-@@ -619,8 +619,10 @@
+diff --git a/drivers/infiniband/ulp/ipoib/ipoib_ib.c b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+index 5033666..dcd996b 100644
+--- a/drivers/infiniband/ulp/ipoib/ipoib_ib.c
++++ b/drivers/infiniband/ulp/ipoib/ipoib_ib.c
+@@ -619,8 +619,10 @@ void ipoib_ib_dev_flush(void *_dev)
  	 * The device could have been brought down between the start and when
  	 * we get here, don't bring it back up if it's not configured up
  	 */
@@ -1037,10 +1065,49 @@
  
  	mutex_lock(&priv->vlan_mutex);
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/isdn/i4l/isdn_common.c linux-2.6.18.2-rc1/drivers/isdn/i4l/isdn_common.c
---- linux-2.6.18.1/drivers/isdn/i4l/isdn_common.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/isdn/i4l/isdn_common.c	2006-10-31 16:13:27.000000000 -0800
-@@ -1134,9 +1134,12 @@
+diff --git a/drivers/isdn/capi/capidrv.c b/drivers/isdn/capi/capidrv.c
+index d10c8b8..b6f9476 100644
+--- a/drivers/isdn/capi/capidrv.c
++++ b/drivers/isdn/capi/capidrv.c
+@@ -1907,7 +1907,8 @@ static int if_readstat(u8 __user *buf, i
+ 	}
+ 
+ 	for (p=buf, count=0; count < len; p++, count++) {
+-		put_user(*card->q931_read++, p);
++		if (put_user(*card->q931_read++, p))
++			return -EFAULT;
+ 	        if (card->q931_read > card->q931_end)
+ 	                card->q931_read = card->q931_buf;
+ 	}
+diff --git a/drivers/isdn/hisax/config.c b/drivers/isdn/hisax/config.c
+index e103503..9280b58 100644
+--- a/drivers/isdn/hisax/config.c
++++ b/drivers/isdn/hisax/config.c
+@@ -631,7 +631,8 @@ static int HiSax_readstatus(u_char __use
+ 		count = cs->status_end - cs->status_read + 1;
+ 		if (count >= len)
+ 			count = len;
+-		copy_to_user(p, cs->status_read, count);
++		if (copy_to_user(p, cs->status_read, count))
++			return -EFAULT;
+ 		cs->status_read += count;
+ 		if (cs->status_read > cs->status_end)
+ 			cs->status_read = cs->status_buf;
+@@ -642,7 +643,8 @@ static int HiSax_readstatus(u_char __use
+ 				cnt = HISAX_STATUS_BUFSIZE;
+ 			else
+ 				cnt = count;
+-			copy_to_user(p, cs->status_read, cnt);
++			if (copy_to_user(p, cs->status_read, cnt))
++				return -EFAULT;
+ 			p += cnt;
+ 			cs->status_read += cnt % HISAX_STATUS_BUFSIZE;
+ 			count -= cnt;
+diff --git a/drivers/isdn/i4l/isdn_common.c b/drivers/isdn/i4l/isdn_common.c
+index c3d79ee..69aee26 100644
+--- a/drivers/isdn/i4l/isdn_common.c
++++ b/drivers/isdn/i4l/isdn_common.c
+@@ -1134,9 +1134,12 @@ isdn_read(struct file *file, char __user
  		if (dev->drv[drvidx]->interface->readstat) {
  			if (count > dev->drv[drvidx]->stavail)
  				count = dev->drv[drvidx]->stavail;
@@ -1056,10 +1123,77 @@
  		} else {
  			len = 0;
  		}
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/macintosh/via-pmu-backlight.c linux-2.6.18.2-rc1/drivers/macintosh/via-pmu-backlight.c
---- linux-2.6.18.1/drivers/macintosh/via-pmu-backlight.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/macintosh/via-pmu-backlight.c	2006-10-31 16:13:26.000000000 -0800
-@@ -16,7 +16,7 @@
+diff --git a/drivers/isdn/icn/icn.c b/drivers/isdn/icn/icn.c
+index 6649f8b..730bbd0 100644
+--- a/drivers/isdn/icn/icn.c
++++ b/drivers/isdn/icn/icn.c
+@@ -1010,7 +1010,8 @@ icn_readstatus(u_char __user *buf, int l
+ 	for (p = buf, count = 0; count < len; p++, count++) {
+ 		if (card->msg_buf_read == card->msg_buf_write)
+ 			return count;
+-		put_user(*card->msg_buf_read++, p);
++		if (put_user(*card->msg_buf_read++, p))
++			return -EFAULT;
+ 		if (card->msg_buf_read > card->msg_buf_end)
+ 			card->msg_buf_read = card->msg_buf;
+ 	}
+diff --git a/drivers/isdn/isdnloop/isdnloop.c b/drivers/isdn/isdnloop/isdnloop.c
+index fabbd46..9a66524 100644
+--- a/drivers/isdn/isdnloop/isdnloop.c
++++ b/drivers/isdn/isdnloop/isdnloop.c
+@@ -451,7 +451,8 @@ isdnloop_readstatus(u_char __user *buf, 
+ 	for (p = buf, count = 0; count < len; p++, count++) {
+ 		if (card->msg_buf_read == card->msg_buf_write)
+ 			return count;
+-		put_user(*card->msg_buf_read++, p);
++		if (put_user(*card->msg_buf_read++, p))
++			return -EFAULT;
+ 		if (card->msg_buf_read > card->msg_buf_end)
+ 			card->msg_buf_read = card->msg_buf;
+ 	}
+diff --git a/drivers/isdn/pcbit/drv.c b/drivers/isdn/pcbit/drv.c
+index 94f2148..6ead5e1 100644
+--- a/drivers/isdn/pcbit/drv.c
++++ b/drivers/isdn/pcbit/drv.c
+@@ -725,23 +725,27 @@ static int pcbit_stat(u_char __user *buf
+ 
+ 	if (stat_st < stat_end)
+ 	{
+-		copy_to_user(buf, statbuf + stat_st, len);
++		if (copy_to_user(buf, statbuf + stat_st, len))
++			return -EFAULT;
+ 		stat_st += len;	   
+ 	}
+ 	else
+ 	{
+ 		if (len > STATBUF_LEN - stat_st)
+ 		{
+-			copy_to_user(buf, statbuf + stat_st, 
+-				       STATBUF_LEN - stat_st);
+-			copy_to_user(buf, statbuf, 
+-				       len - (STATBUF_LEN - stat_st));
++			if (copy_to_user(buf, statbuf + stat_st,
++				       STATBUF_LEN - stat_st))
++				return -EFAULT;
++			if (copy_to_user(buf, statbuf,
++				       len - (STATBUF_LEN - stat_st)))
++				return -EFAULT;
+ 
+ 			stat_st = len - (STATBUF_LEN - stat_st);
+ 		}
+ 		else
+ 		{
+-			copy_to_user(buf, statbuf + stat_st, len);
++			if (copy_to_user(buf, statbuf + stat_st, len))
++				return -EFAULT;
+ 
+ 			stat_st += len;
+ 			
+diff --git a/drivers/macintosh/via-pmu-backlight.c b/drivers/macintosh/via-pmu-backlight.c
+index a82f313..6c29fe7 100644
+--- a/drivers/macintosh/via-pmu-backlight.c
++++ b/drivers/macintosh/via-pmu-backlight.c
+@@ -16,7 +16,7 @@ #include <asm/prom.h>
  #define MAX_PMU_LEVEL 0xFF
  
  static struct backlight_properties pmu_backlight_data;
@@ -1068,10 +1202,11 @@
  static int sleeping;
  static u8 bl_curve[FB_BACKLIGHT_LEVELS];
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/md/md.c linux-2.6.18.2-rc1/drivers/md/md.c
---- linux-2.6.18.1/drivers/md/md.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/md/md.c	2006-10-31 16:13:26.000000000 -0800
-@@ -1994,6 +1994,7 @@
+diff --git a/drivers/md/md.c b/drivers/md/md.c
+index c9d2919..1869e81 100644
+--- a/drivers/md/md.c
++++ b/drivers/md/md.c
+@@ -1994,6 +1994,7 @@ static mdk_rdev_t *md_import_device(dev_
  	kobject_init(&rdev->kobj);
  
  	rdev->desc_nr = -1;
@@ -1079,10 +1214,11 @@
  	rdev->flags = 0;
  	rdev->data_offset = 0;
  	rdev->sb_events = 0;
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/md/multipath.c linux-2.6.18.2-rc1/drivers/md/multipath.c
---- linux-2.6.18.1/drivers/md/multipath.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/md/multipath.c	2006-10-31 16:13:26.000000000 -0800
-@@ -480,7 +480,7 @@
+diff --git a/drivers/md/multipath.c b/drivers/md/multipath.c
+index 1cc9de4..33f67ca 100644
+--- a/drivers/md/multipath.c
++++ b/drivers/md/multipath.c
+@@ -480,7 +480,7 @@ static int multipath_run (mddev_t *mddev
  			mdname(mddev));
  		goto out_free_conf;
  	}
@@ -1091,10 +1227,11 @@
  
  	conf->pool = mempool_create_kzalloc_pool(NR_RESERVED_BUFS,
  						 sizeof(struct multipath_bh));
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/md/raid10.c linux-2.6.18.2-rc1/drivers/md/raid10.c
---- linux-2.6.18.1/drivers/md/raid10.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/md/raid10.c	2006-10-31 16:13:26.000000000 -0800
-@@ -2042,7 +2042,7 @@
+diff --git a/drivers/md/raid10.c b/drivers/md/raid10.c
+index 016ddb8..115a6f8 100644
+--- a/drivers/md/raid10.c
++++ b/drivers/md/raid10.c
+@@ -2042,7 +2042,7 @@ static int run(mddev_t *mddev)
  		disk = conf->mirrors + i;
  
  		if (!disk->rdev ||
@@ -1103,10 +1240,11 @@
  			disk->head_position = 0;
  			mddev->degraded++;
  		}
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/media/dvb/b2c2/flexcop-fe-tuner.c linux-2.6.18.2-rc1/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
---- linux-2.6.18.1/drivers/media/dvb/b2c2/flexcop-fe-tuner.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/media/dvb/b2c2/flexcop-fe-tuner.c	2006-10-31 16:13:26.000000000 -0800
-@@ -527,7 +527,7 @@
+diff --git a/drivers/media/dvb/b2c2/flexcop-fe-tuner.c b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
+index 3be87c7..68bb56e 100644
+--- a/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
++++ b/drivers/media/dvb/b2c2/flexcop-fe-tuner.c
+@@ -527,7 +527,7 @@ int flexcop_frontend_init(struct flexcop
  	/* try the air atsc 2nd generation (nxt2002) */
  	if ((fc->fe = nxt200x_attach(&samsung_tbmv_config, &fc->i2c_adap)) != NULL) {
  		fc->dev_type          = FC_AIR_ATSC2;
@@ -1115,10 +1253,11 @@
  		info("found the nxt2002 at i2c address: 0x%02x",samsung_tbmv_config.demod_address);
  	} else
  	/* try the air atsc 3nd generation (lgdt3303) */
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/media/dvb/frontends/dvb-pll.c linux-2.6.18.2-rc1/drivers/media/dvb/frontends/dvb-pll.c
---- linux-2.6.18.1/drivers/media/dvb/frontends/dvb-pll.c	2006-10-31 21:13:27.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/media/dvb/frontends/dvb-pll.c	2006-10-31 16:13:26.000000000 -0800
-@@ -493,6 +493,9 @@
+diff --git a/drivers/media/dvb/frontends/dvb-pll.c b/drivers/media/dvb/frontends/dvb-pll.c
+index 2be33f2..887d6f4 100644
+--- a/drivers/media/dvb/frontends/dvb-pll.c
++++ b/drivers/media/dvb/frontends/dvb-pll.c
+@@ -493,6 +493,9 @@ static int dvb_pll_sleep(struct dvb_fron
  	int i;
  	int result;
  
@@ -1128,10 +1267,11 @@
  	for (i = 0; i < priv->pll_desc->count; i++) {
  		if (priv->pll_desc->entries[i].limit == 0)
  			break;
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/media/video/cx88/cx88-dvb.c linux-2.6.18.2-rc1/drivers/media/video/cx88/cx88-dvb.c
---- linux-2.6.18.1/drivers/media/video/cx88/cx88-dvb.c	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/media/video/cx88/cx88-dvb.c	2006-10-31 16:13:26.000000000 -0800
-@@ -576,7 +576,7 @@
+diff --git a/drivers/media/video/cx88/cx88-dvb.c b/drivers/media/video/cx88/cx88-dvb.c
+index afde378..fd3ef4c 100644
+--- a/drivers/media/video/cx88/cx88-dvb.c
++++ b/drivers/media/video/cx88/cx88-dvb.c
+@@ -576,7 +576,7 @@ #ifdef HAVE_MT352
  						 &dev->core->i2c_adap);
  		if (dev->dvb.frontend != NULL) {
  			dvb_pll_attach(dev->dvb.frontend, 0x60,
@@ -1140,7 +1280,7 @@
  				       &dvb_pll_thomson_dtt7579);
  			break;
  		}
-@@ -587,7 +587,7 @@
+@@ -587,7 +587,7 @@ #ifdef HAVE_ZL10353
  						   &dev->core->i2c_adap);
  		if (dev->dvb.frontend != NULL) {
  			dvb_pll_attach(dev->dvb.frontend, 0x60,
@@ -1149,7 +1289,7 @@
  				       &dvb_pll_thomson_dtt7579);
  		}
  #endif
-@@ -600,7 +600,7 @@
+@@ -600,7 +600,7 @@ #ifdef HAVE_MT352
  						 &dev->core->i2c_adap);
  		if (dev->dvb.frontend != NULL) {
  			dvb_pll_attach(dev->dvb.frontend, 0x61,
@@ -1158,7 +1298,7 @@
  				       &dvb_pll_thomson_dtt7579);
  			break;
  		}
-@@ -611,7 +611,7 @@
+@@ -611,7 +611,7 @@ #ifdef HAVE_ZL10353
  						   &dev->core->i2c_adap);
  		if (dev->dvb.frontend != NULL) {
  			dvb_pll_attach(dev->dvb.frontend, 0x61,
@@ -1167,7 +1307,7 @@
  				       &dvb_pll_thomson_dtt7579);
  		}
  #endif
-@@ -623,7 +623,7 @@
+@@ -623,7 +623,7 @@ #ifdef HAVE_MT352
  						 &dev->core->i2c_adap);
  		if (dev->dvb.frontend != NULL) {
  			dvb_pll_attach(dev->dvb.frontend, 0x61,
@@ -1176,7 +1316,7 @@
  				       &dvb_pll_lg_z201);
  		}
  		break;
-@@ -634,7 +634,7 @@
+@@ -634,7 +634,7 @@ #ifdef HAVE_MT352
  						 &dev->core->i2c_adap);
  		if (dev->dvb.frontend != NULL) {
  			dvb_pll_attach(dev->dvb.frontend, 0x61,
@@ -1185,7 +1325,7 @@
  				       &dvb_pll_unknown_1);
  		}
  		break;
-@@ -757,7 +757,7 @@
+@@ -757,7 +757,7 @@ #ifdef HAVE_NXT200X
  						 &dev->core->i2c_adap);
  		if (dev->dvb.frontend != NULL) {
  			dvb_pll_attach(dev->dvb.frontend, 0x61,
@@ -1194,10 +1334,11 @@
  				       &dvb_pll_tuv1236d);
  		}
  		break;
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/media/video/saa7134/saa7134-dvb.c linux-2.6.18.2-rc1/drivers/media/video/saa7134/saa7134-dvb.c
---- linux-2.6.18.1/drivers/media/video/saa7134/saa7134-dvb.c	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/media/video/saa7134/saa7134-dvb.c	2006-10-31 16:13:26.000000000 -0800
-@@ -1158,13 +1158,13 @@
+diff --git a/drivers/media/video/saa7134/saa7134-dvb.c b/drivers/media/video/saa7134/saa7134-dvb.c
+index 279828b..449fe23 100644
+--- a/drivers/media/video/saa7134/saa7134-dvb.c
++++ b/drivers/media/video/saa7134/saa7134-dvb.c
+@@ -1158,13 +1158,13 @@ #ifdef HAVE_NXT200X
  	case SAA7134_BOARD_AVERMEDIA_AVERTVHD_A180:
  		dev->dvb.frontend = nxt200x_attach(&avertvhda180, &dev->i2c_adap);
  		if (dev->dvb.frontend) {
@@ -1213,10 +1354,11 @@
  		}
  		break;
  #endif
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/net/sky2.c linux-2.6.18.2-rc1/drivers/net/sky2.c
---- linux-2.6.18.1/drivers/net/sky2.c	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/net/sky2.c	2006-10-31 16:13:26.000000000 -0800
-@@ -678,7 +678,7 @@
+diff --git a/drivers/net/sky2.c b/drivers/net/sky2.c
+index c590c2d..ebe7e25 100644
+--- a/drivers/net/sky2.c
++++ b/drivers/net/sky2.c
+@@ -678,7 +678,7 @@ static void sky2_mac_init(struct sky2_hw
  	sky2_write16(hw, SK_REG(port, TX_GMF_CTRL_T), GMF_OPER_ON);
  
  	if (hw->chip_id == CHIP_ID_YUKON_EC_U) {
@@ -1225,7 +1367,7 @@
  		sky2_write8(hw, SK_REG(port, RX_GMF_UP_THR), 1024/8);
  		if (hw->dev[port]->mtu > ETH_DATA_LEN) {
  			/* set Tx GMAC FIFO Almost Empty Threshold */
-@@ -690,16 +690,10 @@
+@@ -690,16 +690,10 @@ static void sky2_mac_init(struct sky2_hw
  
  }
  
@@ -1245,7 +1387,7 @@
  
  	sky2_write8(hw, RB_ADDR(q, RB_CTRL), RB_RST_CLR);
  	sky2_write32(hw, RB_ADDR(q, RB_START), start);
-@@ -708,7 +702,7 @@
+@@ -708,7 +702,7 @@ static void sky2_ramset(struct sky2_hw *
  	sky2_write32(hw, RB_ADDR(q, RB_RP), start);
  
  	if (q == Q_R1 || q == Q_R2) {
@@ -1254,7 +1396,7 @@
  		u32 tp = space - space/4;
  
  		/* On receive queue's set the thresholds
-@@ -1090,19 +1084,16 @@
+@@ -1090,19 +1084,16 @@ static int sky2_up(struct net_device *de
  
  	sky2_mac_init(hw, port);
  
@@ -1282,7 +1424,7 @@
  
  	/* Make sure SyncQ is disabled */
  	sky2_write8(hw, RB_ADDR(port == 0 ? Q_XS1 : Q_XS2, RB_CTRL),
-@@ -1429,6 +1420,11 @@
+@@ -1429,6 +1420,11 @@ static int sky2_down(struct net_device *
  	/* Stop more packets from being queued */
  	netif_stop_queue(dev);
  
@@ -1294,7 +1436,7 @@
  	sky2_phy_reset(hw, port);
  
  	/* Stop transmitter */
-@@ -1472,11 +1468,6 @@
+@@ -1472,11 +1468,6 @@ static int sky2_down(struct net_device *
  	sky2_write8(hw, SK_REG(port, RX_GMF_CTRL_T), GMF_RST_SET);
  	sky2_write8(hw, SK_REG(port, TX_GMF_CTRL_T), GMF_RST_SET);
  
@@ -1306,7 +1448,7 @@
  	/* turn off LED's */
  	sky2_write16(hw, B0_Y2LED, LED_STAT_OFF);
  
-@@ -1687,13 +1678,13 @@
+@@ -1687,13 +1678,13 @@ static void sky2_phy_intr(struct sky2_hw
  	struct sky2_port *sky2 = netdev_priv(dev);
  	u16 istatus, phystat;
  
@@ -1323,7 +1465,7 @@
  	if (netif_msg_intr(sky2))
  		printk(KERN_INFO PFX "%s: phy interrupt status 0x%x 0x%x\n",
  		       sky2->netdev->name, istatus, phystat);
-@@ -2745,6 +2736,14 @@
+@@ -2745,6 +2736,14 @@ static int sky2_set_mac_address(struct n
  	return 0;
  }
  
@@ -1338,7 +1480,7 @@
  static void sky2_set_multicast(struct net_device *dev)
  {
  	struct sky2_port *sky2 = netdev_priv(dev);
-@@ -2753,6 +2752,7 @@
+@@ -2753,6 +2752,7 @@ static void sky2_set_multicast(struct ne
  	struct dev_mc_list *list = dev->mc_list;
  	u16 reg;
  	u8 filter[8];
@@ -1346,7 +1488,7 @@
  
  	memset(filter, 0, sizeof(filter));
  
-@@ -2763,16 +2763,17 @@
+@@ -2763,16 +2763,17 @@ static void sky2_set_multicast(struct ne
  		reg &= ~(GM_RXCR_UCF_ENA | GM_RXCR_MCF_ENA);
  	else if ((dev->flags & IFF_ALLMULTI) || dev->mc_count > 16)	/* all multicast */
  		memset(filter, 0xff, sizeof(filter));
@@ -1369,7 +1511,7 @@
  	}
  
  	gma_write16(hw, port, GM_MC_ADDR_H1,
-@@ -3208,6 +3209,8 @@
+@@ -3208,6 +3209,8 @@ static int __devinit sky2_test_msi(struc
  	struct pci_dev *pdev = hw->pdev;
  	int err;
  
@@ -1378,7 +1520,7 @@
  	sky2_write32(hw, B0_IMSK, Y2_IS_IRQ_SW);
  
  	err = request_irq(pdev->irq, sky2_test_intr, IRQF_SHARED, DRV_NAME, hw);
-@@ -3217,18 +3220,15 @@
+@@ -3217,18 +3220,15 @@ static int __devinit sky2_test_msi(struc
  		return err;
  	}
  
@@ -1400,7 +1542,7 @@
  		       pci_name(pdev));
  
  		err = -EOPNOTSUPP;
-@@ -3236,6 +3236,7 @@
+@@ -3236,6 +3236,7 @@ static int __devinit sky2_test_msi(struc
  	}
  
  	sky2_write32(hw, B0_IMSK, 0);
@@ -1408,10 +1550,11 @@
  
  	free_irq(pdev->irq, hw);
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/net/sky2.h linux-2.6.18.2-rc1/drivers/net/sky2.h
---- linux-2.6.18.1/drivers/net/sky2.h	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/net/sky2.h	2006-10-31 16:13:26.000000000 -0800
-@@ -1566,7 +1566,7 @@
+diff --git a/drivers/net/sky2.h b/drivers/net/sky2.h
+index ac5248b..7af5499 100644
+--- a/drivers/net/sky2.h
++++ b/drivers/net/sky2.h
+@@ -1566,7 +1566,7 @@ enum {
  
  	GMR_FS_ANY_ERR	= GMR_FS_RX_FF_OV | GMR_FS_CRC_ERR |
  			  GMR_FS_FRAGMENT | GMR_FS_LONG_ERR |
@@ -1420,10 +1563,11 @@
  			  GMR_FS_UN_SIZE | GMR_FS_JABBER,
  };
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/pci/quirks.c linux-2.6.18.2-rc1/drivers/pci/quirks.c
---- linux-2.6.18.1/drivers/pci/quirks.c	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/pci/quirks.c	2006-10-31 16:13:27.000000000 -0800
-@@ -685,33 +685,6 @@
+diff --git a/drivers/pci/quirks.c b/drivers/pci/quirks.c
+index 17e709e..60b31ac 100644
+--- a/drivers/pci/quirks.c
++++ b/drivers/pci/quirks.c
+@@ -685,33 +685,6 @@ static void __devinit quirk_vt82c598_id(
  }
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_VIA,	PCI_DEVICE_ID_VIA_82C597_0,	quirk_vt82c598_id );
  
@@ -1457,10 +1601,11 @@
  /*
   * CardBus controllers have a legacy base address that enables them
   * to respond as i82365 pcmcia controllers.  We don't want them to
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/rtc/rtc-max6902.c linux-2.6.18.2-rc1/drivers/rtc/rtc-max6902.c
---- linux-2.6.18.1/drivers/rtc/rtc-max6902.c	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/rtc/rtc-max6902.c	2006-10-31 16:13:27.000000000 -0800
-@@ -137,7 +137,7 @@
+diff --git a/drivers/rtc/rtc-max6902.c b/drivers/rtc/rtc-max6902.c
+index 2c97395..b38208b 100644
+--- a/drivers/rtc/rtc-max6902.c
++++ b/drivers/rtc/rtc-max6902.c
+@@ -137,7 +137,7 @@ static int max6902_get_datetime(struct d
  	dt->tm_min	= BCD2BIN(chip->buf[2]);
  	dt->tm_hour	= BCD2BIN(chip->buf[3]);
  	dt->tm_mday	= BCD2BIN(chip->buf[4]);
@@ -1469,10 +1614,11 @@
  	dt->tm_wday	= BCD2BIN(chip->buf[6]);
  	dt->tm_year = BCD2BIN(chip->buf[7]);
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/scsi/aic7xxx/aic7xxx_osm.c linux-2.6.18.2-rc1/drivers/scsi/aic7xxx/aic7xxx_osm.c
---- linux-2.6.18.1/drivers/scsi/aic7xxx/aic7xxx_osm.c	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/scsi/aic7xxx/aic7xxx_osm.c	2006-10-31 16:13:26.000000000 -0800
-@@ -2539,15 +2539,28 @@
+diff --git a/drivers/scsi/aic7xxx/aic7xxx_osm.c b/drivers/scsi/aic7xxx/aic7xxx_osm.c
+index aa4be8a..129444a 100644
+--- a/drivers/scsi/aic7xxx/aic7xxx_osm.c
++++ b/drivers/scsi/aic7xxx/aic7xxx_osm.c
+@@ -2539,15 +2539,28 @@ #endif
  static void ahc_linux_get_signalling(struct Scsi_Host *shost)
  {
  	struct ahc_softc *ahc = *(struct ahc_softc **)shost->hostdata;
@@ -1505,10 +1651,11 @@
  	else
  		spi_signalling(shost) = SPI_SIGNAL_UNKNOWN;
  }
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/serial/serial_core.c linux-2.6.18.2-rc1/drivers/serial/serial_core.c
---- linux-2.6.18.1/drivers/serial/serial_core.c	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/serial/serial_core.c	2006-10-31 16:13:26.000000000 -0800
-@@ -1932,6 +1932,9 @@
+diff --git a/drivers/serial/serial_core.c b/drivers/serial/serial_core.c
+index 372e47f..c59dcb7 100644
+--- a/drivers/serial/serial_core.c
++++ b/drivers/serial/serial_core.c
+@@ -1932,6 +1932,9 @@ int uart_suspend_port(struct uart_driver
  	if (state->info && state->info->flags & UIF_INITIALIZED) {
  		const struct uart_ops *ops = port->ops;
  
@@ -1518,7 +1665,7 @@
  		spin_lock_irq(&port->lock);
  		ops->stop_tx(port);
  		ops->set_mctrl(port, 0);
-@@ -1991,7 +1994,7 @@
+@@ -1991,7 +1994,7 @@ int uart_resume_port(struct uart_driver 
  		console_start(port->cons);
  	}
  
@@ -1527,7 +1674,7 @@
  		const struct uart_ops *ops = port->ops;
  		int ret;
  
-@@ -2003,15 +2006,17 @@
+@@ -2003,15 +2006,17 @@ int uart_resume_port(struct uart_driver 
  			ops->set_mctrl(port, port->mctrl);
  			ops->start_tx(port);
  			spin_unlock_irq(&port->lock);
@@ -1546,10 +1693,11 @@
  	}
  
  	mutex_unlock(&state->mutex);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/serial/serial_cs.c linux-2.6.18.2-rc1/drivers/serial/serial_cs.c
---- linux-2.6.18.1/drivers/serial/serial_cs.c	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/serial/serial_cs.c	2006-10-31 16:13:26.000000000 -0800
-@@ -185,14 +185,12 @@
+diff --git a/drivers/serial/serial_cs.c b/drivers/serial/serial_cs.c
+index cbf260b..06a246a 100644
+--- a/drivers/serial/serial_cs.c
++++ b/drivers/serial/serial_cs.c
+@@ -185,14 +185,12 @@ static int serial_suspend(struct pcmcia_
  
  static int serial_resume(struct pcmcia_device *link)
  {
@@ -1569,10 +1717,11 @@
  
  	return 0;
  }
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/usb/core/devio.c linux-2.6.18.2-rc1/drivers/usb/core/devio.c
---- linux-2.6.18.1/drivers/usb/core/devio.c	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/usb/core/devio.c	2006-10-31 16:26:56.000000000 -0800
-@@ -59,6 +59,9 @@
+diff --git a/drivers/usb/core/devio.c b/drivers/usb/core/devio.c
+index 218621b..ab6cc03 100644
+--- a/drivers/usb/core/devio.c
++++ b/drivers/usb/core/devio.c
+@@ -59,6 +59,9 @@ #define USB_MAXBUS			64
  #define USB_DEVICE_MAX			USB_MAXBUS * 128
  static struct class *usb_device_class;
  
@@ -1582,7 +1731,7 @@
  struct async {
  	struct list_head asynclist;
  	struct dev_state *ps;
-@@ -541,15 +544,13 @@
+@@ -541,15 +544,13 @@ static int usbdev_open(struct inode *ino
  	struct dev_state *ps;
  	int ret;
  
@@ -1602,7 +1751,7 @@
  	ret = -ENOENT;
  	/* check if we are called from a real node or usbfs */
  	if (imajor(inode) == USB_DEVICE_MAJOR)
-@@ -579,9 +580,8 @@
+@@ -579,9 +580,8 @@ static int usbdev_open(struct inode *ino
  	list_add_tail(&ps->list, &dev->filelist);
  	file->private_data = ps;
   out:
@@ -1614,7 +1763,7 @@
  }
  
  static int usbdev_release(struct inode *inode, struct file *file)
-@@ -591,7 +591,12 @@
+@@ -591,7 +591,12 @@ static int usbdev_release(struct inode *
  	unsigned int ifnum;
  
  	usb_lock_device(dev);
@@ -1627,7 +1776,7 @@
  	for (ifnum = 0; ps->ifclaimed && ifnum < 8*sizeof(ps->ifclaimed);
  			ifnum++) {
  		if (test_bit(ifnum, &ps->ifclaimed))
-@@ -600,9 +605,8 @@
+@@ -600,9 +605,8 @@ static int usbdev_release(struct inode *
  	destroy_all_async(ps);
  	usb_unlock_device(dev);
  	usb_put_dev(dev);
@@ -1638,10 +1787,11 @@
  }
  
  static int proc_control(struct dev_state *ps, void __user *arg)
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/usb/core/notify.c linux-2.6.18.2-rc1/drivers/usb/core/notify.c
---- linux-2.6.18.1/drivers/usb/core/notify.c	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/usb/core/notify.c	2006-10-31 16:26:56.000000000 -0800
-@@ -50,8 +50,11 @@
+diff --git a/drivers/usb/core/notify.c b/drivers/usb/core/notify.c
+index b042676..6b36897 100644
+--- a/drivers/usb/core/notify.c
++++ b/drivers/usb/core/notify.c
+@@ -50,8 +50,11 @@ void usb_notify_add_device(struct usb_de
  
  void usb_notify_remove_device(struct usb_device *udev)
  {
@@ -1653,10 +1803,11 @@
  }
  
  void usb_notify_add_bus(struct usb_bus *ubus)
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/drivers/usb/core/usb.h linux-2.6.18.2-rc1/drivers/usb/core/usb.h
---- linux-2.6.18.1/drivers/usb/core/usb.h	2006-10-31 21:13:28.000000000 -0800
-+++ linux-2.6.18.2-rc1/drivers/usb/core/usb.h	2006-10-31 16:26:56.000000000 -0800
-@@ -59,6 +59,7 @@
+diff --git a/drivers/usb/core/usb.h b/drivers/usb/core/usb.h
+index 49f6923..1217fbb 100644
+--- a/drivers/usb/core/usb.h
++++ b/drivers/usb/core/usb.h
+@@ -59,6 +59,7 @@ static inline int is_active(struct usb_i
  extern const char *usbcore_name;
  
  /* usbfs stuff */
@@ -1664,10 +1815,11 @@
  extern struct usb_driver usbfs_driver;
  extern struct file_operations usbfs_devices_fops;
  extern struct file_operations usbfs_device_file_operations;
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/fs/fuse/dir.c linux-2.6.18.2-rc1/fs/fuse/dir.c
---- linux-2.6.18.1/fs/fuse/dir.c	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/fs/fuse/dir.c	2006-10-31 16:13:26.000000000 -0800
-@@ -935,14 +935,30 @@
+diff --git a/fs/fuse/dir.c b/fs/fuse/dir.c
+index 409ce6a..5d7c726 100644
+--- a/fs/fuse/dir.c
++++ b/fs/fuse/dir.c
+@@ -935,14 +935,30 @@ static void iattr_to_fattr(struct iattr 
  	}
  }
  
@@ -1701,7 +1853,7 @@
   */
  static int fuse_setattr(struct dentry *entry, struct iattr *attr)
  {
-@@ -993,12 +1009,8 @@
+@@ -993,12 +1009,8 @@ static int fuse_setattr(struct dentry *e
  			make_bad_inode(inode);
  			err = -EIO;
  		} else {
@@ -1716,10 +1868,11 @@
  			fuse_change_attributes(inode, &outarg.attr);
  			fi->i_time = time_to_jiffies(outarg.attr_valid,
  						     outarg.attr_valid_nsec);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/fs/fuse/file.c linux-2.6.18.2-rc1/fs/fuse/file.c
---- linux-2.6.18.1/fs/fuse/file.c	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/fs/fuse/file.c	2006-10-31 16:13:26.000000000 -0800
-@@ -481,8 +481,10 @@
+diff --git a/fs/fuse/file.c b/fs/fuse/file.c
+index 5c4fcd1..4e174c8 100644
+--- a/fs/fuse/file.c
++++ b/fs/fuse/file.c
+@@ -481,8 +481,10 @@ static int fuse_commit_write(struct file
  		err = -EIO;
  	if (!err) {
  		pos += count;
@@ -1731,7 +1884,7 @@
  
  		if (offset == 0 && to == PAGE_CACHE_SIZE) {
  			clear_page_dirty(page);
-@@ -586,8 +588,12 @@
+@@ -586,8 +588,12 @@ static ssize_t fuse_direct_io(struct fil
  	}
  	fuse_put_request(fc, req);
  	if (res > 0) {
@@ -1746,10 +1899,11 @@
  		*ppos = pos;
  	}
  	fuse_invalidate_attr(inode);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/fs/fuse/inode.c linux-2.6.18.2-rc1/fs/fuse/inode.c
---- linux-2.6.18.1/fs/fuse/inode.c	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/fs/fuse/inode.c	2006-10-31 16:13:26.000000000 -0800
-@@ -109,6 +109,7 @@
+diff --git a/fs/fuse/inode.c b/fs/fuse/inode.c
+index 7d25092..65df8a4 100644
+--- a/fs/fuse/inode.c
++++ b/fs/fuse/inode.c
+@@ -109,6 +109,7 @@ static int fuse_remount_fs(struct super_
  
  void fuse_change_attributes(struct inode *inode, struct fuse_attr *attr)
  {
@@ -1757,7 +1911,7 @@
  	if (S_ISREG(inode->i_mode) && i_size_read(inode) != attr->size)
  		invalidate_inode_pages(inode->i_mapping);
  
-@@ -117,7 +118,9 @@
+@@ -117,7 +118,9 @@ void fuse_change_attributes(struct inode
  	inode->i_nlink   = attr->nlink;
  	inode->i_uid     = attr->uid;
  	inode->i_gid     = attr->gid;
@@ -1767,7 +1921,7 @@
  	inode->i_blksize = PAGE_CACHE_SIZE;
  	inode->i_blocks  = attr->blocks;
  	inode->i_atime.tv_sec   = attr->atime;
-@@ -131,7 +134,7 @@
+@@ -131,7 +134,7 @@ void fuse_change_attributes(struct inode
  static void fuse_init_inode(struct inode *inode, struct fuse_attr *attr)
  {
  	inode->i_mode = attr->mode & S_IFMT;
@@ -1776,10 +1930,11 @@
  	if (S_ISREG(inode->i_mode)) {
  		fuse_init_common(inode);
  		fuse_init_file_inode(inode);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/fs/jfs/jfs_imap.c linux-2.6.18.2-rc1/fs/jfs/jfs_imap.c
---- linux-2.6.18.1/fs/jfs/jfs_imap.c	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/fs/jfs/jfs_imap.c	2006-10-31 16:13:26.000000000 -0800
-@@ -318,7 +318,7 @@
+diff --git a/fs/jfs/jfs_imap.c b/fs/jfs/jfs_imap.c
+index ccbe60a..3bdd90b 100644
+--- a/fs/jfs/jfs_imap.c
++++ b/fs/jfs/jfs_imap.c
+@@ -318,7 +318,7 @@ int diRead(struct inode *ip)
  	struct inomap *imap;
  	int block_offset;
  	int inodes_left;
@@ -1788,7 +1943,7 @@
  	int rel_inode;
  
  	jfs_info("diRead: ino = %ld", ip->i_ino);
-@@ -606,7 +606,7 @@
+@@ -606,7 +606,7 @@ int diWrite(tid_t tid, struct inode *ip)
  	int block_offset;
  	int inodes_left;
  	struct metapage *mp;
@@ -1797,10 +1952,11 @@
  	int rel_inode;
  	int dioffset;
  	struct inode *ipimap;
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/fs/nfs/dir.c linux-2.6.18.2-rc1/fs/nfs/dir.c
---- linux-2.6.18.1/fs/nfs/dir.c	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/fs/nfs/dir.c	2006-10-31 16:13:27.000000000 -0800
-@@ -902,9 +902,15 @@
+diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
+index e7ffb4d..f86b9b4 100644
+--- a/fs/nfs/dir.c
++++ b/fs/nfs/dir.c
+@@ -902,9 +902,15 @@ static struct dentry *nfs_lookup(struct 
  
  	lock_kernel();
  
@@ -1819,7 +1975,7 @@
  
  	error = NFS_PROTO(dir)->lookup(dir, &dentry->d_name, &fhandle, &fattr);
  	if (error == -ENOENT)
-@@ -1156,6 +1162,8 @@
+@@ -1156,6 +1162,8 @@ int nfs_instantiate(struct dentry *dentr
  	if (IS_ERR(inode))
  		goto out_err;
  	d_instantiate(dentry, inode);
@@ -1828,10 +1984,11 @@
  	return 0;
  out_err:
  	d_drop(dentry);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/fs/splice.c linux-2.6.18.2-rc1/fs/splice.c
---- linux-2.6.18.1/fs/splice.c	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/fs/splice.c	2006-10-31 16:13:26.000000000 -0800
-@@ -607,7 +607,7 @@
+diff --git a/fs/splice.c b/fs/splice.c
+index 684bca3..4eed2f6 100644
+--- a/fs/splice.c
++++ b/fs/splice.c
+@@ -607,7 +607,7 @@ find_page:
  			ret = -ENOMEM;
  			page = page_cache_alloc_cold(mapping);
  			if (unlikely(!page))
@@ -1840,7 +1997,7 @@
  
  			/*
  			 * This will also lock the page
-@@ -666,7 +666,7 @@
+@@ -666,7 +666,7 @@ find_page:
  		if (sd->pos + this_len > isize)
  			vmtruncate(mapping->host, isize);
  
@@ -1849,7 +2006,7 @@
  	}
  
  	if (buf->page != page) {
-@@ -698,7 +698,7 @@
+@@ -698,7 +698,7 @@ find_page:
  out:
  	page_cache_release(page);
  	unlock_page(page);
@@ -1858,9 +2015,10 @@
  	return ret;
  }
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/include/asm-generic/audit_change_attr.h linux-2.6.18.2-rc1/include/asm-generic/audit_change_attr.h
---- linux-2.6.18.1/include/asm-generic/audit_change_attr.h	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/include/asm-generic/audit_change_attr.h	2006-10-31 16:13:26.000000000 -0800
+diff --git a/include/asm-generic/audit_change_attr.h b/include/asm-generic/audit_change_attr.h
+index cb05bf6..5076455 100644
+--- a/include/asm-generic/audit_change_attr.h
++++ b/include/asm-generic/audit_change_attr.h
 @@ -1,16 +1,20 @@
  __NR_chmod,
  __NR_fchmod,
@@ -1882,9 +2040,10 @@
  #ifdef __NR_chown32
  __NR_chown32,
  __NR_fchown32,
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/include/asm-generic/audit_dir_write.h linux-2.6.18.2-rc1/include/asm-generic/audit_dir_write.h
---- linux-2.6.18.1/include/asm-generic/audit_dir_write.h	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/include/asm-generic/audit_dir_write.h	2006-10-31 16:13:26.000000000 -0800
+diff --git a/include/asm-generic/audit_dir_write.h b/include/asm-generic/audit_dir_write.h
+index 161a7a5..6621bd8 100644
+--- a/include/asm-generic/audit_dir_write.h
++++ b/include/asm-generic/audit_dir_write.h
 @@ -1,14 +1,18 @@
  __NR_rename,
  __NR_mkdir,
@@ -1904,9 +2063,10 @@
  __NR_linkat,
  __NR_symlinkat,
 +#endif
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/include/asm-s390/div64.h linux-2.6.18.2-rc1/include/asm-s390/div64.h
---- linux-2.6.18.1/include/asm-s390/div64.h	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/include/asm-s390/div64.h	2006-10-31 16:13:26.000000000 -0800
+diff --git a/include/asm-s390/div64.h b/include/asm-s390/div64.h
+index af098dc..6cd978c 100644
+--- a/include/asm-s390/div64.h
++++ b/include/asm-s390/div64.h
 @@ -1,49 +1 @@
 -#ifndef __S390_DIV64
 -#define __S390_DIV64
@@ -1957,10 +2117,11 @@
 -#endif /* __s390x__ */
 -
 -#endif
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/include/linux/mmzone.h linux-2.6.18.2-rc1/include/linux/mmzone.h
---- linux-2.6.18.1/include/linux/mmzone.h	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/include/linux/mmzone.h	2006-10-31 16:13:27.000000000 -0800
-@@ -200,13 +200,9 @@
+diff --git a/include/linux/mmzone.h b/include/linux/mmzone.h
+index 5951364..5dfe111 100644
+--- a/include/linux/mmzone.h
++++ b/include/linux/mmzone.h
+@@ -200,13 +200,9 @@ #endif
  	 * under - it drives the swappiness decision: whether to unmap mapped
  	 * pages.
  	 *
@@ -1975,7 +2136,7 @@
  	int prev_priority;
  
  
-@@ -632,6 +628,12 @@
+@@ -632,6 +628,12 @@ #define sparse_init()	do {} while (0)
  #define sparse_index_init(_sec, _nid)  do {} while (0)
  #endif /* CONFIG_SPARSEMEM */
  
@@ -1988,10 +2149,11 @@
  #ifndef early_pfn_valid
  #define early_pfn_valid(pfn)	(1)
  #endif
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/include/linux/serial_core.h linux-2.6.18.2-rc1/include/linux/serial_core.h
---- linux-2.6.18.1/include/linux/serial_core.h	2006-10-31 21:13:29.000000000 -0800
-+++ linux-2.6.18.2-rc1/include/linux/serial_core.h	2006-10-31 16:13:26.000000000 -0800
-@@ -319,6 +319,7 @@
+diff --git a/include/linux/serial_core.h b/include/linux/serial_core.h
+index 86501a3..f9fdf97 100644
+--- a/include/linux/serial_core.h
++++ b/include/linux/serial_core.h
+@@ -319,6 +319,7 @@ #define UIF_CHECK_CD		((__force uif_t) (
  #define UIF_CTS_FLOW		((__force uif_t) (1 << 26))
  #define UIF_NORMAL_ACTIVE	((__force uif_t) (1 << 29))
  #define UIF_INITIALIZED		((__force uif_t) (1 << 31))
@@ -1999,10 +2161,11 @@
  
  	int			blocked_open;
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/kernel/posix-cpu-timers.c linux-2.6.18.2-rc1/kernel/posix-cpu-timers.c
---- linux-2.6.18.1/kernel/posix-cpu-timers.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/kernel/posix-cpu-timers.c	2006-10-31 16:13:26.000000000 -0800
-@@ -88,6 +88,19 @@
+diff --git a/kernel/posix-cpu-timers.c b/kernel/posix-cpu-timers.c
+index d38d9ec..0779b48 100644
+--- a/kernel/posix-cpu-timers.c
++++ b/kernel/posix-cpu-timers.c
+@@ -88,6 +88,19 @@ static inline union cpu_time_count cpu_t
  }
  
  /*
@@ -2022,7 +2185,7 @@
   * Update expiry time from increment, and increase overrun count,
   * given the current clock sample.
   */
-@@ -483,8 +496,8 @@
+@@ -483,8 +496,8 @@ static void process_timer_rebalance(stru
  		BUG();
  		break;
  	case CPUCLOCK_PROF:
@@ -2033,7 +2196,7 @@
  		do {
  			if (likely(!(t->flags & PF_EXITING))) {
  				ticks = cputime_add(prof_ticks(t), left);
-@@ -498,8 +511,8 @@
+@@ -498,8 +511,8 @@ static void process_timer_rebalance(stru
  		} while (t != p);
  		break;
  	case CPUCLOCK_VIRT:
@@ -2044,7 +2207,7 @@
  		do {
  			if (likely(!(t->flags & PF_EXITING))) {
  				ticks = cputime_add(virt_ticks(t), left);
-@@ -515,6 +528,7 @@
+@@ -515,6 +528,7 @@ static void process_timer_rebalance(stru
  	case CPUCLOCK_SCHED:
  		nsleft = expires.sched - val.sched;
  		do_div(nsleft, nthreads);
@@ -2052,7 +2215,7 @@
  		do {
  			if (likely(!(t->flags & PF_EXITING))) {
  				ns = t->sched_time + nsleft;
-@@ -1159,12 +1173,13 @@
+@@ -1159,12 +1173,13 @@ static void check_process_timers(struct 
  
  		prof_left = cputime_sub(prof_expires, utime);
  		prof_left = cputime_sub(prof_left, stime);
@@ -2068,10 +2231,11 @@
  		} else {
  			sched_left = 0;
  		}
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/kernel/taskstats.c linux-2.6.18.2-rc1/kernel/taskstats.c
---- linux-2.6.18.1/kernel/taskstats.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/kernel/taskstats.c	2006-10-31 16:13:27.000000000 -0800
-@@ -229,14 +229,17 @@
+diff --git a/kernel/taskstats.c b/kernel/taskstats.c
+index e781876..b90b2a7 100644
+--- a/kernel/taskstats.c
++++ b/kernel/taskstats.c
+@@ -229,14 +229,17 @@ static int fill_tgid(pid_t tgid, struct 
  	} else
  		get_task_struct(first);
  
@@ -2094,7 +2258,7 @@
  	do {
  		if (tsk->exit_state == EXIT_ZOMBIE && thread_group_leader(tsk))
  			continue;
-@@ -256,7 +259,7 @@
+@@ -256,7 +259,7 @@ static int fill_tgid(pid_t tgid, struct 
  	 * Accounting subsytems can also add calls here to modify
  	 * fields of taskstats.
  	 */
@@ -2103,10 +2267,11 @@
  	return 0;
  }
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/lib/audit.c linux-2.6.18.2-rc1/lib/audit.c
---- linux-2.6.18.1/lib/audit.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/lib/audit.c	2006-10-31 16:13:26.000000000 -0800
-@@ -28,8 +28,10 @@
+diff --git a/lib/audit.c b/lib/audit.c
+index 8c21625..3b1289f 100644
+--- a/lib/audit.c
++++ b/lib/audit.c
+@@ -28,8 +28,10 @@ int audit_classify_syscall(int abi, unsi
  	switch(syscall) {
  	case __NR_open:
  		return 2;
@@ -2117,10 +2282,11 @@
  #ifdef __NR_socketcall
  	case __NR_socketcall:
  		return 4;
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/mm/memory.c linux-2.6.18.2-rc1/mm/memory.c
---- linux-2.6.18.1/mm/memory.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/mm/memory.c	2006-10-31 16:13:26.000000000 -0800
-@@ -1551,7 +1551,14 @@
+diff --git a/mm/memory.c b/mm/memory.c
+index 109e986..d28450c 100644
+--- a/mm/memory.c
++++ b/mm/memory.c
+@@ -1551,7 +1551,14 @@ gotten:
  		entry = mk_pte(new_page, vma->vm_page_prot);
  		entry = maybe_mkwrite(pte_mkdirty(entry), vma);
  		lazy_mmu_prot_update(entry);
@@ -2136,10 +2302,11 @@
  		update_mmu_cache(vma, address, entry);
  		lru_cache_add_active(new_page);
  		page_add_new_anon_rmap(new_page, vma, address);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/mm/page_alloc.c linux-2.6.18.2-rc1/mm/page_alloc.c
---- linux-2.6.18.1/mm/page_alloc.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/mm/page_alloc.c	2006-10-31 16:13:27.000000000 -0800
-@@ -1673,6 +1673,8 @@
+diff --git a/mm/page_alloc.c b/mm/page_alloc.c
+index 7e92c94..128b9f5 100644
+--- a/mm/page_alloc.c
++++ b/mm/page_alloc.c
+@@ -1673,6 +1673,8 @@ void __meminit memmap_init_zone(unsigned
  	for (pfn = start_pfn; pfn < end_pfn; pfn++) {
  		if (!early_pfn_valid(pfn))
  			continue;
@@ -2148,7 +2315,7 @@
  		page = pfn_to_page(pfn);
  		set_page_links(page, zone, nid, pfn);
  		init_page_count(page);
-@@ -2019,7 +2021,7 @@
+@@ -2019,7 +2021,7 @@ #endif
  		zone->zone_pgdat = pgdat;
  		zone->free_pages = 0;
  
@@ -2157,10 +2324,11 @@
  
  		zone_pcp_init(zone);
  		INIT_LIST_HEAD(&zone->active_list);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/mm/vmscan.c linux-2.6.18.2-rc1/mm/vmscan.c
---- linux-2.6.18.1/mm/vmscan.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/mm/vmscan.c	2006-10-31 16:13:27.000000000 -0800
-@@ -696,6 +696,20 @@
+diff --git a/mm/vmscan.c b/mm/vmscan.c
+index 1dad4b6..a04fb41 100644
+--- a/mm/vmscan.c
++++ b/mm/vmscan.c
+@@ -696,6 +696,20 @@ done:
  }
  
  /*
@@ -2181,7 +2349,7 @@
   * This moves pages from the active list to the inactive list.
   *
   * We move them the other way if the page is referenced by one or more
-@@ -713,7 +727,7 @@
+@@ -713,7 +727,7 @@ done:
   * But we had to alter page->flags anyway.
   */
  static void shrink_active_list(unsigned long nr_pages, struct zone *zone,
@@ -2190,7 +2358,7 @@
  {
  	unsigned long pgmoved;
  	int pgdeactivate = 0;
-@@ -734,7 +748,7 @@
+@@ -734,7 +748,7 @@ static void shrink_active_list(unsigned 
  		 * `distress' is a measure of how much trouble we're having
  		 * reclaiming pages.  0 -> no problems.  100 -> great trouble.
  		 */
@@ -2199,7 +2367,7 @@
  
  		/*
  		 * The point of this algorithm is to decide when to start
-@@ -885,7 +899,7 @@
+@@ -885,7 +899,7 @@ static unsigned long shrink_zone(int pri
  			nr_to_scan = min(nr_active,
  					(unsigned long)sc->swap_cluster_max);
  			nr_active -= nr_to_scan;
@@ -2208,7 +2376,7 @@
  		}
  
  		if (nr_inactive) {
-@@ -934,9 +948,7 @@
+@@ -934,9 +948,7 @@ static unsigned long shrink_zones(int pr
  		if (!cpuset_zone_allowed(zone, __GFP_HARDWALL))
  			continue;
  
@@ -2219,7 +2387,7 @@
  
  		if (zone->all_unreclaimable && priority != DEF_PRIORITY)
  			continue;	/* Let kswapd poll it */
-@@ -984,7 +996,6 @@
+@@ -984,7 +996,6 @@ unsigned long try_to_free_pages(struct z
  		if (!cpuset_zone_allowed(zone, __GFP_HARDWALL))
  			continue;
  
@@ -2227,7 +2395,7 @@
  		lru_pages += zone->nr_active + zone->nr_inactive;
  	}
  
-@@ -1022,13 +1033,22 @@
+@@ -1022,13 +1033,22 @@ unsigned long try_to_free_pages(struct z
  			blk_congestion_wait(WRITE, HZ/10);
  	}
  out:
@@ -2251,7 +2419,7 @@
  	}
  	return ret;
  }
-@@ -1068,6 +1088,11 @@
+@@ -1068,6 +1088,11 @@ static unsigned long balance_pgdat(pg_da
  		.swap_cluster_max = SWAP_CLUSTER_MAX,
  		.swappiness = vm_swappiness,
  	};
@@ -2263,7 +2431,7 @@
  
  loop_again:
  	total_scanned = 0;
-@@ -1075,11 +1100,8 @@
+@@ -1075,11 +1100,8 @@ loop_again:
  	sc.may_writepage = !laptop_mode;
  	count_vm_event(PAGEOUTRUN);
  
@@ -2277,7 +2445,7 @@
  
  	for (priority = DEF_PRIORITY; priority >= 0; priority--) {
  		int end_zone = 0;	/* Inclusive.  0 = ZONE_DMA */
-@@ -1140,10 +1162,9 @@
+@@ -1140,10 +1162,9 @@ scan:
  			if (!zone_watermark_ok(zone, order, zone->pages_high,
  					       end_zone, 0))
  				all_zones_ok = 0;
@@ -2290,7 +2458,7 @@
  			nr_reclaimed += shrink_zone(priority, zone, &sc);
  			reclaim_state->reclaimed_slab = 0;
  			nr_slab = shrink_slab(sc.nr_scanned, GFP_KERNEL,
-@@ -1183,10 +1204,15 @@
+@@ -1183,10 +1204,15 @@ scan:
  			break;
  	}
  out:
@@ -2307,7 +2475,7 @@
  	}
  	if (!all_zones_ok) {
  		cond_resched();
-@@ -1315,7 +1341,7 @@
+@@ -1315,7 +1341,7 @@ static unsigned long shrink_all_zones(un
  			if (zone->nr_scan_active >= nr_pages || pass > 3) {
  				zone->nr_scan_active = 0;
  				nr_to_scan = min(nr_pages, zone->nr_active);
@@ -2316,7 +2484,7 @@
  			}
  		}
  
-@@ -1570,6 +1596,7 @@
+@@ -1570,6 +1596,7 @@ static int __zone_reclaim(struct zone *z
  		 */
  		priority = ZONE_RECLAIM_PRIORITY;
  		do {
@@ -2324,10 +2492,11 @@
  			nr_reclaimed += shrink_zone(priority, zone, &sc);
  			priority--;
  		} while (priority >= 0 && nr_reclaimed < nr_pages);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/mm/vmstat.c linux-2.6.18.2-rc1/mm/vmstat.c
---- linux-2.6.18.1/mm/vmstat.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/mm/vmstat.c	2006-10-31 16:13:27.000000000 -0800
-@@ -586,11 +586,9 @@
+diff --git a/mm/vmstat.c b/mm/vmstat.c
+index c1b5f41..0e3f7e2 100644
+--- a/mm/vmstat.c
++++ b/mm/vmstat.c
+@@ -586,11 +586,9 @@ #endif
  		seq_printf(m,
  			   "\n  all_unreclaimable: %u"
  			   "\n  prev_priority:     %i"
@@ -2339,10 +2508,11 @@
  			   zone->zone_start_pfn);
  		spin_unlock_irqrestore(&zone->lock, flags);
  		seq_putc(m, '\n');
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/net/bluetooth/rfcomm/tty.c linux-2.6.18.2-rc1/net/bluetooth/rfcomm/tty.c
---- linux-2.6.18.1/net/bluetooth/rfcomm/tty.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/net/bluetooth/rfcomm/tty.c	2006-10-31 16:13:26.000000000 -0800
-@@ -748,6 +748,9 @@
+diff --git a/net/bluetooth/rfcomm/tty.c b/net/bluetooth/rfcomm/tty.c
+index bd8d671..5d65ceb 100644
+--- a/net/bluetooth/rfcomm/tty.c
++++ b/net/bluetooth/rfcomm/tty.c
+@@ -748,6 +748,9 @@ static void rfcomm_tty_set_termios(struc
  
  	BT_DBG("tty %p termios %p", tty, old);
  
@@ -2352,10 +2522,11 @@
  	/* Handle turning off CRTSCTS */
  	if ((old->c_cflag & CRTSCTS) && !(new->c_cflag & CRTSCTS)) 
  		BT_DBG("Turning off CRTSCTS unsupported");
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/net/core/skbuff.c linux-2.6.18.2-rc1/net/core/skbuff.c
---- linux-2.6.18.1/net/core/skbuff.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/net/core/skbuff.c	2006-10-31 16:13:26.000000000 -0800
-@@ -1945,7 +1945,7 @@
+diff --git a/net/core/skbuff.c b/net/core/skbuff.c
+index c54f366..7de9857 100644
+--- a/net/core/skbuff.c
++++ b/net/core/skbuff.c
+@@ -1945,7 +1945,7 @@ struct sk_buff *skb_segment(struct sk_bu
  	do {
  		struct sk_buff *nskb;
  		skb_frag_t *frag;
@@ -2364,7 +2535,7 @@
  		int k;
  		int size;
  
-@@ -1956,11 +1956,10 @@
+@@ -1956,11 +1956,10 @@ struct sk_buff *skb_segment(struct sk_bu
  		hsize = skb_headlen(skb) - offset;
  		if (hsize < 0)
  			hsize = 0;
@@ -2379,10 +2550,11 @@
  		if (unlikely(!nskb))
  			goto err;
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/net/decnet/af_decnet.c linux-2.6.18.2-rc1/net/decnet/af_decnet.c
---- linux-2.6.18.1/net/decnet/af_decnet.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/net/decnet/af_decnet.c	2006-10-31 16:13:26.000000000 -0800
-@@ -1177,8 +1177,10 @@
+diff --git a/net/decnet/af_decnet.c b/net/decnet/af_decnet.c
+index 5486247..07d9869 100644
+--- a/net/decnet/af_decnet.c
++++ b/net/decnet/af_decnet.c
+@@ -1177,8 +1177,10 @@ static int dn_getname(struct socket *soc
  	if (peer) {
  		if ((sock->state != SS_CONNECTED && 
  		     sock->state != SS_CONNECTING) && 
@@ -2394,10 +2566,11 @@
  
  		memcpy(sa, &scp->peer, sizeof(struct sockaddr_dn));
  	} else {
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/net/ipv4/tcp_cubic.c linux-2.6.18.2-rc1/net/ipv4/tcp_cubic.c
---- linux-2.6.18.1/net/ipv4/tcp_cubic.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/net/ipv4/tcp_cubic.c	2006-10-31 16:13:27.000000000 -0800
-@@ -190,7 +190,7 @@
+diff --git a/net/ipv4/tcp_cubic.c b/net/ipv4/tcp_cubic.c
+index 2be2798..c3b01b5 100644
+--- a/net/ipv4/tcp_cubic.c
++++ b/net/ipv4/tcp_cubic.c
+@@ -190,7 +190,7 @@ static inline void bictcp_update(struct 
           */
  
  	/* change the unit from HZ to bictcp_HZ */
@@ -2406,7 +2579,7 @@
  	     << BICTCP_HZ) / HZ;
  
          if (t < ca->bic_K)		/* t - K */
-@@ -259,7 +259,7 @@
+@@ -259,7 +259,7 @@ static inline void measure_delay(struct 
  	    (s32)(tcp_time_stamp - ca->epoch_start) < HZ)
  		return;
  
@@ -2415,7 +2588,7 @@
  	if (delay == 0)
  		delay = 1;
  
-@@ -366,7 +366,7 @@
+@@ -366,7 +366,7 @@ static int __init cubictcp_register(void
  
  	beta_scale = 8*(BICTCP_BETA_SCALE+beta)/ 3 / (BICTCP_BETA_SCALE - beta);
  
@@ -2424,10 +2597,11 @@
  
  	/* calculate the "K" for (wmax-cwnd) = c/rtt * K^3
  	 *  so K = cubic_root( (wmax-cwnd)*rtt/c )
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/net/ipv6/ip6_flowlabel.c linux-2.6.18.2-rc1/net/ipv6/ip6_flowlabel.c
---- linux-2.6.18.1/net/ipv6/ip6_flowlabel.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/net/ipv6/ip6_flowlabel.c	2006-10-31 16:13:27.000000000 -0800
-@@ -587,6 +587,8 @@
+diff --git a/net/ipv6/ip6_flowlabel.c b/net/ipv6/ip6_flowlabel.c
+index 1d672b0..062e526 100644
+--- a/net/ipv6/ip6_flowlabel.c
++++ b/net/ipv6/ip6_flowlabel.c
+@@ -587,6 +587,8 @@ static struct ip6_flowlabel *ip6fl_get_n
  	while (!fl) {
  		if (++state->bucket <= FL_HASH_MASK)
  			fl = fl_ht[state->bucket];
@@ -2436,10 +2610,11 @@
  	}
  	return fl;
  }
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/net/sctp/input.c linux-2.6.18.2-rc1/net/sctp/input.c
---- linux-2.6.18.1/net/sctp/input.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/net/sctp/input.c	2006-10-31 16:13:26.000000000 -0800
-@@ -135,6 +135,9 @@
+diff --git a/net/sctp/input.c b/net/sctp/input.c
+index 42b66e7..2060bbe 100644
+--- a/net/sctp/input.c
++++ b/net/sctp/input.c
+@@ -135,6 +135,9 @@ int sctp_rcv(struct sk_buff *skb)
  
  	SCTP_INC_STATS_BH(SCTP_MIB_INSCTPPACKS);
  
@@ -2449,10 +2624,11 @@
  	sh = (struct sctphdr *) skb->h.raw;
  
  	/* Pull up the IP and SCTP headers. */
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/net/sunrpc/svcsock.c linux-2.6.18.2-rc1/net/sunrpc/svcsock.c
---- linux-2.6.18.1/net/sunrpc/svcsock.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/net/sunrpc/svcsock.c	2006-10-31 16:13:26.000000000 -0800
-@@ -902,7 +902,7 @@
+diff --git a/net/sunrpc/svcsock.c b/net/sunrpc/svcsock.c
+index d9a9573..2544acd 100644
+--- a/net/sunrpc/svcsock.c
++++ b/net/sunrpc/svcsock.c
+@@ -902,7 +902,7 @@ svc_tcp_recvfrom(struct svc_rqst *rqstp)
  		return 0;
  	}
  
@@ -2461,10 +2637,11 @@
  		svc_tcp_accept(svsk);
  		svc_sock_received(svsk);
  		return 0;
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/sound/core/hwdep.c linux-2.6.18.2-rc1/sound/core/hwdep.c
---- linux-2.6.18.1/sound/core/hwdep.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/sound/core/hwdep.c	2006-10-31 16:13:26.000000000 -0800
-@@ -158,6 +158,7 @@
+diff --git a/sound/core/hwdep.c b/sound/core/hwdep.c
+index 8bd0dcc..a562f96 100644
+--- a/sound/core/hwdep.c
++++ b/sound/core/hwdep.c
+@@ -158,6 +158,7 @@ static int snd_hwdep_release(struct inod
  {
  	int err = -ENXIO;
  	struct snd_hwdep *hw = file->private_data;
@@ -2472,7 +2649,7 @@
  	mutex_lock(&hw->open_mutex);
  	if (hw->ops.release) {
  		err = hw->ops.release(hw, file);
-@@ -167,7 +168,7 @@
+@@ -167,7 +168,7 @@ static int snd_hwdep_release(struct inod
  		hw->used--;
  	snd_card_file_remove(hw->card, file);
  	mutex_unlock(&hw->open_mutex);
@@ -2481,10 +2658,11 @@
  	return err;
  }
  
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/sound/core/info.c linux-2.6.18.2-rc1/sound/core/info.c
---- linux-2.6.18.1/sound/core/info.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/sound/core/info.c	2006-10-31 16:13:26.000000000 -0800
-@@ -119,7 +119,10 @@
+diff --git a/sound/core/info.c b/sound/core/info.c
+index 340332c..57821ce 100644
+--- a/sound/core/info.c
++++ b/sound/core/info.c
+@@ -119,7 +119,10 @@ int snd_iprintf(struct snd_info_buffer *
  	len = buffer->len - buffer->size;
  	va_start(args, fmt);
  	for (;;) {
@@ -2496,10 +2674,11 @@
  		if (res < len)
  			break;
  		err = resize_info_buffer(buffer, buffer->len + PAGE_SIZE);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/sound/core/rtctimer.c linux-2.6.18.2-rc1/sound/core/rtctimer.c
---- linux-2.6.18.1/sound/core/rtctimer.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/sound/core/rtctimer.c	2006-10-31 16:13:26.000000000 -0800
-@@ -50,7 +50,9 @@
+diff --git a/sound/core/rtctimer.c b/sound/core/rtctimer.c
+index 84704cc..15b6c8a 100644
+--- a/sound/core/rtctimer.c
++++ b/sound/core/rtctimer.c
+@@ -50,7 +50,9 @@ static int rtctimer_stop(struct snd_time
   * The hardware dependent description for this timer.
   */
  static struct snd_timer_hardware rtc_hw = {
@@ -2510,7 +2689,7 @@
  	.ticks =	100000000L,		/* FIXME: XXX */
  	.open =		rtctimer_open,
  	.close =	rtctimer_close,
-@@ -60,6 +62,7 @@
+@@ -60,6 +62,7 @@ static struct snd_timer_hardware rtc_hw 
  
  static int rtctimer_freq = RTC_FREQ;		/* frequency */
  static struct snd_timer *rtctimer;
@@ -2518,7 +2697,7 @@
  static rtc_task_t rtc_task;
  
  
-@@ -81,6 +84,7 @@
+@@ -81,6 +84,7 @@ rtctimer_close(struct snd_timer *t)
  	rtc_task_t *rtc = t->private_data;
  	if (rtc) {
  		rtc_unregister(rtc);
@@ -2526,7 +2705,7 @@
  		t->private_data = NULL;
  	}
  	return 0;
-@@ -105,12 +109,17 @@
+@@ -105,12 +109,17 @@ rtctimer_stop(struct snd_timer *timer)
  	return 0;
  }
  
@@ -2545,7 +2724,7 @@
  }
  
  
-@@ -139,9 +148,11 @@
+@@ -139,9 +148,11 @@ static int __init rtctimer_init(void)
  	timer->hw = rtc_hw;
  	timer->hw.resolution = NANO_SEC / rtctimer_freq;
  
@@ -2558,10 +2737,11 @@
  
  	err = snd_timer_global_register(timer);
  	if (err < 0) {
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/sound/pci/au88x0/au88x0.c linux-2.6.18.2-rc1/sound/pci/au88x0/au88x0.c
---- linux-2.6.18.1/sound/pci/au88x0/au88x0.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/sound/pci/au88x0/au88x0.c	2006-10-31 16:13:26.000000000 -0800
-@@ -128,6 +128,7 @@
+diff --git a/sound/pci/au88x0/au88x0.c b/sound/pci/au88x0/au88x0.c
+index ef189d7..6ed5ad5 100644
+--- a/sound/pci/au88x0/au88x0.c
++++ b/sound/pci/au88x0/au88x0.c
+@@ -128,6 +128,7 @@ static int snd_vortex_dev_free(struct sn
  	// Take down PCI interface.
  	synchronize_irq(vortex->irq);
  	free_irq(vortex->irq, vortex);
@@ -2569,10 +2749,11 @@
  	pci_release_regions(vortex->pci_dev);
  	pci_disable_device(vortex->pci_dev);
  	kfree(vortex);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/sound/pci/emu10k1/emu10k1_main.c linux-2.6.18.2-rc1/sound/pci/emu10k1/emu10k1_main.c
---- linux-2.6.18.1/sound/pci/emu10k1/emu10k1_main.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/sound/pci/emu10k1/emu10k1_main.c	2006-10-31 16:13:26.000000000 -0800
-@@ -1460,8 +1460,8 @@
+diff --git a/sound/pci/emu10k1/emu10k1_main.c b/sound/pci/emu10k1/emu10k1_main.c
+index 79f24cd..bc1dfdc 100644
+--- a/sound/pci/emu10k1/emu10k1_main.c
++++ b/sound/pci/emu10k1/emu10k1_main.c
+@@ -1460,8 +1460,8 @@ void snd_emu10k1_resume_regs(struct snd_
  
  	/* resore for spdif */
  	if (emu->audigy)
@@ -2583,10 +2764,11 @@
  
  	val = emu->saved_ptr;
  	for (reg = saved_regs; *reg != 0xff; reg++)
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/sound/ppc/keywest.c linux-2.6.18.2-rc1/sound/ppc/keywest.c
---- linux-2.6.18.1/sound/ppc/keywest.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/sound/ppc/keywest.c	2006-10-31 16:13:26.000000000 -0800
-@@ -117,6 +117,9 @@
+diff --git a/sound/ppc/keywest.c b/sound/ppc/keywest.c
+index 59482a4..272ae38 100644
+--- a/sound/ppc/keywest.c
++++ b/sound/ppc/keywest.c
+@@ -117,6 +117,9 @@ int __init snd_pmac_tumbler_post_init(vo
  {
  	int err;
  	
@@ -2596,10 +2778,11 @@
  	if ((err = keywest_ctx->init_client(keywest_ctx)) < 0) {
  		snd_printk(KERN_ERR "tumbler: %i :cannot initialize the MCS\n", err);
  		return err;
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/sound/usb/usx2y/usbusx2yaudio.c linux-2.6.18.2-rc1/sound/usb/usx2y/usbusx2yaudio.c
---- linux-2.6.18.1/sound/usb/usx2y/usbusx2yaudio.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/sound/usb/usx2y/usbusx2yaudio.c	2006-10-31 16:13:26.000000000 -0800
-@@ -322,7 +322,7 @@
+diff --git a/sound/usb/usx2y/usbusx2yaudio.c b/sound/usb/usx2y/usbusx2yaudio.c
+index f6bd0de..8d2f26d 100644
+--- a/sound/usb/usx2y/usbusx2yaudio.c
++++ b/sound/usb/usx2y/usbusx2yaudio.c
+@@ -322,7 +322,7 @@ static void i_usX2Y_urb_complete(struct 
  		usX2Y_error_urb_status(usX2Y, subs, urb);
  		return;
  	}
@@ -2608,7 +2791,7 @@
  		subs->completed_urb = urb;
  	else {
  		usX2Y_error_sequence(usX2Y, subs, urb);
-@@ -335,13 +335,9 @@
+@@ -335,13 +335,9 @@ static void i_usX2Y_urb_complete(struct 
  		    atomic_read(&capsubs->state) >= state_PREPARED &&
  		    (playbacksubs->completed_urb ||
  		     atomic_read(&playbacksubs->state) < state_PREPARED)) {
@@ -2625,7 +2808,7 @@
  				snd_printdd("\n");
  				usX2Y_clients_stop(usX2Y);
  			}
-@@ -495,7 +491,6 @@
+@@ -495,7 +491,6 @@ static int usX2Y_urbs_start(struct snd_u
  		if (subs != NULL && atomic_read(&subs->state) >= state_PREPARED)
  			goto start;
  	}
@@ -2633,7 +2816,7 @@
  
   start:
  	usX2Y_subs_startup(subs);
-@@ -516,10 +511,9 @@
+@@ -516,10 +511,9 @@ static int usX2Y_urbs_start(struct snd_u
  				snd_printk (KERN_ERR "cannot submit datapipe for urb %d, err = %d\n", i, err);
  				err = -EPIPE;
  				goto cleanup;
@@ -2646,10 +2829,11 @@
  			urb->transfer_flags = 0;
  		} else {
  			atomic_set(&subs->state, state_STARTING1);
-diff -Naur -X /home/chrisw/dontdiff linux-2.6.18.1/sound/usb/usx2y/usx2yhwdeppcm.c linux-2.6.18.2-rc1/sound/usb/usx2y/usx2yhwdeppcm.c
---- linux-2.6.18.1/sound/usb/usx2y/usx2yhwdeppcm.c	2006-10-31 21:13:30.000000000 -0800
-+++ linux-2.6.18.2-rc1/sound/usb/usx2y/usx2yhwdeppcm.c	2006-10-31 16:13:26.000000000 -0800
-@@ -243,7 +243,7 @@
+diff --git a/sound/usb/usx2y/usx2yhwdeppcm.c b/sound/usb/usx2y/usx2yhwdeppcm.c
+index 88b72b5..3bda17d 100644
+--- a/sound/usb/usx2y/usx2yhwdeppcm.c
++++ b/sound/usb/usx2y/usx2yhwdeppcm.c
+@@ -243,7 +243,7 @@ static void i_usX2Y_usbpcm_urb_complete(
  		usX2Y_error_urb_status(usX2Y, subs, urb);
  		return;
  	}
@@ -2658,7 +2842,7 @@
  		subs->completed_urb = urb;
  	else {
  		usX2Y_error_sequence(usX2Y, subs, urb);
-@@ -256,13 +256,9 @@
+@@ -256,13 +256,9 @@ static void i_usX2Y_usbpcm_urb_complete(
  	if (capsubs->completed_urb && atomic_read(&capsubs->state) >= state_PREPARED &&
  	    (NULL == capsubs2 || capsubs2->completed_urb) &&
  	    (playbacksubs->completed_urb || atomic_read(&playbacksubs->state) < state_PREPARED)) {
@@ -2675,7 +2859,7 @@
  			snd_printdd("\n");
  			usX2Y_clients_stop(usX2Y);
  		}
-@@ -433,7 +429,6 @@
+@@ -433,7 +429,6 @@ static int usX2Y_usbpcm_urbs_start(struc
  		if (subs != NULL && atomic_read(&subs->state) >= state_PREPARED)
  			goto start;
  	}
@@ -2683,7 +2867,7 @@
  
   start:
  	usX2Y_usbpcm_subs_startup(subs);
-@@ -459,7 +454,7 @@
+@@ -459,7 +454,7 @@ static int usX2Y_usbpcm_urbs_start(struc
  						goto cleanup;
  					}  else {
  						snd_printdd("%i\n", urb->start_frame);
@@ -2692,7 +2876,7 @@
  							usX2Y->wait_iso_frame = urb->start_frame;
  					}
  					urb->transfer_flags = 0;
-@@ -632,7 +627,7 @@
+@@ -632,7 +627,7 @@ static int usX2Y_pcms_lock_check(struct 
  		for (s = 0; s < 2; ++s) {
  			struct snd_pcm_substream *substream;
  			substream = pcm->streams[s].substream;
@@ -2701,3 +2885,8 @@
  				err = -EBUSY;
  		}
  	}
+-
+To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
+the body of a message to majordomo at vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+Please read the FAQ at  http://www.tux.org/lkml/



More information about the Kernel-svn-changes mailing list