## Automatically generated incremental diff
## From:   linux-2.5.68-bk12
## To:     linux-2.5.69
## Robot:  $Id: make-incremental-diff,v 1.11 2002/02/20 02:59:33 hpa Exp $

diff -urN linux-2.5.68-bk12/Makefile linux-2.5.69/Makefile
--- linux-2.5.68-bk12/Makefile	2003-05-04 18:02:59.000000000 -0700
+++ linux-2.5.69/Makefile	2003-05-04 18:03:07.000000000 -0700
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 5
-SUBLEVEL = 68
-EXTRAVERSION = -bk12
+SUBLEVEL = 69
+EXTRAVERSION =
 
 # *DOCUMENTATION*
 # To see a list of typical targets execute "make help"
diff -urN linux-2.5.68-bk12/arch/sparc64/defconfig linux-2.5.69/arch/sparc64/defconfig
--- linux-2.5.68-bk12/arch/sparc64/defconfig	2003-05-04 18:02:59.000000000 -0700
+++ linux-2.5.69/arch/sparc64/defconfig	2003-05-04 18:03:07.000000000 -0700
@@ -1146,7 +1146,7 @@
 #
 CONFIG_BT_HCIUSB=m
 CONFIG_BT_USB_SCO=y
-CONFIG_BT_USB_ZERO_PACKET=y
+# CONFIG_BT_USB_ZERO_PACKET is not set
 CONFIG_BT_HCIUART=m
 CONFIG_BT_HCIUART_H4=y
 CONFIG_BT_HCIUART_BCSP=y
diff -urN linux-2.5.68-bk12/arch/sparc64/oprofile/init.c linux-2.5.69/arch/sparc64/oprofile/init.c
--- linux-2.5.68-bk12/arch/sparc64/oprofile/init.c	2003-05-04 18:02:59.000000000 -0700
+++ linux-2.5.69/arch/sparc64/oprofile/init.c	2003-05-04 18:03:07.000000000 -0700
@@ -9,6 +9,7 @@
 
 #include <linux/kernel.h>
 #include <linux/oprofile.h>
+#include <linux/errno.h>
 #include <linux/init.h>
  
 extern void timer_init(struct oprofile_operations ** ops);
diff -urN linux-2.5.68-bk12/drivers/block/floppy.c linux-2.5.69/drivers/block/floppy.c
--- linux-2.5.68-bk12/drivers/block/floppy.c	2003-05-04 18:02:59.000000000 -0700
+++ linux-2.5.69/drivers/block/floppy.c	2003-05-04 18:03:08.000000000 -0700
@@ -2293,7 +2293,12 @@
 
 static void floppy_end_request(struct request *req, int uptodate)
 {
-	if (end_that_request_first(req, uptodate, current_count_sectors))
+	unsigned int nr_sectors = current_count_sectors;
+
+	/* current_count_sectors can be zero if transfer failed */
+	if (!uptodate)
+		nr_sectors = req->current_nr_sectors;
+	if (end_that_request_first(req, uptodate, nr_sectors))
 		return;
 	add_disk_randomness(req->rq_disk);
 	floppy_off((long)req->rq_disk->private_data);
@@ -3768,7 +3773,7 @@
 	if (UFDCS->rawcmd == 1)
 		UFDCS->rawcmd = 2;
 
-	if (!filp->f_flags & O_NDELAY) {
+	if (!(filp->f_flags & O_NDELAY)) {
 		if (filp->f_mode & 3) {
 			UDRS->last_checked = 0;
 			check_disk_change(inode->i_bdev);
diff -urN linux-2.5.68-bk12/drivers/block/genhd.c linux-2.5.69/drivers/block/genhd.c
--- linux-2.5.68-bk12/drivers/block/genhd.c	2003-05-04 18:02:59.000000000 -0700
+++ linux-2.5.69/drivers/block/genhd.c	2003-05-04 18:03:08.000000000 -0700
@@ -52,30 +52,6 @@
 	return major_to_index(MAJOR(dev));
 }
 
-/*
- * __bdevname may be called from interrupts, and must be atomic
- */
-const char *__bdevname(dev_t dev, char *buffer)
-{
-	char *name = "unknown-block";
-	unsigned int major = MAJOR(dev);
-	unsigned int minor = MINOR(dev);
-	int index = major_to_index(major);
-	struct blk_major_name *n;
-	unsigned long flags;
-
-	spin_lock_irqsave(&major_names_lock, flags);
-	for (n = major_names[index]; n; n = n->next)
-		if (n->major == major)
-			break;
-	if (n)
-		name = &(n->name[0]);
-	snprintf(buffer, BDEVNAME_SIZE, "%s(%u,%u)", name, major, minor);
-	spin_unlock_irqrestore(&major_names_lock, flags);
-
-	return buffer;
-}
-
 /* get block device names in somewhat random order */
 int get_blkdev_list(char *p)
 {
diff -urN linux-2.5.68-bk12/drivers/ieee1394/amdtp.c linux-2.5.69/drivers/ieee1394/amdtp.c
--- linux-2.5.68-bk12/drivers/ieee1394/amdtp.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/amdtp.c	2003-05-04 18:03:09.000000000 -0700
@@ -835,8 +835,8 @@
 		max_nevents = fraction_ceil(&s->samples_per_cycle);
 
 	max_packet_size = max_nevents * s->dimension * 4 + 8;
-	s->packet_pool = hpsb_pci_pool_create("packet pool", s->host->ohci->dev,
-					 max_packet_size, 0, 0 ,SLAB_KERNEL);
+	s->packet_pool = pci_pool_create("packet pool", s->host->ohci->dev,
+					 max_packet_size, 0, 0);
 
 	if (s->packet_pool == NULL)
 		return -1;
@@ -1021,9 +1021,9 @@
 		return NULL;
 	}
 
-	s->descriptor_pool = hpsb_pci_pool_create("descriptor pool", host->ohci->dev,
+	s->descriptor_pool = pci_pool_create("descriptor pool", host->ohci->dev,
 					     sizeof(struct descriptor_block),
-					     16, 0 ,SLAB_KERNEL);
+					     16, 0);
 
 	if (s->descriptor_pool == NULL) {
 		kfree(s->input);
diff -urN linux-2.5.68-bk12/drivers/ieee1394/dv1394.c linux-2.5.69/drivers/ieee1394/dv1394.c
--- linux-2.5.68-bk12/drivers/ieee1394/dv1394.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/dv1394.c	2003-05-04 18:03:09.000000000 -0700
@@ -115,7 +115,7 @@
 
 #include "ieee1394.h"
 #include "ieee1394_types.h"
-#include "ieee1394_hotplug.h"
+#include "nodemgr.h"
 #include "hosts.h"
 #include "ieee1394_core.h"
 #include "highlevel.h"	
diff -urN linux-2.5.68-bk12/drivers/ieee1394/eth1394.c linux-2.5.69/drivers/ieee1394/eth1394.c
--- linux-2.5.68-bk12/drivers/ieee1394/eth1394.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/eth1394.c	2003-05-04 18:03:09.000000000 -0700
@@ -56,6 +56,7 @@
 #include <linux/tcp.h>
 #include <linux/skbuff.h>
 #include <linux/bitops.h>
+#include <linux/workqueue.h>
 #include <asm/delay.h>
 #include <asm/semaphore.h>
 #include <net/arp.h>
@@ -78,7 +79,7 @@
 	printk(KERN_ERR fmt, ## args)
 
 static char version[] __devinitdata =
-	"$Rev: 906 $ Ben Collins <bcollins@debian.org>";
+	"$Rev: 918 $ Ben Collins <bcollins@debian.org>";
 
 /* Our ieee1394 highlevel driver */
 #define ETHER1394_DRIVER_NAME "ether1394"
@@ -853,8 +854,8 @@
 	ptask->dest_node = dest_node;
 	/* TODO: When 2.4 is out of the way, give each of our ethernet
 	 * dev's a workqueue to handle these.  */
-	HPSB_INIT_WORK(&ptask->tq, hpsb_write_sched, ptask);
-	hpsb_schedule_work(&ptask->tq);
+	INIT_WORK(&ptask->tq, hpsb_write_sched, ptask);
+	schedule_work(&ptask->tq);
 
 	return 0;
 fail:
diff -urN linux-2.5.68-bk12/drivers/ieee1394/eth1394.h linux-2.5.69/drivers/ieee1394/eth1394.h
--- linux-2.5.68-bk12/drivers/ieee1394/eth1394.h	2003-04-19 19:50:45.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/eth1394.h	2003-05-04 18:03:09.000000000 -0700
@@ -67,7 +67,7 @@
 	struct sk_buff *skb;	/* Socket buffer we are sending */
 	nodeid_t dest_node;	/* Destination of the packet */
 	u64 addr;		/* Address */
-	struct hpsb_queue_struct tq;	/* The task */
+	struct work_struct tq;	/* The task */
 	eth1394_tx_type tx_type;	/* Send data via GASP or Write Req. */
 };
 
diff -urN linux-2.5.68-bk12/drivers/ieee1394/hosts.c linux-2.5.69/drivers/ieee1394/hosts.c
--- linux-2.5.68-bk12/drivers/ieee1394/hosts.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/hosts.c	2003-05-04 18:03:09.000000000 -0700
@@ -16,6 +16,7 @@
 #include <linux/list.h>
 #include <linux/init.h>
 #include <linux/slab.h>
+#include <linux/workqueue.h>
 
 #include "ieee1394_types.h"
 #include "hosts.h"
@@ -140,7 +141,7 @@
 
 	atomic_set(&h->generation, 0);
 
-	HPSB_INIT_WORK(&h->timeout_tq, (void (*)(void*))abort_timedouts, h);
+	INIT_WORK(&h->timeout_tq, (void (*)(void*))abort_timedouts, h);
 
         h->topology_map = h->csr.topology_map + 3;
         h->speed_map = (u8 *)(h->csr.speed_map + 2);
diff -urN linux-2.5.68-bk12/drivers/ieee1394/hosts.h linux-2.5.69/drivers/ieee1394/hosts.h
--- linux-2.5.68-bk12/drivers/ieee1394/hosts.h	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/hosts.h	2003-05-04 18:03:09.000000000 -0700
@@ -4,6 +4,7 @@
 #include <linux/device.h>
 #include <linux/wait.h>
 #include <linux/list.h>
+#include <linux/workqueue.h>
 #include <asm/semaphore.h>
 
 #include "ieee1394_types.h"
@@ -32,7 +33,7 @@
 
         struct list_head pending_packets;
         spinlock_t pending_pkt_lock;
-        struct hpsb_queue_struct timeout_tq;
+        struct work_struct timeout_tq;
 
         unsigned char iso_listen_count[64];
 
diff -urN linux-2.5.68-bk12/drivers/ieee1394/ieee1394_core.c linux-2.5.69/drivers/ieee1394/ieee1394_core.c
--- linux-2.5.68-bk12/drivers/ieee1394/ieee1394_core.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/ieee1394_core.c	2003-05-04 18:03:09.000000000 -0700
@@ -31,6 +31,8 @@
 #include <linux/moduleparam.h>
 #include <linux/proc_fs.h>
 #include <linux/bitops.h>
+#include <linux/workqueue.h>
+#include <linux/kdev_t.h>
 #include <asm/byteorder.h>
 #include <asm/semaphore.h>
 
@@ -42,7 +44,6 @@
 #include "ieee1394_transactions.h"
 #include "csr.h"
 #include "nodemgr.h"
-#include "ieee1394_hotplug.h"
 #include "dma.h"
 #include "iso.h"
 
@@ -437,7 +438,7 @@
         spin_unlock_irqrestore(&host->pending_pkt_lock, flags);
 
         up(&packet->state_change);
-        hpsb_schedule_work(&host->timeout_tq);
+        schedule_work(&host->timeout_tq);
 }
 
 /**
@@ -985,7 +986,7 @@
         }
 
         if (!list_empty(&host->pending_packets))
-		hpsb_schedule_work(&host->timeout_tq);
+		schedule_work(&host->timeout_tq);
 
         spin_unlock_irqrestore(&host->pending_pkt_lock, flags);
 
diff -urN linux-2.5.68-bk12/drivers/ieee1394/ieee1394_hotplug.h linux-2.5.69/drivers/ieee1394/ieee1394_hotplug.h
--- linux-2.5.68-bk12/drivers/ieee1394/ieee1394_hotplug.h	2003-04-19 19:51:13.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/ieee1394_hotplug.h	2003-05-04 18:03:09.000000000 -0700
@@ -1,24 +1,24 @@
 #ifndef _IEEE1394_HOTPLUG_H
 #define _IEEE1394_HOTPLUG_H
 
-#include <linux/device.h>
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <linux/mod_devicetable.h>
+
+/* Unit spec id and sw version entry for some protocols */
+#define AVC_UNIT_SPEC_ID_ENTRY		0x0000A02D
+#define AVC_SW_VERSION_ENTRY		0x00010001
+#define CAMERA_UNIT_SPEC_ID_ENTRY	0x0000A02D
+#define CAMERA_SW_VERSION_ENTRY		0x00000100
 
-#include "ieee1394_core.h"
-#include "nodemgr.h"
+/* Check to make sure this all isn't already defined */
+#ifndef IEEE1394_MATCH_VENDOR_ID
 
 #define IEEE1394_MATCH_VENDOR_ID	0x0001
 #define IEEE1394_MATCH_MODEL_ID		0x0002
 #define IEEE1394_MATCH_SPECIFIER_ID	0x0004
 #define IEEE1394_MATCH_VERSION		0x0008
 
-/*
- * Unit spec id and sw version entry for some protocols
- */
-#define AVC_UNIT_SPEC_ID_ENTRY					0x0000A02D
-#define AVC_SW_VERSION_ENTRY					0x00010001
-#define CAMERA_UNIT_SPEC_ID_ENTRY				0x0000A02D
-#define CAMERA_SW_VERSION_ENTRY					0x00000100
-
 struct ieee1394_device_id {
 	u32 match_flags;
 	u32 vendor_id;
@@ -28,33 +28,6 @@
 	void *driver_data;
 };
 
-struct hpsb_protocol_driver {
-	/* The name of the driver, e.g. SBP2 or IP1394 */
-	const char *name;
-
-	/* 
-	 * The device id table describing the protocols and/or devices
-	 * supported by this driver.  This is used by the nodemgr to
-	 * decide if a driver could support a given node, but the
-	 * probe function below can implement further protocol
-	 * dependent or vendor dependent checking.
-	 */
-	struct ieee1394_device_id *id_table;
-
-	/* 
-	 * The update function is called when the node has just
-	 * survived a bus reset, i.e. it is still present on the bus.
-	 * However, it may be necessary to reestablish the connection
-	 * or login into the node again, depending on the protocol.
-	 */
-	void (*update)(struct unit_directory *ud);
-
-
-	/* Our LDM structure */
-	struct device_driver driver;
-};
-
-int hpsb_register_protocol(struct hpsb_protocol_driver *driver);
-void hpsb_unregister_protocol(struct hpsb_protocol_driver *driver);
+#endif
 
 #endif /* _IEEE1394_HOTPLUG_H */
diff -urN linux-2.5.68-bk12/drivers/ieee1394/ieee1394_types.h linux-2.5.69/drivers/ieee1394/ieee1394_types.h
--- linux-2.5.68-bk12/drivers/ieee1394/ieee1394_types.h	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/ieee1394_types.h	2003-05-04 18:03:09.000000000 -0700
@@ -18,58 +18,12 @@
 #define minor(dev) MINOR(dev)
 #endif
 
-#ifndef __devexit_p
-#define __devexit_p(x) x
-#endif
-
 #include <linux/spinlock.h>
 
-#ifndef list_for_each_safe
-#define list_for_each_safe(pos, n, head) \
-	for (pos = (head)->next, n = pos->next; pos != (head); \
-		pos = n, n = pos->next)
-
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,5)
-#define pte_offset_kernel pte_offset
-#endif
-
 #ifndef MIN
 #define MIN(a,b) ((a) < (b) ? (a) : (b))
 #endif
 
-#ifndef MAX
-#define MAX(a,b) ((a) > (b) ? (a) : (b))
-#endif
-
-
-/* Compatibility for task/work queues */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,42)
-/* Use task queue */
-#include <linux/tqueue.h>
-#define hpsb_queue_struct tq_struct
-#define hpsb_queue_list list
-#define hpsb_schedule_work(x) schedule_task(x)
-#define HPSB_INIT_WORK(x,y,z) INIT_TQUEUE(x,y,z)
-#define HPSB_PREPARE_WORK(x,y,z) PREPARE_TQUEUE(x,y,z)
-#else
-/* Use work queue */
-#include <linux/workqueue.h>
-#define hpsb_queue_struct work_struct
-#define hpsb_queue_list entry
-#define hpsb_schedule_work(x) schedule_work(x)
-#define HPSB_INIT_WORK(x,y,z) INIT_WORK(x,y,z)
-#define HPSB_PREPARE_WORK(x,y,z) PREPARE_WORK(x,y,z)
-#endif
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,44)
-/* pci_pool_create changed. does not take the flags arg any longer */
-#define hpsb_pci_pool_create(a,b,c,d,e,f) pci_pool_create(a,b,c,d,e,f)
-#else
-#define hpsb_pci_pool_create(a,b,c,d,e,f) pci_pool_create(a,b,c,d,e)
-#endif
-
 /* Transaction Label handling */
 struct hpsb_tlabel_pool {
 	DECLARE_BITMAP(pool, 64);
diff -urN linux-2.5.68-bk12/drivers/ieee1394/nodemgr.c linux-2.5.69/drivers/ieee1394/nodemgr.c
--- linux-2.5.68-bk12/drivers/ieee1394/nodemgr.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/nodemgr.c	2003-05-04 18:03:09.000000000 -0700
@@ -22,9 +22,9 @@
 
 #include "ieee1394_types.h"
 #include "ieee1394.h"
+#include "nodemgr.h"
 #include "hosts.h"
 #include "ieee1394_transactions.h"
-#include "ieee1394_hotplug.h"
 #include "highlevel.h"
 #include "csr.h"
 #include "nodemgr.h"
diff -urN linux-2.5.68-bk12/drivers/ieee1394/nodemgr.h linux-2.5.69/drivers/ieee1394/nodemgr.h
--- linux-2.5.68-bk12/drivers/ieee1394/nodemgr.h	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/nodemgr.h	2003-05-04 18:03:09.000000000 -0700
@@ -21,6 +21,8 @@
 #define _IEEE1394_NODEMGR_H
 
 #include <linux/device.h>
+#include "ieee1394_core.h"
+#include "ieee1394_hotplug.h"
 
 #define CONFIG_ROM_BUS_INFO_LENGTH(q)		((q) >> 24)
 #define CONFIG_ROM_BUS_CRC_LENGTH(q)		(((q) >> 16) & 0xff)
@@ -142,6 +144,34 @@
 	quadlet_t quadlets[0];
 };
 
+struct hpsb_protocol_driver {
+	/* The name of the driver, e.g. SBP2 or IP1394 */
+	const char *name;
+
+	/*
+	 * The device id table describing the protocols and/or devices
+	 * supported by this driver.  This is used by the nodemgr to
+	 * decide if a driver could support a given node, but the
+	 * probe function below can implement further protocol
+	 * dependent or vendor dependent checking.
+	 */
+	struct ieee1394_device_id *id_table;
+
+	/*
+	 * The update function is called when the node has just
+	 * survived a bus reset, i.e. it is still present on the bus.
+	 * However, it may be necessary to reestablish the connection
+	 * or login into the node again, depending on the protocol.
+	 */
+	void (*update)(struct unit_directory *ud);
+
+	/* Our LDM structure */
+	struct device_driver driver;
+};
+
+int hpsb_register_protocol(struct hpsb_protocol_driver *driver);
+void hpsb_unregister_protocol(struct hpsb_protocol_driver *driver);
+
 static inline int hpsb_node_entry_valid(struct node_entry *ne)
 {
 	return ne->generation == get_hpsb_generation(ne->host);
diff -urN linux-2.5.68-bk12/drivers/ieee1394/ohci1394.c linux-2.5.69/drivers/ieee1394/ohci1394.c
--- linux-2.5.68-bk12/drivers/ieee1394/ohci1394.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/ohci1394.c	2003-05-04 18:03:09.000000000 -0700
@@ -164,7 +164,7 @@
 printk(level "%s_%d: " fmt "\n" , OHCI1394_DRIVER_NAME, card , ## args)
 
 static char version[] __devinitdata =
-	"$Rev: 908 $ Ben Collins <bcollins@debian.org>";
+	"$Rev: 921 $ Ben Collins <bcollins@debian.org>";
 
 /* Module Parameters */
 static int phys_dma = 1;
@@ -623,8 +623,10 @@
 	u32 cycleTimer;
 	int idx = d->prg_ind;
 
-	DBGMSG(ohci->id, "Inserting packet for node %d, tlabel=%d, tcode=0x%x, speed=%d",
-			packet->node_id, packet->tlabel, packet->tcode, packet->speed_code);
+	DBGMSG(ohci->id, "Inserting packet for node " NODE_BUS_FMT
+	       ", tlabel=%d, tcode=0x%x, speed=%d",
+	       NODE_BUS_ARGS(packet->node_id), packet->tlabel,
+	       packet->tcode, packet->speed_code);
 
 	d->prg_cpu[idx]->begin.address = 0;
 	d->prg_cpu[idx]->begin.branchAddress = 0;
@@ -1505,6 +1507,7 @@
 	   so disable branch and enable interrupt */
 	next->branchAddress = 0;
 	next->control |= cpu_to_le32(3 << 20);
+	next->status = cpu_to_le32(recv->buf_stride);
 
 	/* link prev to next */	
 	prev->branchAddress = cpu_to_le32(dma_prog_region_offset_to_bus(&recv->prog,
@@ -2691,19 +2694,25 @@
 
 #ifdef OHCI1394_DEBUG
 		if (datasize)
-			DBGMSG(ohci->id,
-			       "Packet sent to node %d tcode=0x%X tLabel="
-			       "0x%02X ack=0x%X spd=%d dataLength=%d ctx=%d", 
-                                (le32_to_cpu(d->prg_cpu[d->sent_ind]->data[1])
-                                        >>16)&0x3f,
-                                (le32_to_cpu(d->prg_cpu[d->sent_ind]->data[0])
-                                        >>4)&0xf,
-                                (le32_to_cpu(d->prg_cpu[d->sent_ind]->data[0])
-                                        >>10)&0x3f,
-                                status&0x1f, (status>>5)&0x3, 
-                                le32_to_cpu(d->prg_cpu[d->sent_ind]->data[3])
-                                        >>16,
-                                d->ctx);
+			if(((le32_to_cpu(d->prg_cpu[d->sent_ind]->data[0])>>4)&0xf) == 0xa)
+				DBGMSG(ohci->id,
+				       "Stream packet sent to channel %d tcode=0x%X "
+				       "ack=0x%X spd=%d dataLength=%d ctx=%d", 
+				       (le32_to_cpu(d->prg_cpu[d->sent_ind]->data[0])>>8)&0x3f,
+				       (le32_to_cpu(d->prg_cpu[d->sent_ind]->data[0])>>4)&0xf,
+				       status&0x1f, (status>>5)&0x3, 
+				       le32_to_cpu(d->prg_cpu[d->sent_ind]->data[1])>>16,
+				       d->ctx);
+			else
+				DBGMSG(ohci->id,
+				       "Packet sent to node %d tcode=0x%X tLabel="
+				       "0x%02X ack=0x%X spd=%d dataLength=%d ctx=%d", 
+				       (le32_to_cpu(d->prg_cpu[d->sent_ind]->data[1])>>16)&0x3f,
+				       (le32_to_cpu(d->prg_cpu[d->sent_ind]->data[0])>>4)&0xf,
+				       (le32_to_cpu(d->prg_cpu[d->sent_ind]->data[0])>>10)&0x3f,
+				       status&0x1f, (status>>5)&0x3,
+				       le32_to_cpu(d->prg_cpu[d->sent_ind]->data[3])>>16,
+				       d->ctx);
 		else 
 			DBGMSG(ohci->id,
 			       "Packet sent to node %d tcode=0x%X tLabel="
@@ -2888,8 +2897,8 @@
 		return -ENOMEM;
 	}
 
-	d->prg_pool = hpsb_pci_pool_create("ohci1394 rcv prg", ohci->dev,
-				sizeof(struct dma_cmd), 4, 0, SLAB_KERNEL);
+	d->prg_pool = pci_pool_create("ohci1394 rcv prg", ohci->dev,
+				sizeof(struct dma_cmd), 4, 0);
 	OHCI_DMA_ALLOC("dma_rcv prg pool");
 
 	for (i=0; i<d->num_desc; i++) {
@@ -3016,8 +3025,8 @@
 	memset(d->prg_cpu, 0, d->num_desc * sizeof(struct at_dma_prg*));
 	memset(d->prg_bus, 0, d->num_desc * sizeof(dma_addr_t));
 
-	d->prg_pool = hpsb_pci_pool_create("ohci1394 trm prg", ohci->dev,
-				sizeof(struct at_dma_prg), 4, 0, SLAB_KERNEL);
+	d->prg_pool = pci_pool_create("ohci1394 trm prg", ohci->dev,
+				sizeof(struct at_dma_prg), 4, 0);
 	OHCI_DMA_ALLOC("dma_rcv prg pool");
 
 	for (i = 0; i < d->num_desc; i++) {
diff -urN linux-2.5.68-bk12/drivers/ieee1394/pcilynx.c linux-2.5.69/drivers/ieee1394/pcilynx.c
--- linux-2.5.68-bk12/drivers/ieee1394/pcilynx.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/pcilynx.c	2003-05-04 18:03:09.000000000 -0700
@@ -42,6 +42,7 @@
 #include <linux/pci.h>
 #include <linux/fs.h>
 #include <linux/poll.h>
+#include <linux/kdev_t.h>
 #include <asm/byteorder.h>
 #include <asm/atomic.h>
 #include <asm/io.h>
diff -urN linux-2.5.68-bk12/drivers/ieee1394/raw1394.c linux-2.5.69/drivers/ieee1394/raw1394.c
--- linux-2.5.68-bk12/drivers/ieee1394/raw1394.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/raw1394.c	2003-05-04 18:03:09.000000000 -0700
@@ -45,11 +45,11 @@
 #include "ieee1394.h"
 #include "ieee1394_types.h"
 #include "ieee1394_core.h"
+#include "nodemgr.h"
 #include "hosts.h"
 #include "highlevel.h"
 #include "iso.h"
 #include "ieee1394_transactions.h"
-#include "ieee1394_hotplug.h"
 #include "raw1394.h"
 #include "raw1394-private.h"
 
diff -urN linux-2.5.68-bk12/drivers/ieee1394/sbp2.c linux-2.5.69/drivers/ieee1394/sbp2.c
--- linux-2.5.68-bk12/drivers/ieee1394/sbp2.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/sbp2.c	2003-05-04 18:03:09.000000000 -0700
@@ -283,22 +283,19 @@
 
 #include "../scsi/scsi.h"
 #include "../scsi/hosts.h"
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,47)
-#include "../scsi/sd.h"
-#endif
 
 #include "ieee1394.h"
 #include "ieee1394_types.h"
 #include "ieee1394_core.h"
+#include "nodemgr.h"
 #include "hosts.h"
 #include "nodemgr.h"
 #include "highlevel.h"
 #include "ieee1394_transactions.h"
-#include "ieee1394_hotplug.h"
 #include "sbp2.h"
 
 static char version[] __devinitdata =
-	"$Rev: 912 $ James Goodwin <jamesg@filanet.com>";
+	"$Rev: 919 $ James Goodwin <jamesg@filanet.com>";
 
 /*
  * Module load parameter definitions
@@ -2914,15 +2911,9 @@
 	/*
 	 * Tell scsi stack that we're done with this command
 	 */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-	spin_lock_irqsave(&io_request_lock,flags);
-	done (SCpnt);
-	spin_unlock_irqrestore(&io_request_lock,flags);
-#else
 	spin_lock_irqsave(scsi_id->hi->scsi_host->host_lock,flags);
 	done (SCpnt);
 	spin_unlock_irqrestore(scsi_id->hi->scsi_host->host_lock,flags);
-#endif
 
 	return;
 }
diff -urN linux-2.5.68-bk12/drivers/ieee1394/video1394.c linux-2.5.69/drivers/ieee1394/video1394.c
--- linux-2.5.68-bk12/drivers/ieee1394/video1394.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/ieee1394/video1394.c	2003-05-04 18:03:09.000000000 -0700
@@ -47,11 +47,12 @@
 
 #include "ieee1394.h"
 #include "ieee1394_types.h"
-#include "ieee1394_hotplug.h"
+#include "nodemgr.h"
 #include "hosts.h"
 #include "ieee1394_core.h"
 #include "highlevel.h"
 #include "video1394.h"
+#include "nodemgr.h"
 #include "dma.h"
 
 #include "ohci1394.h"
@@ -991,6 +992,8 @@
 		struct video1394_queue_variable qv;
 		struct dma_iso_ctx *d;
 
+		qv.packet_sizes = NULL;
+
 		if(copy_from_user(&v, (void *)arg, sizeof(v)))
 			return -EFAULT;
 
@@ -1003,12 +1006,22 @@
 		}
 		
 		if (d->flags & VIDEO1394_VARIABLE_PACKET_SIZE) {
+			unsigned int *psizes;
+			int buf_size = d->nb_cmd * sizeof(unsigned int);
+
 			if (copy_from_user(&qv, (void *)arg, sizeof(qv))) 
 				return -EFAULT;
-			if (!access_ok(VERIFY_READ, qv.packet_sizes, 
-				       d->nb_cmd * sizeof(unsigned int))) {
+
+			psizes = kmalloc(buf_size, GFP_KERNEL);
+			if (!psizes)
+				return -ENOMEM;
+
+			if (copy_from_user(psizes, qv.packet_sizes, buf_size)) {
+				kfree(psizes);
 				return -EFAULT;
 			}
+
+			qv.packet_sizes = psizes;
 		}
 
 		spin_lock_irqsave(&d->lock,flags);
@@ -1017,6 +1030,8 @@
 			PRINT(KERN_ERR, ohci->id, 
 			      "Buffer %d is already used",v.buffer);
 			spin_unlock_irqrestore(&d->lock,flags);
+			if (qv.packet_sizes)
+				kfree(qv.packet_sizes);
 			return -EFAULT;
 		}
 		
@@ -1070,6 +1085,10 @@
 				reg_write(ohci, d->ctrlSet, 0x1000);
 			}
 		}
+
+		if (qv.packet_sizes)
+			kfree(qv.packet_sizes);
+
 		return 0;
 		
 	}
diff -urN linux-2.5.68-bk12/drivers/input/serio/serport.c linux-2.5.69/drivers/input/serio/serport.c
--- linux-2.5.68-bk12/drivers/input/serio/serport.c	2003-05-04 18:03:00.000000000 -0700
+++ linux-2.5.69/drivers/input/serio/serport.c	2003-05-04 18:03:09.000000000 -0700
@@ -70,13 +70,9 @@
 	struct serport *serport;
 	char name[64];
 
-	MOD_INC_USE_COUNT;
-
-	if (!(serport = kmalloc(sizeof(struct serport), GFP_KERNEL))) {
-		MOD_DEC_USE_COUNT;
+	serport = kmalloc(sizeof(struct serport), GFP_KERNEL);
+	if (unlikely(!serport))
 		return -ENOMEM;
-	}
-
 	memset(serport, 0, sizeof(struct serport));
 
 	set_bit(TTY_DO_WRITE_WAKEUP, &tty->flags);
@@ -107,7 +103,6 @@
 {
 	struct serport *serport = (struct serport*) tty->disc_data;
 	kfree(serport);
-	MOD_DEC_USE_COUNT;
 }
 
 /*
@@ -188,6 +183,7 @@
  */
 
 static struct tty_ldisc serport_ldisc = {
+	.owner =	THIS_MODULE,
 	.name =		"input",
 	.open =		serport_ldisc_open,
 	.close =	serport_ldisc_close,
@@ -202,7 +198,7 @@
  * The functions for insering/removing us as a module.
  */
 
-int __init serport_init(void)
+static int __init serport_init(void)
 {
         if (tty_register_ldisc(N_MOUSE, &serport_ldisc)) {
                 printk(KERN_ERR "serport.c: Error registering line discipline.\n");
@@ -212,7 +208,7 @@
 	return  0;
 }
 
-void __exit serport_exit(void)
+static void __exit serport_exit(void)
 {
 	tty_register_ldisc(N_MOUSE, NULL);
 }
diff -urN linux-2.5.68-bk12/drivers/net/bsd_comp.c linux-2.5.69/drivers/net/bsd_comp.c
--- linux-2.5.68-bk12/drivers/net/bsd_comp.c	2003-04-19 19:49:26.000000000 -0700
+++ linux-2.5.69/drivers/net/bsd_comp.c	2003-05-04 18:03:09.000000000 -0700
@@ -348,7 +348,6 @@
  * Finally release the structure itself.
  */
 	kfree (db);
-	MOD_DEC_USE_COUNT;
       }
   }
 
@@ -422,7 +421,6 @@
 	return NULL;
       }
 
-    MOD_INC_USE_COUNT;
 /*
  * If this is the compression buffer then there is no length data.
  */
@@ -1141,20 +1139,21 @@
  *************************************************************/
 
 static struct compressor ppp_bsd_compress = {
-    CI_BSD_COMPRESS,		/* compress_proto */
-    bsd_comp_alloc,		/* comp_alloc */
-    bsd_free,			/* comp_free */
-    bsd_comp_init,		/* comp_init */
-    bsd_reset,			/* comp_reset */
-    bsd_compress,		/* compress */
-    bsd_comp_stats,		/* comp_stat */
-    bsd_decomp_alloc,		/* decomp_alloc */
-    bsd_free,			/* decomp_free */
-    bsd_decomp_init,		/* decomp_init */
-    bsd_reset,			/* decomp_reset */
-    bsd_decompress,		/* decompress */
-    bsd_incomp,			/* incomp */
-    bsd_comp_stats		/* decomp_stat */
+	.compress_proto =	CI_BSD_COMPRESS,
+	.comp_alloc =		bsd_comp_alloc,
+	.comp_free =		bsd_free,
+	.comp_init =		bsd_comp_init,
+	.comp_reset =		bsd_reset,
+	.compress =		bsd_compress,
+	.comp_stat =		bsd_comp_stats,
+	.decomp_alloc =		bsd_decomp_alloc,
+	.decomp_free =		bsd_free,
+	.decomp_init =		bsd_decomp_init,
+	.decomp_reset =		bsd_reset,
+	.decompress =		bsd_decompress,
+	.incomp =		bsd_incomp,
+	.decomp_stat =		bsd_comp_stats,
+	.owner =		THIS_MODULE
 };
 
 /*************************************************************
diff -urN linux-2.5.68-bk12/drivers/net/ppp_deflate.c linux-2.5.69/drivers/net/ppp_deflate.c
--- linux-2.5.68-bk12/drivers/net/ppp_deflate.c	2003-04-19 19:51:07.000000000 -0700
+++ linux-2.5.69/drivers/net/ppp_deflate.c	2003-05-04 18:03:09.000000000 -0700
@@ -541,37 +541,39 @@
  * Procedures exported to if_ppp.c.
  */
 struct compressor ppp_deflate = {
-	CI_DEFLATE,		/* compress_proto */
-	z_comp_alloc,		/* comp_alloc */
-	z_comp_free,		/* comp_free */
-	z_comp_init,		/* comp_init */
-	z_comp_reset,		/* comp_reset */
-	z_compress,		/* compress */
-	z_comp_stats,		/* comp_stat */
-	z_decomp_alloc,		/* decomp_alloc */
-	z_decomp_free,		/* decomp_free */
-	z_decomp_init,		/* decomp_init */
-	z_decomp_reset,		/* decomp_reset */
-	z_decompress,		/* decompress */
-	z_incomp,		/* incomp */
-	z_comp_stats,		/* decomp_stat */
+	.compress_proto =	CI_DEFLATE,
+	.comp_alloc =		z_comp_alloc,
+	.comp_free =		z_comp_free,
+	.comp_init =		z_comp_init,
+	.comp_reset =		z_comp_reset,
+	.compress =		z_compress,
+	.comp_stat =		z_comp_stats,
+	.decomp_alloc =		z_decomp_alloc,
+	.decomp_free =		z_decomp_free,
+	.decomp_init =		z_decomp_init,
+	.decomp_reset =		z_decomp_reset,
+	.decompress =		z_decompress,
+	.incomp =		z_incomp,
+	.decomp_stat =		z_comp_stats,
+	.owner =		THIS_MODULE
 };
 
 struct compressor ppp_deflate_draft = {
-	CI_DEFLATE_DRAFT,	/* compress_proto */
-	z_comp_alloc,		/* comp_alloc */
-	z_comp_free,		/* comp_free */
-	z_comp_init,		/* comp_init */
-	z_comp_reset,		/* comp_reset */
-	z_compress,		/* compress */
-	z_comp_stats,		/* comp_stat */
-	z_decomp_alloc,		/* decomp_alloc */
-	z_decomp_free,		/* decomp_free */
-	z_decomp_init,		/* decomp_init */
-	z_decomp_reset,		/* decomp_reset */
-	z_decompress,		/* decompress */
-	z_incomp,		/* incomp */
-	z_comp_stats,		/* decomp_stat */
+	.compress_proto =	CI_DEFLATE_DRAFT,
+	.comp_alloc =		z_comp_alloc,
+	.comp_free =		z_comp_free,
+	.comp_init =		z_comp_init,
+	.comp_reset =		z_comp_reset,
+	.compress =		z_compress,
+	.comp_stat =		z_comp_stats,
+	.decomp_alloc =		z_decomp_alloc,
+	.decomp_free =		z_decomp_free,
+	.decomp_init =		z_decomp_init,
+	.decomp_reset =		z_decomp_reset,
+	.decompress =		z_decompress,
+	.incomp =		z_incomp,
+	.decomp_stat =		z_comp_stats,
+	.owner =		THIS_MODULE
 };
 
 int __init deflate_init(void)
diff -urN linux-2.5.68-bk12/drivers/net/ppp_generic.c linux-2.5.69/drivers/net/ppp_generic.c
--- linux-2.5.68-bk12/drivers/net/ppp_generic.c	2003-04-19 19:51:08.000000000 -0700
+++ linux-2.5.69/drivers/net/ppp_generic.c	2003-05-04 18:03:09.000000000 -0700
@@ -1955,10 +1955,6 @@
 #endif /* CONFIG_KMOD */
 	if (cp == 0)
 		goto out;
-	/*
-	 * XXX race: the compressor module could get unloaded between
-	 * here and when we do the comp_alloc or decomp_alloc call below.
-	 */
 
 	err = -ENOBUFS;
 	if (data.transmit) {
@@ -1971,10 +1967,13 @@
 			ppp->xcomp = cp;
 			ppp->xc_state = state;
 			ppp_xmit_unlock(ppp);
-			if (ostate != 0)
+			if (ostate != 0) {
 				ocomp->comp_free(ostate);
+				module_put(ocomp->owner);
+			}
 			err = 0;
-		}
+		} else
+			module_put(cp->owner);
 
 	} else {
 		state = cp->decomp_alloc(ccp_option, data.length);
@@ -1986,10 +1985,13 @@
 			ppp->rcomp = cp;
 			ppp->rc_state = state;
 			ppp_recv_unlock(ppp);
-			if (ostate != 0)
+			if (ostate != 0) {
 				ocomp->decomp_free(ostate);
+				module_put(ocomp->owner);
+			}
 			err = 0;
-		}
+		} else
+			module_put(cp->owner);
 	}
 
  out:
@@ -2100,10 +2102,14 @@
 	ppp->rc_state = 0;
 	ppp_unlock(ppp);
 
-	if (xstate)
+	if (xstate) {
 		xcomp->comp_free(xstate);
-	if (rstate)
+		module_put(xcomp->owner);
+	}
+	if (rstate) {
 		rcomp->decomp_free(rstate);
+		module_put(rcomp->owner);
+	}
 }
 
 /* List of compressors. */
@@ -2175,8 +2181,11 @@
 
 	spin_lock(&compressor_list_lock);
 	ce = find_comp_entry(type);
-	if (ce != 0)
+	if (ce != 0) {
 		cp = ce->comp;
+		if (!try_module_get(cp->owner))
+			cp = NULL;
+	}
 	spin_unlock(&compressor_list_lock);
 	return cp;
 }
diff -urN linux-2.5.68-bk12/drivers/oprofile/timer_int.c linux-2.5.69/drivers/oprofile/timer_int.c
--- linux-2.5.68-bk12/drivers/oprofile/timer_int.c	2003-05-04 18:03:01.000000000 -0700
+++ linux-2.5.69/drivers/oprofile/timer_int.c	2003-05-04 18:03:10.000000000 -0700
@@ -12,6 +12,8 @@
 #include <linux/smp.h>
 #include <linux/irq.h>
 #include <linux/oprofile.h>
+#include <linux/profile.h>
+#include <linux/init.h>
 #include <asm/ptrace.h>
  
 static int timer_notify(struct notifier_block * self, unsigned long val, void * data)
diff -urN linux-2.5.68-bk12/fs/compat.c linux-2.5.69/fs/compat.c
--- linux-2.5.68-bk12/fs/compat.c	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/fs/compat.c	2003-05-04 18:03:11.000000000 -0700
@@ -300,7 +300,6 @@
 {
 	struct file * filp;
 	int error = -EBADF;
-	int (*handler)(unsigned int, unsigned int, unsigned long, struct file * filp);
 	struct ioctl_trans *t;
 
 	filp = fget(fd);
@@ -317,8 +316,10 @@
 	while (t && t->cmd != cmd)
 		t = (struct ioctl_trans *)t->next;
 	if (t) {
-		handler = t->handler;
-		error = handler(fd, cmd, arg, filp);
+		if (t->handler)
+			error = t->handler(fd, cmd, arg, filp);
+		else
+			error = sys_ioctl(fd, cmd, arg);
 	} else if (cmd >= SIOCDEVPRIVATE && cmd <= (SIOCDEVPRIVATE + 15)) {
 		error = siocdevprivate_ioctl(fd, cmd, arg);
 	} else {
diff -urN linux-2.5.68-bk12/fs/partitions/check.c linux-2.5.69/fs/partitions/check.c
--- linux-2.5.68-bk12/fs/partitions/check.c	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/fs/partitions/check.c	2003-05-04 18:03:11.000000000 -0700
@@ -125,6 +125,29 @@
 	return disk_name(bdev->bd_disk, part, buf);
 }
 
+/*
+ * NOTE: this cannot be called from interrupt context.
+ *
+ * But in interrupt context you should really have a struct
+ * block_device anyway and use bdevname() above.
+ */
+const char *__bdevname(dev_t dev, char *buffer)
+{
+	struct gendisk *disk;
+	int part;
+
+	disk = get_gendisk(dev, &part);
+	if (disk) {
+		buffer = disk_name(disk, part, buffer);
+		put_disk(disk);
+	} else {
+		snprintf(buffer, BDEVNAME_SIZE, "unknown-block(%u,%u)",
+				MAJOR(dev), MINOR(dev));
+	}
+
+	return buffer;
+}
+
 static struct parsed_partitions *
 check_partition(struct gendisk *hd, struct block_device *bdev)
 {
diff -urN linux-2.5.68-bk12/include/linux/blk.h linux-2.5.69/include/linux/blk.h
--- linux-2.5.68-bk12/include/linux/blk.h	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/include/linux/blk.h	2003-05-04 18:03:11.000000000 -0700
@@ -1,41 +1,2 @@
-#ifndef _BLK_H
-#define _BLK_H
-
+/* this file is obsolete, please use <linux/blkdev.h> instead */
 #include <linux/blkdev.h>
-#include <linux/elevator.h>
-#include <linux/config.h>
-#include <linux/spinlock.h>
-#include <linux/compiler.h>
-
-extern void set_device_ro(struct block_device *bdev, int flag);
-extern void set_disk_ro(struct gendisk *disk, int flag);
-extern void add_disk_randomness(struct gendisk *disk);
-extern void rand_initialize_disk(struct gendisk *disk);
-
-/*
- * end_request() and friends. Must be called with the request queue spinlock
- * acquired. All functions called within end_request() _must_be_ atomic.
- *
- * Several drivers define their own end_request and call
- * end_that_request_first() and end_that_request_last()
- * for parts of the original function. This prevents
- * code duplication in drivers.
- */
-
-extern int end_that_request_first(struct request *, int, int);
-extern int end_that_request_chunk(struct request *, int, int);
-extern void end_that_request_last(struct request *);
-extern void end_request(struct request *req, int uptodate);
-struct request *elv_next_request(request_queue_t *q);
-
-static inline void blkdev_dequeue_request(struct request *req)
-{
-	BUG_ON(list_empty(&req->queuelist));
-
-	list_del_init(&req->queuelist);
-
-	if (req->q)
-		elv_remove_request(req->q, req);
-}
-
-#endif /* _BLK_H */
diff -urN linux-2.5.68-bk12/include/linux/blkdev.h linux-2.5.69/include/linux/blkdev.h
--- linux-2.5.68-bk12/include/linux/blkdev.h	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/include/linux/blkdev.h	2003-05-04 18:03:11.000000000 -0700
@@ -349,6 +349,30 @@
 }
 
 /*
+ * end_request() and friends. Must be called with the request queue spinlock
+ * acquired. All functions called within end_request() _must_be_ atomic.
+ *
+ * Several drivers define their own end_request and call
+ * end_that_request_first() and end_that_request_last()
+ * for parts of the original function. This prevents
+ * code duplication in drivers.
+ */
+extern int end_that_request_first(struct request *, int, int);
+extern int end_that_request_chunk(struct request *, int, int);
+extern void end_that_request_last(struct request *);
+extern void end_request(struct request *req, int uptodate);
+
+static inline void blkdev_dequeue_request(struct request *req)
+{
+	BUG_ON(list_empty(&req->queuelist));
+
+	list_del_init(&req->queuelist);
+
+	if (req->q)
+		elv_remove_request(req->q, req);
+}
+
+/*
  * get ready for proper ref counting
  */
 #define blk_put_queue(q)	do { } while (0)
diff -urN linux-2.5.68-bk12/include/linux/elevator.h linux-2.5.69/include/linux/elevator.h
--- linux-2.5.68-bk12/include/linux/elevator.h	2003-04-19 19:48:49.000000000 -0700
+++ linux-2.5.69/include/linux/elevator.h	2003-05-04 18:03:11.000000000 -0700
@@ -54,6 +54,7 @@
 extern void elv_merged_request(request_queue_t *, struct request *);
 extern void elv_remove_request(request_queue_t *, struct request *);
 extern int elv_queue_empty(request_queue_t *);
+extern struct request *elv_next_request(struct request_queue *q);
 extern struct request *elv_former_request(request_queue_t *, struct request *);
 extern struct request *elv_latter_request(request_queue_t *, struct request *);
 extern int elv_register_queue(struct gendisk *);
diff -urN linux-2.5.68-bk12/include/linux/genhd.h linux-2.5.69/include/linux/genhd.h
--- linux-2.5.68-bk12/include/linux/genhd.h	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/include/linux/genhd.h	2003-05-04 18:03:11.000000000 -0700
@@ -190,6 +190,14 @@
 extern void del_gendisk(struct gendisk *gp);
 extern void unlink_gendisk(struct gendisk *gp);
 extern struct gendisk *get_gendisk(dev_t dev, int *part);
+
+extern void set_device_ro(struct block_device *bdev, int flag);
+extern void set_disk_ro(struct gendisk *disk, int flag);
+
+/* drivers/char/random.c */
+extern void add_disk_randomness(struct gendisk *disk);
+extern void rand_initialize_disk(struct gendisk *disk);
+
 static inline sector_t get_start_sect(struct block_device *bdev)
 {
 	return bdev->bd_offset;
diff -urN linux-2.5.68-bk12/include/linux/mod_devicetable.h linux-2.5.69/include/linux/mod_devicetable.h
--- linux-2.5.68-bk12/include/linux/mod_devicetable.h	2003-04-19 19:51:13.000000000 -0700
+++ linux-2.5.69/include/linux/mod_devicetable.h	2003-05-04 18:03:11.000000000 -0700
@@ -21,6 +21,22 @@
 	kernel_ulong_t driver_data;	/* Data private to the driver */
 };
 
+
+#define IEEE1394_MATCH_VENDOR_ID	0x0001
+#define IEEE1394_MATCH_MODEL_ID		0x0002
+#define IEEE1394_MATCH_SPECIFIER_ID	0x0004
+#define IEEE1394_MATCH_VERSION		0x0008
+
+struct ieee1394_device_id {
+	__u32 match_flags;
+	__u32 vendor_id;
+	__u32 model_id;
+	__u32 specifier_id;
+	__u32 version;
+	kernel_ulong_t driver_data;
+};
+
+
 /*
  * Device table entry for "new style" table-driven USB drivers.
  * User mode code can read these tables to choose which modules to load.
diff -urN linux-2.5.68-bk12/include/linux/netfilter_bridge/ebt_arp.h linux-2.5.69/include/linux/netfilter_bridge/ebt_arp.h
--- linux-2.5.68-bk12/include/linux/netfilter_bridge/ebt_arp.h	2003-04-19 19:50:06.000000000 -0700
+++ linux-2.5.69/include/linux/netfilter_bridge/ebt_arp.h	2003-05-04 18:03:11.000000000 -0700
@@ -6,8 +6,10 @@
 #define EBT_ARP_PTYPE 0x04
 #define EBT_ARP_SRC_IP 0x08
 #define EBT_ARP_DST_IP 0x10
+#define EBT_ARP_SRC_MAC 0x20
+#define EBT_ARP_DST_MAC 0x40
 #define EBT_ARP_MASK (EBT_ARP_OPCODE | EBT_ARP_HTYPE | EBT_ARP_PTYPE | \
-   EBT_ARP_SRC_IP | EBT_ARP_DST_IP)
+   EBT_ARP_SRC_IP | EBT_ARP_DST_IP | EBT_ARP_SRC_MAC | EBT_ARP_DST_MAC)
 #define EBT_ARP_MATCH "arp"
 
 struct ebt_arp_info
@@ -19,6 +21,10 @@
 	uint32_t smsk;
 	uint32_t daddr;
 	uint32_t dmsk;
+	unsigned char smaddr[ETH_ALEN];
+	unsigned char smmsk[ETH_ALEN];
+	unsigned char dmaddr[ETH_ALEN];
+	unsigned char dmmsk[ETH_ALEN];
 	uint8_t  bitmask;
 	uint8_t  invflags;
 };
diff -urN linux-2.5.68-bk12/include/linux/netfilter_bridge/ebt_pkttype.h linux-2.5.69/include/linux/netfilter_bridge/ebt_pkttype.h
--- linux-2.5.68-bk12/include/linux/netfilter_bridge/ebt_pkttype.h	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.5.69/include/linux/netfilter_bridge/ebt_pkttype.h	2003-05-04 18:03:11.000000000 -0700
@@ -0,0 +1,11 @@
+#ifndef __LINUX_BRIDGE_EBT_PKTTYPE_H
+#define __LINUX_BRIDGE_EBT_PKTTYPE_H
+
+struct ebt_pkttype_info
+{
+	uint8_t pkt_type;
+	uint8_t invert;
+};
+#define EBT_PKTTYPE_MATCH "pkttype"
+
+#endif
diff -urN linux-2.5.68-bk12/include/linux/ppp-comp.h linux-2.5.69/include/linux/ppp-comp.h
--- linux-2.5.68-bk12/include/linux/ppp-comp.h	2003-04-19 19:48:46.000000000 -0700
+++ linux-2.5.69/include/linux/ppp-comp.h	2003-05-04 18:03:11.000000000 -0700
@@ -42,6 +42,8 @@
 #ifndef _NET_PPP_COMP_H
 #define _NET_PPP_COMP_H
 
+struct module;
+
 /*
  * The following symbols control whether we include code for
  * various compression methods.
@@ -106,6 +108,9 @@
 
 	/* Return decompression statistics */
 	void	(*decomp_stat) (void *state, struct compstat *stats);
+
+	/* Used in locking compressor modules */
+	struct module *owner;
 };
 
 /*
diff -urN linux-2.5.68-bk12/include/net/xfrm.h linux-2.5.69/include/net/xfrm.h
--- linux-2.5.68-bk12/include/net/xfrm.h	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/include/net/xfrm.h	2003-05-04 18:03:11.000000000 -0700
@@ -484,6 +484,10 @@
 	return 0;
 }
 
+/* placeholder until xfrm6_tunnel.c is written */
+static inline int xfrm6_tunnel_check_size(struct sk_buff *skb)
+{ return 0; }
+
 /* A struct encoding bundle of transformations to apply to some set of flow.
  *
  * dst->child points to the next element of bundle.
@@ -756,6 +760,7 @@
 extern int xfrm_replay_check(struct xfrm_state *x, u32 seq);
 extern void xfrm_replay_advance(struct xfrm_state *x, u32 seq);
 extern int xfrm_check_selectors(struct xfrm_state **x, int n, struct flowi *fl);
+extern int xfrm_check_output(struct xfrm_state *x, struct sk_buff *skb, unsigned short family);
 extern int xfrm4_rcv(struct sk_buff *skb);
 extern int xfrm4_rcv_encap(struct sk_buff *skb, __u16 encap_type);
 extern int xfrm4_tunnel_register(struct xfrm_tunnel *handler);
diff -urN linux-2.5.68-bk12/net/8021q/vlan.c linux-2.5.69/net/8021q/vlan.c
--- linux-2.5.68-bk12/net/8021q/vlan.c	2003-04-19 19:50:36.000000000 -0700
+++ linux-2.5.69/net/8021q/vlan.c	2003-05-04 18:03:11.000000000 -0700
@@ -66,9 +66,8 @@
 
 static struct packet_type vlan_packet_type = {
 	.type = __constant_htons(ETH_P_8021Q),
-	.dev =NULL,
 	.func = vlan_skb_recv, /* VLAN receive method */
-	.data = (void *)(-1),  /* Set here '(void *)1' when this code can SHARE SKBs */
+	.data = (void *)1,     /* understands shared skb */
 };
 
 /* End of global variables definitions. */
diff -urN linux-2.5.68-bk12/net/bridge/netfilter/Kconfig linux-2.5.69/net/bridge/netfilter/Kconfig
--- linux-2.5.68-bk12/net/bridge/netfilter/Kconfig	2003-04-19 19:48:56.000000000 -0700
+++ linux-2.5.69/net/bridge/netfilter/Kconfig	2003-05-04 18:03:11.000000000 -0700
@@ -49,7 +49,7 @@
 	  If you want to compile it as a module, say M here and read
 	  <file:Documentation/modules.txt>.  If unsure, say `N'.
 
-config BRIDGE_EBT_IPF
+config BRIDGE_EBT_IP
 	tristate "ebt: IP filter support"
 	depends on BRIDGE_NF_EBTABLES
 	help
@@ -59,7 +59,7 @@
 	  If you want to compile it as a module, say M here and read
 	  <file:Documentation/modules.txt>.  If unsure, say `N'.
 
-config BRIDGE_EBT_ARPF
+config BRIDGE_EBT_ARP
 	tristate "ebt: ARP filter support"
 	depends on BRIDGE_NF_EBTABLES
 	help
@@ -69,7 +69,7 @@
 	  If you want to compile it as a module, say M here and read
 	  <file:Documentation/modules.txt>.  If unsure, say `N'.
 
-config BRIDGE_EBT_VLANF
+config BRIDGE_EBT_VLAN
 	tristate "ebt: 802.1Q VLAN filter support"
 	depends on BRIDGE_NF_EBTABLES
 	help
@@ -79,7 +79,7 @@
 	  If you want to compile it as a module, say M here and read
 	  <file:Documentation/modules.txt>.  If unsure, say `N'.
 
-config BRIDGE_EBT_MARKF
+config BRIDGE_EBT_MARK
 	tristate "ebt: mark filter support"
 	depends on BRIDGE_NF_EBTABLES
 	help
@@ -91,6 +91,18 @@
 	  If you want to compile it as a module, say M here and read
 	  <file:Documentation/modules.txt>.  If unsure, say `N'.
 
+config BRIDGE_EBT_PKTTYPE
+	tristate "ebt: packet type filter support"
+	depends on BRIDGE_NF_EBTABLES
+	help
+	  This option adds the packet type match, which allows matching on the
+	  type of packet based on its Ethernet "class" (as determined by
+	  the generic networking code): broadcast, multicast,
+	  for this host alone or for another host.
+
+	  If you want to compile it as a module, say M here and read
+	  <file:Documentation/modules.txt>.  If unsure, say `N'.
+
 config BRIDGE_EBT_SNAT
 	tristate "ebt: snat target support"
 	depends on BRIDGE_NF_EBTABLES
diff -urN linux-2.5.68-bk12/net/bridge/netfilter/Makefile linux-2.5.69/net/bridge/netfilter/Makefile
--- linux-2.5.68-bk12/net/bridge/netfilter/Makefile	2003-04-19 19:50:03.000000000 -0700
+++ linux-2.5.69/net/bridge/netfilter/Makefile	2003-05-04 18:03:11.000000000 -0700
@@ -6,10 +6,11 @@
 obj-$(CONFIG_BRIDGE_EBT_T_FILTER) += ebtable_filter.o
 obj-$(CONFIG_BRIDGE_EBT_T_NAT) += ebtable_nat.o
 obj-$(CONFIG_BRIDGE_EBT_BROUTE) += ebtable_broute.o
-obj-$(CONFIG_BRIDGE_EBT_IPF) += ebt_ip.o
-obj-$(CONFIG_BRIDGE_EBT_ARPF) += ebt_arp.o
-obj-$(CONFIG_BRIDGE_EBT_VLANF) += ebt_vlan.o
-obj-$(CONFIG_BRIDGE_EBT_MARKF) += ebt_mark_m.o
+obj-$(CONFIG_BRIDGE_EBT_IP) += ebt_ip.o
+obj-$(CONFIG_BRIDGE_EBT_ARP) += ebt_arp.o
+obj-$(CONFIG_BRIDGE_EBT_VLAN) += ebt_vlan.o
+obj-$(CONFIG_BRIDGE_EBT_MARK) += ebt_mark_m.o
+obj-$(CONFIG_BRIDGE_EBT_PKTTYPE) += ebt_pkttype.o
 obj-$(CONFIG_BRIDGE_EBT_LOG) += ebt_log.o
 obj-$(CONFIG_BRIDGE_EBT_SNAT) += ebt_snat.o
 obj-$(CONFIG_BRIDGE_EBT_DNAT) += ebt_dnat.o
diff -urN linux-2.5.68-bk12/net/bridge/netfilter/ebt_arp.c linux-2.5.69/net/bridge/netfilter/ebt_arp.c
--- linux-2.5.68-bk12/net/bridge/netfilter/ebt_arp.c	2003-04-19 19:48:57.000000000 -0700
+++ linux-2.5.69/net/bridge/netfilter/ebt_arp.c	2003-05-04 18:03:11.000000000 -0700
@@ -12,6 +12,7 @@
 #include <linux/netfilter_bridge/ebtables.h>
 #include <linux/netfilter_bridge/ebt_arp.h>
 #include <linux/if_arp.h>
+#include <linux/if_ether.h>
 #include <linux/module.h>
 
 static int ebt_filter_arp(const struct sk_buff *skb, const struct net_device *in,
@@ -61,6 +62,52 @@
 				return EBT_NOMATCH;
 		}
 	}
+
+	if (info->bitmask & (EBT_ARP_SRC_MAC | EBT_ARP_DST_MAC))
+	{
+		uint32_t arp_len = sizeof(struct arphdr) +
+		   (2 * (((*skb).nh.arph)->ar_hln)) +
+		   (2 * (((*skb).nh.arph)->ar_pln));
+		unsigned char dst[ETH_ALEN];
+		unsigned char src[ETH_ALEN];
+
+		/* Make sure the packet is long enough */
+		if ((((*skb).nh.raw) + arp_len) > (*skb).tail)
+			return EBT_NOMATCH;
+		/* MAC addresses are 6 bytes */
+		if (((*skb).nh.arph)->ar_hln != ETH_ALEN)
+			return EBT_NOMATCH;
+		if (info->bitmask & EBT_ARP_SRC_MAC) {
+			uint8_t verdict, i;
+
+			memcpy(&src, ((*skb).nh.raw) +
+					sizeof(struct arphdr),
+					ETH_ALEN);
+			verdict = 0;
+			for (i = 0; i < 6; i++)
+				verdict |= (src[i] ^ info->smaddr[i]) &
+				       info->smmsk[i];
+			if (FWINV(verdict != 0, EBT_ARP_SRC_MAC))
+				return EBT_NOMATCH;
+		}
+
+		if (info->bitmask & EBT_ARP_DST_MAC) {
+			uint8_t verdict, i;
+
+			memcpy(&dst, ((*skb).nh.raw) +
+					sizeof(struct arphdr) +
+			   		(((*skb).nh.arph)->ar_hln) +
+			   		(((*skb).nh.arph)->ar_pln),
+					ETH_ALEN);
+			verdict = 0;
+			for (i = 0; i < 6; i++)
+				verdict |= (dst[i] ^ info->dmaddr[i]) &
+					info->dmmsk[i];
+			if (FWINV(verdict != 0, EBT_ARP_DST_MAC))
+				return EBT_NOMATCH;
+		}
+	}
+
 	return EBT_MATCH;
 }
 
diff -urN linux-2.5.68-bk12/net/bridge/netfilter/ebt_pkttype.c linux-2.5.69/net/bridge/netfilter/ebt_pkttype.c
--- linux-2.5.68-bk12/net/bridge/netfilter/ebt_pkttype.c	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.5.69/net/bridge/netfilter/ebt_pkttype.c	2003-05-04 18:03:11.000000000 -0700
@@ -0,0 +1,59 @@
+/*
+ *  ebt_pkttype
+ *
+ *	Authors:
+ *	Bart De Schuymer <bdschuym@pandora.be>
+ *
+ *  April, 2003
+ *
+ */
+
+#include <linux/netfilter_bridge/ebtables.h>
+#include <linux/netfilter_bridge/ebt_pkttype.h>
+#include <linux/module.h>
+
+static int ebt_filter_pkttype(const struct sk_buff *skb,
+   const struct net_device *in,
+   const struct net_device *out,
+   const void *data,
+   unsigned int datalen)
+{
+	struct ebt_pkttype_info *info = (struct ebt_pkttype_info *)data;
+
+	return (skb->pkt_type != info->pkt_type) ^ info->invert;
+}
+
+static int ebt_pkttype_check(const char *tablename, unsigned int hookmask,
+   const struct ebt_entry *e, void *data, unsigned int datalen)
+{
+	struct ebt_pkttype_info *info = (struct ebt_pkttype_info *)data;
+
+	if (datalen != sizeof(struct ebt_pkttype_info))
+		return -EINVAL;
+	if (info->invert != 0 && info->invert != 1)
+		return -EINVAL;
+	/* Allow any pkt_type value */
+	return 0;
+}
+
+static struct ebt_match filter_pkttype =
+{
+	.name		= EBT_PKTTYPE_MATCH,
+	.match		= ebt_filter_pkttype,
+	.check		= ebt_pkttype_check,
+	.me		= THIS_MODULE,
+};
+
+static int __init init(void)
+{
+	return ebt_register_match(&filter_pkttype);
+}
+
+static void __exit fini(void)
+{
+	ebt_unregister_match(&filter_pkttype);
+}
+
+module_init(init);
+module_exit(fini);
+MODULE_LICENSE("GPL");
diff -urN linux-2.5.68-bk12/net/core/dst.c linux-2.5.69/net/core/dst.c
--- linux-2.5.68-bk12/net/core/dst.c	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/net/core/dst.c	2003-05-04 18:03:11.000000000 -0700
@@ -154,11 +154,9 @@
 	dst->next = dst_garbage_list;
 	dst_garbage_list = dst;
 	if (dst_gc_timer_inc > DST_GC_INC) {
-		del_timer(&dst_gc_timer);
 		dst_gc_timer_inc = DST_GC_INC;
 		dst_gc_timer_expires = DST_GC_MIN;
-		dst_gc_timer.expires = jiffies + dst_gc_timer_expires;
-		add_timer(&dst_gc_timer);
+		mod_timer(&dst_gc_timer, jiffies + dst_gc_timer_expires);
 	}
 	spin_unlock_bh(&dst_lock);
 }
diff -urN linux-2.5.68-bk12/net/decnet/dn_route.c linux-2.5.69/net/decnet/dn_route.c
--- linux-2.5.68-bk12/net/decnet/dn_route.c	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/net/decnet/dn_route.c	2003-05-04 18:03:12.000000000 -0700
@@ -1055,7 +1055,7 @@
 	rt->fl.oif        = oldflp->oif;
 	rt->fl.iif        = 0;
 #ifdef CONFIG_DECNET_ROUTE_FWMARK
-	rt->fl.fld_fwmark = flp->fld_fwmark;
+	rt->fl.fld_fwmark = oldflp->fld_fwmark;
 #endif
 
 	rt->rt_saddr      = fl.fld_src;
@@ -1180,7 +1180,7 @@
 				       .saddr = cb->src,
 				       .scope = RT_SCOPE_UNIVERSE,
 #ifdef CONFIG_DECNET_ROUTE_FWMARK
-				       .fwmark = skb->fwmark
+				       .fwmark = skb->nfmark
 #endif
 				    } },
 			    .iif = skb->dev->ifindex };
diff -urN linux-2.5.68-bk12/net/ipv4/ah.c linux-2.5.69/net/ipv4/ah.c
--- linux-2.5.68-bk12/net/ipv4/ah.c	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/net/ipv4/ah.c	2003-05-04 18:03:12.000000000 -0700
@@ -72,12 +72,8 @@
 	}
 
 	spin_lock_bh(&x->lock);
-	if ((err = xfrm_state_check_expire(x)) != 0)
-		goto error;
-	if (x->props.mode)
-		if ((err = xfrm4_tunnel_check_size(skb)) != 0)
-			goto error;
-	if ((err = xfrm_state_check_space(x, skb)) != 0)
+	err = xfrm_check_output(x, skb, AF_INET);
+	if (err)
 		goto error;
 
 	iph = skb->nh.iph;
diff -urN linux-2.5.68-bk12/net/ipv4/esp.c linux-2.5.69/net/ipv4/esp.c
--- linux-2.5.68-bk12/net/ipv4/esp.c	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/net/ipv4/esp.c	2003-05-04 18:03:12.000000000 -0700
@@ -47,14 +47,9 @@
 	}
 
 	spin_lock_bh(&x->lock);
-	if ((err = xfrm_state_check_expire(x)) != 0)
+	err = xfrm_check_output(x, skb, AF_INET);
+	if (err)
 		goto error;
-	if (x->props.mode)
-		if ((err = xfrm4_tunnel_check_size(skb)) != 0)
-			goto error;
-	if ((err = xfrm_state_check_space(x, skb)) != 0)
-		goto error;
-
 	err = -ENOMEM;
 
 	/* Strip IP header in transport mode. Save it. */
diff -urN linux-2.5.68-bk12/net/ipv4/ipcomp.c linux-2.5.69/net/ipv4/ipcomp.c
--- linux-2.5.68-bk12/net/ipv4/ipcomp.c	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/net/ipv4/ipcomp.c	2003-05-04 18:03:12.000000000 -0700
@@ -173,13 +173,8 @@
 	}
 
 	spin_lock_bh(&x->lock);
-	
-	if ((err = xfrm_state_check_expire(x)) != 0)
-		goto error;
-	if (x->props.mode)
-		if ((err = xfrm4_tunnel_check_size(skb)) != 0)
-			goto error;
-	if ((err = xfrm_state_check_space(x, skb)) != 0)
+	err = xfrm_check_output(x, skb, AF_INET);
+	if (err)
 		goto error;
 
 	/* Don't bother compressing */
diff -urN linux-2.5.68-bk12/net/ipv4/route.c linux-2.5.69/net/ipv4/route.c
--- linux-2.5.68-bk12/net/ipv4/route.c	2003-05-04 18:03:03.000000000 -0700
+++ linux-2.5.69/net/ipv4/route.c	2003-05-04 18:03:12.000000000 -0700
@@ -508,6 +508,8 @@
 
 	rt_deadline = 0;
 
+	get_random_bytes(&rt_hash_rnd, 4);
+
 	for (i = rt_hash_mask; i >= 0; i--) {
 		spin_lock_bh(&rt_hash_table[i].lock);
 		rth = rt_hash_table[i].chain;
@@ -570,7 +572,6 @@
 {
 	unsigned long now = jiffies;
 
-	get_random_bytes(&rt_hash_rnd, 4);
 	rt_cache_flush(0);
 	mod_timer(&rt_secret_timer, now + ip_rt_secret_interval);
 }
diff -urN linux-2.5.68-bk12/net/ipv6/ah6.c linux-2.5.69/net/ipv6/ah6.c
--- linux-2.5.68-bk12/net/ipv6/ah6.c	2003-04-19 19:50:08.000000000 -0700
+++ linux-2.5.69/net/ipv6/ah6.c	2003-05-04 18:03:12.000000000 -0700
@@ -65,9 +65,8 @@
 	}
 
 	spin_lock_bh(&x->lock);
-	if ((err = xfrm_state_check_expire(x)) != 0)
-		goto error;
-	if ((err = xfrm_state_check_space(x, skb)) != 0)
+	err = xfrm_check_output(x, skb, AF_INET);
+	if (err)
 		goto error;
 
 	if (x->props.mode) {
diff -urN linux-2.5.68-bk12/net/ipv6/esp6.c linux-2.5.69/net/ipv6/esp6.c
--- linux-2.5.68-bk12/net/ipv6/esp6.c	2003-04-19 19:50:05.000000000 -0700
+++ linux-2.5.69/net/ipv6/esp6.c	2003-05-04 18:03:12.000000000 -0700
@@ -126,11 +126,9 @@
 	}
 
 	spin_lock_bh(&x->lock);
-	if ((err = xfrm_state_check_expire(x)) != 0)
+	err = xfrm_check_output(x, skb, AF_INET6);
+	if (err)
 		goto error;
-	if ((err = xfrm_state_check_space(x, skb)) != 0)
-		goto error;
-
 	err = -ENOMEM;
 
 	/* Strip IP header in transport mode. Save it. */
diff -urN linux-2.5.68-bk12/net/netsyms.c linux-2.5.69/net/netsyms.c
--- linux-2.5.68-bk12/net/netsyms.c	2003-05-04 18:03:04.000000000 -0700
+++ linux-2.5.69/net/netsyms.c	2003-05-04 18:03:12.000000000 -0700
@@ -314,6 +314,7 @@
 EXPORT_SYMBOL(xfrm_replay_check);
 EXPORT_SYMBOL(xfrm_replay_advance);
 EXPORT_SYMBOL(xfrm_check_selectors);
+EXPORT_SYMBOL(xfrm_check_output);
 EXPORT_SYMBOL(__secpath_destroy);
 EXPORT_SYMBOL(xfrm_get_acqseq);
 EXPORT_SYMBOL(xfrm_parse_spi);
diff -urN linux-2.5.68-bk12/net/sched/sch_cbq.c linux-2.5.69/net/sched/sch_cbq.c
--- linux-2.5.68-bk12/net/sched/sch_cbq.c	2003-05-04 18:03:04.000000000 -0700
+++ linux-2.5.69/net/sched/sch_cbq.c	2003-05-04 18:03:12.000000000 -0700
@@ -1056,11 +1056,9 @@
 		sch->stats.overlimits++;
 		if (q->wd_expires && !netif_queue_stopped(sch->dev)) {
 			long delay = PSCHED_US2JIFFIE(q->wd_expires);
-			del_timer(&q->wd_timer);
 			if (delay <= 0)
 				delay = 1;
-			q->wd_timer.expires = jiffies + delay;
-			add_timer(&q->wd_timer);
+			mod_timer(&q->wd_timer, jiffies + delay);
 			sch->flags |= TCQ_F_THROTTLED;
 		}
 	}
diff -urN linux-2.5.68-bk12/net/sched/sch_csz.c linux-2.5.69/net/sched/sch_csz.c
--- linux-2.5.68-bk12/net/sched/sch_csz.c	2003-05-04 18:03:04.000000000 -0700
+++ linux-2.5.69/net/sched/sch_csz.c	2003-05-04 18:03:12.000000000 -0700
@@ -708,11 +708,9 @@
 	 */
 	if (q->wd_expires) {
 		unsigned long delay = PSCHED_US2JIFFIE(q->wd_expires);
-		del_timer(&q->wd_timer);
 		if (delay == 0)
 			delay = 1;
-		q->wd_timer.expires = jiffies + delay;
-		add_timer(&q->wd_timer);
+		mod_timer(&q->wd_timer, jiffies + delay);
 		sch->stats.overlimits++;
 	}
 #endif
diff -urN linux-2.5.68-bk12/net/sched/sch_htb.c linux-2.5.69/net/sched/sch_htb.c
--- linux-2.5.68-bk12/net/sched/sch_htb.c	2003-05-04 18:03:04.000000000 -0700
+++ linux-2.5.69/net/sched/sch_htb.c	2003-05-04 18:03:12.000000000 -0700
@@ -975,9 +975,7 @@
 			printk(KERN_INFO "HTB delay %ld > 5sec\n", delay);
 		delay = 5*HZ;
 	}
-	del_timer(&q->timer);
-	q->timer.expires = jiffies + delay;
-	add_timer(&q->timer);
+	mod_timer(&q->timer, jiffies + delay);
 	sch->flags |= TCQ_F_THROTTLED;
 	sch->stats.overlimits++;
 	HTB_DBG(3,1,"htb_deq t_delay=%ld\n",delay);
diff -urN linux-2.5.68-bk12/net/sunrpc/sched.c linux-2.5.69/net/sunrpc/sched.c
--- linux-2.5.68-bk12/net/sunrpc/sched.c	2003-04-19 19:49:54.000000000 -0700
+++ linux-2.5.69/net/sunrpc/sched.c	2003-05-04 18:03:12.000000000 -0700
@@ -952,7 +952,6 @@
 	wait_queue_head_t *assassin = (wait_queue_head_t*) ptr;
 	int		rounds = 0;
 
-	MOD_INC_USE_COUNT;
 	lock_kernel();
 	/*
 	 * Let our maker know we're running ...
@@ -995,7 +994,6 @@
 
 	dprintk("RPC: rpciod exiting\n");
 	unlock_kernel();
-	MOD_DEC_USE_COUNT;
 	return 0;
 }
 
@@ -1027,7 +1025,6 @@
 {
 	int error = 0;
 
-	MOD_INC_USE_COUNT;
 	down(&rpciod_sema);
 	dprintk("rpciod_up: pid %d, users %d\n", rpciod_pid, rpciod_users);
 	rpciod_users++;
@@ -1051,7 +1048,6 @@
 	error = 0;
 out:
 	up(&rpciod_sema);
-	MOD_DEC_USE_COUNT;
 	return error;
 }
 
@@ -1060,7 +1056,6 @@
 {
 	unsigned long flags;
 
-	MOD_INC_USE_COUNT;
 	down(&rpciod_sema);
 	dprintk("rpciod_down pid %d sema %d\n", rpciod_pid, rpciod_users);
 	if (rpciod_users) {
@@ -1097,7 +1092,6 @@
 	spin_unlock_irqrestore(&current->sighand->siglock, flags);
 out:
 	up(&rpciod_sema);
-	MOD_DEC_USE_COUNT;
 }
 
 #ifdef RPC_DEBUG
diff -urN linux-2.5.68-bk12/net/xfrm/Makefile linux-2.5.69/net/xfrm/Makefile
--- linux-2.5.68-bk12/net/xfrm/Makefile	2003-04-19 19:51:22.000000000 -0700
+++ linux-2.5.69/net/xfrm/Makefile	2003-05-04 18:03:12.000000000 -0700
@@ -2,6 +2,6 @@
 # Makefile for the XFRM subsystem.
 #
 
-obj-y := xfrm_policy.o xfrm_state.o xfrm_input.o xfrm_algo.o
+obj-y := xfrm_policy.o xfrm_state.o xfrm_input.o xfrm_algo.o xfrm_output.o
 obj-$(CONFIG_XFRM_USER) += xfrm_user.o
 
diff -urN linux-2.5.68-bk12/net/xfrm/xfrm_output.c linux-2.5.69/net/xfrm/xfrm_output.c
--- linux-2.5.68-bk12/net/xfrm/xfrm_output.c	1969-12-31 16:00:00.000000000 -0800
+++ linux-2.5.69/net/xfrm/xfrm_output.c	2003-05-04 18:03:12.000000000 -0700
@@ -0,0 +1,46 @@
+/* 
+ * generic xfrm output routines
+ *
+ * Copyright (c) 2003 James Morris <jmorris@intercode.com.au>
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the Free
+ * Software Foundation; either version 2 of the License, or (at your option) 
+ * any later version.
+ */
+#include <linux/config.h>
+#include <linux/kernel.h>
+#include <linux/skbuff.h>
+#include <net/xfrm.h>
+
+int xfrm_check_output(struct xfrm_state *x,
+                      struct sk_buff *skb, unsigned short family)
+{
+	int err;
+	
+	err = xfrm_state_check_expire(x);
+	if (err)
+		goto out;
+		
+	if (x->props.mode) {
+		switch (family) {
+		case AF_INET:
+			err = xfrm4_tunnel_check_size(skb);
+			break;
+			
+		case AF_INET6:
+			err = xfrm6_tunnel_check_size(skb);
+			break;
+			
+		default:
+			err = -EINVAL;
+		}
+		
+		if (err)
+			goto out;
+	}
+
+	err = xfrm_state_check_space(x, skb);
+out:
+	return err;
+}
diff -urN linux-2.5.68-bk12/scripts/file2alias.c linux-2.5.69/scripts/file2alias.c
--- linux-2.5.68-bk12/scripts/file2alias.c	2003-04-19 19:49:26.000000000 -0700
+++ linux-2.5.69/scripts/file2alias.c	2003-05-04 18:03:12.000000000 -0700
@@ -81,6 +81,29 @@
 	return 1;
 }
 
+/* Looks like: ieee1394:venNmoNspNverN */
+static int do_ieee1394_entry(const char *filename,
+			     struct ieee1394_device_id *id, char *alias)
+{
+	id->match_flags = TO_NATIVE(id->match_flags);
+	id->vendor_id = TO_NATIVE(id->vendor_id);
+	id->model_id = TO_NATIVE(id->model_id);
+	id->specifier_id = TO_NATIVE(id->specifier_id);
+	id->version = TO_NATIVE(id->version);
+
+	strcpy(alias, "ieee1394:");
+	ADD(alias, "ven", id->match_flags & IEEE1394_MATCH_VENDOR_ID,
+	    id->vendor_id);
+	ADD(alias, "mo", id->match_flags & IEEE1394_MATCH_MODEL_ID,
+	    id->model_id);
+	ADD(alias, "sp", id->match_flags & IEEE1394_MATCH_SPECIFIER_ID,
+	    id->specifier_id);
+	ADD(alias, "ver", id->match_flags & IEEE1394_MATCH_VERSION,
+	    id->version);
+
+	return 1;
+}
+
 /* Looks like: pci:vNdNsvNsdNbcNscNiN. */
 static int do_pci_entry(const char *filename,
 			struct pci_device_id *id, char *alias)
@@ -184,6 +207,9 @@
 	else if (sym_is(symname, "__mod_usb_device_table"))
 		do_table(symval, sym->st_size, sizeof(struct usb_device_id),
 			 do_usb_entry, mod);
+	else if (sym_is(symname, "__mod_ieee1394_device_table"))
+		do_table(symval, sym->st_size, sizeof(struct ieee1394_device_id),
+			 do_ieee1394_entry, mod);
 }
 
 /* Now add out buffered information to the generated C source */
