## Automatically generated incremental diff
## From:   linux-2.4.25-rc2
## To:     linux-2.4.25-rc3
## Robot:  $Id: make-incremental-diff,v 1.12 2004/01/06 07:19:36 hpa Exp $

diff -urN linux-2.4.25-rc2/Makefile linux-2.4.25-rc3/Makefile
--- linux-2.4.25-rc2/Makefile	2004-02-16 05:14:14.000000000 -0800
+++ linux-2.4.25-rc3/Makefile	2004-02-16 05:14:18.000000000 -0800
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 25
-EXTRAVERSION = -rc2
+EXTRAVERSION = -rc3
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -urN linux-2.4.25-rc2/drivers/atm/he.c linux-2.4.25-rc3/drivers/atm/he.c
--- linux-2.4.25-rc2/drivers/atm/he.c	2003-11-28 10:26:19.000000000 -0800
+++ linux-2.4.25-rc3/drivers/atm/he.c	2004-02-16 05:14:19.000000000 -0800
@@ -179,9 +179,7 @@
 								unsigned flags)
 {
 	he_writel(he_dev, val, CON_DAT);
-#ifdef CONFIG_IA64_SGI_SN2
-	(void) he_readl(he_dev, CON_DAT);
-#endif
+	(void) he_readl(he_dev, CON_DAT);		/* flush posted writes */
 	he_writel(he_dev, flags | CON_CTL_WRITE | CON_CTL_ADDR(addr), CON_CTL);
 	while (he_readl(he_dev, CON_CTL) & CON_CTL_BUSY);
 }
@@ -1951,9 +1949,6 @@
 
 		he_writel(he_dev, RBRQ_MASK(he_dev->rbrq_head),
 						G0_RBRQ_H + (group * 16));
-#ifdef CONFIG_IA64_SGI_SN2
-		(void) he_readl(he_dev, G0_RBRQ_H + (group * 16));
-#endif
 	}
 
 	return pdus_assembled;
@@ -2047,9 +2042,6 @@
 
 		he_writel(he_dev, TBRQ_MASK(he_dev->tbrq_head),
 						G0_TBRQ_H + (group * 16));
-#ifdef CONFIG_IA64_SGI_SN2
-		(void) he_readl(he_dev, G0_TBRQ_H + (group * 16));
-#endif
 	}
 }
 
@@ -2077,12 +2069,8 @@
 		++moved;
 	} 
 
-	if (moved) {
+	if (moved)
 		he_writel(he_dev, RBPL_MASK(he_dev->rbpl_tail), G0_RBPL_T);
-#ifdef CONFIG_IA64_SGI_SN2
-		(void) he_readl(he_dev, G0_RBPL_T);
-#endif
-	}
 }
 
 #ifdef USE_RBPS
@@ -2109,12 +2097,8 @@
 		++moved;
 	} 
 
-	if (moved) {
+	if (moved)
 		he_writel(he_dev, RBPS_MASK(he_dev->rbps_tail), G0_RBPS_T);
-#ifdef CONFIG_IA64_SGI_SN2
-		(void) he_readl(he_dev, G0_RBPS_T);
-#endif
-	}
 }
 #endif /* USE_RBPS */
 
@@ -2211,7 +2195,7 @@
 			IRQ_SIZE(CONFIG_IRQ_SIZE) |
 			IRQ_THRESH(CONFIG_IRQ_THRESH) |
 			IRQ_TAIL(he_dev->irq_tail), IRQ0_HEAD);
-		(void) he_readl(he_dev, INT_FIFO); /* 8.1.2 controller errata */
+		(void) he_readl(he_dev, INT_FIFO); /* 8.1.2 controller errata; flush posted writes */
 	}
 #ifdef USE_TASKLET
 	spin_unlock_irqrestore(&he_dev->global_lock, flags);
@@ -2252,11 +2236,8 @@
 #else
 		he_tasklet((unsigned long) he_dev);
 #endif
-		he_writel(he_dev, INT_CLEAR_A, INT_FIFO);
-							/* clear interrupt */
-#ifdef CONFIG_IA64_SGI_SN2
-		(void) he_readl(he_dev, INT_FIFO);
-#endif
+		he_writel(he_dev, INT_CLEAR_A, INT_FIFO);	/* clear interrupt */
+		(void) he_readl(he_dev, INT_FIFO);		/* flush posted writes */
 	}
 	spin_unlock_irqrestore(&he_dev->global_lock, flags);
 	return IRQ_RETVAL(handled);
@@ -2325,9 +2306,7 @@
 	he_dev->tpdrq_tail = new_tail;
 
 	he_writel(he_dev, TPDRQ_MASK(he_dev->tpdrq_tail), TPDRQ_T);
-#ifdef CONFIG_IA64_SGI_SN2
-	(void) he_readl(he_dev, TPDRQ_T);
-#endif
+	(void) he_readl(he_dev, TPDRQ_T);		/* flush posted writes */
 }
 
 static int
@@ -2482,9 +2461,7 @@
 		he_writel_tsr12(he_dev, 0x0, cid);
 		he_writel_tsr13(he_dev, 0x0, cid);
 		he_writel_tsr14(he_dev, 0x0, cid);
-#ifdef CONFIG_IA64_SGI_SN2
-		(void) he_readl_tsr0(he_dev, cid);
-#endif
+		(void) he_readl_tsr0(he_dev, cid);		/* flush posted writes */
 		spin_unlock_irqrestore(&he_dev->global_lock, flags);
 	}
 
@@ -2538,9 +2515,7 @@
 			  the open/closed indication in rsr0 */
 		he_writel_rsr0(he_dev,
 			rsr0 | RSR0_START_PDU | RSR0_OPEN_CONN | aal, cid);
-#ifdef CONFIG_IA64_SGI_SN2
-		(void) he_readl_rsr0(he_dev, cid);
-#endif
+		(void) he_readl_rsr0(he_dev, cid);		/* flush posted writes */
 
 		spin_unlock_irqrestore(&he_dev->global_lock, flags);
 	}
@@ -2594,9 +2569,7 @@
 		set_current_state(TASK_UNINTERRUPTIBLE);
 
 		he_writel_rsr0(he_dev, RSR0_CLOSE_CONN, cid);
-#ifdef CONFIG_IA64_SGI_SN2
-		(void) he_readl_rsr0(he_dev, cid);
-#endif
+		(void) he_readl_rsr0(he_dev, cid);		/* flush posted writes */
 		he_writel_mbox(he_dev, cid, RXCON_CLOSE);
 		spin_unlock_irqrestore(&he_dev->global_lock, flags);
 
@@ -2646,9 +2619,6 @@
 		spin_lock_irqsave(&he_dev->global_lock, flags);
 		he_writel_tsr4_upper(he_dev, TSR4_FLUSH_CONN, cid);
 					/* also clears TSR4_SESSION_ENDED */
-#ifdef CONFIG_IA64_SGI_SN2
-		(void) he_readl_tsr4(he_dev, cid);
-#endif
 
 		switch (vcc->qos.txtp.traffic_class) {
 			case ATM_UBR:
@@ -2660,6 +2630,7 @@
 				he_writel_tsr14_upper(he_dev, TSR14_DELETE, cid);
 				break;
 		}
+		(void) he_readl_tsr4(he_dev, cid);		/* flush posted writes */
 
 		tpd = __alloc_tpd(he_dev);
 		if (tpd == NULL) {
@@ -2922,9 +2893,7 @@
 
 	spin_lock_irqsave(&he_dev->global_lock, flags);
 	he_writel(he_dev, val, FRAMER + (addr*4));
-#ifdef CONFIG_IA64_SGI_SN2
-	(void) he_readl(he_dev, FRAMER + (addr*4));
-#endif
+	(void) he_readl(he_dev, FRAMER + (addr*4));		/* flush posted writes */
 	spin_unlock_irqrestore(&he_dev->global_lock, flags);
 }
  
diff -urN linux-2.4.25-rc2/drivers/message/fusion/linux_compat.h linux-2.4.25-rc3/drivers/message/fusion/linux_compat.h
--- linux-2.4.25-rc2/drivers/message/fusion/linux_compat.h	2004-02-16 05:14:16.000000000 -0800
+++ linux-2.4.25-rc3/drivers/message/fusion/linux_compat.h	2004-02-16 05:14:19.000000000 -0800
@@ -12,7 +12,7 @@
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 
 
-#if (defined(__sparc__) && defined(__sparc_v9__)) || defined(__x86_64__) || defined(__ia64__)
+#if (defined(__sparc__) && defined(__sparc_v9__)) || defined(__x86_64__)
 #define MPT_CONFIG_COMPAT
 #endif
 
diff -urN linux-2.4.25-rc2/drivers/message/fusion/mptbase.h linux-2.4.25-rc3/drivers/message/fusion/mptbase.h
--- linux-2.4.25-rc2/drivers/message/fusion/mptbase.h	2004-02-16 05:14:16.000000000 -0800
+++ linux-2.4.25-rc3/drivers/message/fusion/mptbase.h	2004-02-16 05:14:19.000000000 -0800
@@ -80,8 +80,8 @@
 #define COPYRIGHT	"Copyright (c) 1999-2003 " MODULEAUTHOR
 #endif
 
-#define MPT_LINUX_VERSION_COMMON	"2.05.11.01"
-#define MPT_LINUX_PACKAGE_NAME		"@(#)mptlinux-2.05.11.01"
+#define MPT_LINUX_VERSION_COMMON	"2.05.11.03"
+#define MPT_LINUX_PACKAGE_NAME		"@(#)mptlinux-2.05.11.03"
 #define WHAT_MAGIC_STRING		"@" "(" "#" ")"
 
 #define show_mptmod_ver(s,ver)  \
diff -urN linux-2.4.25-rc2/drivers/message/fusion/mptctl.c linux-2.4.25-rc3/drivers/message/fusion/mptctl.c
--- linux-2.4.25-rc2/drivers/message/fusion/mptctl.c	2004-02-16 05:14:16.000000000 -0800
+++ linux-2.4.25-rc3/drivers/message/fusion/mptctl.c	2004-02-16 05:14:19.000000000 -0800
@@ -82,6 +82,7 @@
 #include <linux/types.h>
 #include <linux/pci.h>
 #include <linux/miscdevice.h>
+#include <linux/smp_lock.h>
 
 #include <asm/io.h>
 #include <asm/uaccess.h>
@@ -2715,7 +2716,6 @@
 						      unsigned long,
 						      struct file *));
 int unregister_ioctl32_conversion(unsigned int cmd);
-extern asmlinkage int sys_ioctl(unsigned int fd, unsigned int cmd, unsigned long arg);
 
 /*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*/
 /* compat_XXX functions are used to provide a conversion between
@@ -2725,6 +2725,19 @@
  * to ensure the structure contents is properly processed by mptctl.
  */
 static int
+compat_mptctl_ioctl(unsigned int fd, unsigned int cmd,
+			unsigned long arg, struct file *filp)
+{
+	int ret;
+
+	lock_kernel();
+	dctlprintk((KERN_INFO MYNAM "::compat_mptctl_ioctl() called\n"));
+	ret = mptctl_ioctl(filp->f_dentry->d_inode, filp, cmd, arg);
+	unlock_kernel();
+	return ret;
+}
+
+static int
 compat_mptfwxfer_ioctl(unsigned int fd, unsigned int cmd,
 			unsigned long arg, struct file *filp)
 {
@@ -2864,30 +2877,31 @@
 	}
 
 #ifdef MPT_CONFIG_COMPAT
-	err = register_ioctl32_conversion(MPTIOCINFO, sys_ioctl);
+	err = register_ioctl32_conversion(MPTIOCINFO, compat_mptctl_ioctl);
 	if (++where && err) goto out_fail;
-	err = register_ioctl32_conversion(MPTIOCINFO1, sys_ioctl);
+	err = register_ioctl32_conversion(MPTIOCINFO1, compat_mptctl_ioctl);
 	if (++where && err) goto out_fail;
-	err = register_ioctl32_conversion(MPTTARGETINFO, sys_ioctl);
+	err = register_ioctl32_conversion(MPTTARGETINFO, compat_mptctl_ioctl);
 	if (++where && err) goto out_fail;
-	err = register_ioctl32_conversion(MPTTEST, sys_ioctl);
+	err = register_ioctl32_conversion(MPTTEST, compat_mptctl_ioctl);
 	if (++where && err) goto out_fail;
-	err = register_ioctl32_conversion(MPTEVENTQUERY, sys_ioctl);
+	err = register_ioctl32_conversion(MPTEVENTQUERY, compat_mptctl_ioctl);
 	if (++where && err) goto out_fail;
-	err = register_ioctl32_conversion(MPTEVENTENABLE, sys_ioctl);
+	err = register_ioctl32_conversion(MPTEVENTENABLE, compat_mptctl_ioctl);
 	if (++where && err) goto out_fail;
-	err = register_ioctl32_conversion(MPTEVENTREPORT, sys_ioctl);
+	err = register_ioctl32_conversion(MPTEVENTREPORT, compat_mptctl_ioctl);
 	if (++where && err) goto out_fail;
-	err = register_ioctl32_conversion(MPTHARDRESET, sys_ioctl);
+	err = register_ioctl32_conversion(MPTHARDRESET, compat_mptctl_ioctl);
 	if (++where && err) goto out_fail;
 	err = register_ioctl32_conversion(MPTCOMMAND32, compat_mpt_command);
 	if (++where && err) goto out_fail;
 	err = register_ioctl32_conversion(MPTFWDOWNLOAD32,
 					  compat_mptfwxfer_ioctl);
 	if (++where && err) goto out_fail;
-	err = register_ioctl32_conversion(HP_GETHOSTINFO, sys_ioctl);
+	err = register_ioctl32_conversion(HP_GETHOSTINFO, compat_mptctl_ioctl);
 	if (++where && err) goto out_fail;
-	err = register_ioctl32_conversion(HP_GETTARGETINFO, sys_ioctl);
+	err = register_ioctl32_conversion(HP_GETTARGETINFO,
+	    				compat_mptctl_ioctl);
 	if (++where && err) goto out_fail;
 #endif
 
diff -urN linux-2.4.25-rc2/drivers/message/fusion/mptscsih.c linux-2.4.25-rc3/drivers/message/fusion/mptscsih.c
--- linux-2.4.25-rc2/drivers/message/fusion/mptscsih.c	2004-02-16 05:14:16.000000000 -0800
+++ linux-2.4.25-rc3/drivers/message/fusion/mptscsih.c	2004-02-16 05:14:19.000000000 -0800
@@ -914,8 +914,8 @@
 			sc->resid = sc->request_bufflen - xfer_cnt;
 			dprintk((KERN_NOTICE "  SET sc->resid=%02xh\n", sc->resid));
 #endif
-			if (sc->underflow > xfer_cnt) {
-				sc->result = DID_SOFT_ERROR;
+			if((xfer_cnt == 0 ) || (sc->underflow > xfer_cnt)) {
+				sc->result = DID_SOFT_ERROR << 16;
 			}
 
 			/* Report Queue Full
diff -urN linux-2.4.25-rc2/fs/ntfs/support.c linux-2.4.25-rc3/fs/ntfs/support.c
--- linux-2.4.25-rc2/fs/ntfs/support.c	2002-02-25 11:38:09.000000000 -0800
+++ linux-2.4.25-rc3/fs/ntfs/support.c	2004-02-16 05:14:20.000000000 -0800
@@ -240,7 +240,7 @@
 				NLS_MAX_CHARSET_SIZE)) > 0) {
 			/* Adjust result buffer. */
 			if (chl > 1) {
-				buf = ntfs_malloc(*out_len + chl - 1);
+				buf = ntfs_malloc(*out_len + chl);
 				if (!buf) {
 					i = -ENOMEM;
 					goto err_ret;
diff -urN linux-2.4.25-rc2/include/linux/atmdev.h linux-2.4.25-rc3/include/linux/atmdev.h
--- linux-2.4.25-rc2/include/linux/atmdev.h	2003-11-28 10:26:21.000000000 -0800
+++ linux-2.4.25-rc3/include/linux/atmdev.h	2004-02-16 05:14:20.000000000 -0800
@@ -199,9 +199,7 @@
     "SESSION",	"HASSAP",	"BOUND",	"CLOSE"
 
 
-#ifndef __KERNEL__
-#undef __AAL_STAT_ITEMS
-#else
+#ifdef __KERNEL__
 
 #include <linux/sched.h> /* wait_queue_head_t */
 #include <linux/time.h> /* struct timeval */
diff -urN linux-2.4.25-rc2/include/linux/sonet.h linux-2.4.25-rc3/include/linux/sonet.h
--- linux-2.4.25-rc2/include/linux/sonet.h	2000-12-11 13:21:56.000000000 -0800
+++ linux-2.4.25-rc3/include/linux/sonet.h	2004-02-16 05:14:20.000000000 -0800
@@ -56,9 +56,7 @@
 #define SONET_FRSENSE_SIZE 6		/* C1[3],H1[3] (0xff for unknown) */
 
 
-#ifndef __KERNEL__
-#undef __SONET_ITEMS
-#else
+#ifdef __KERNEL__
 
 #include <asm/atomic.h>
 
diff -urN linux-2.4.25-rc2/lib/vsprintf.c linux-2.4.25-rc3/lib/vsprintf.c
--- linux-2.4.25-rc2/lib/vsprintf.c	2004-02-16 05:14:17.000000000 -0800
+++ linux-2.4.25-rc3/lib/vsprintf.c	2004-02-16 05:14:20.000000000 -0800
@@ -248,6 +248,18 @@
 				/* 'z' support added 23/7/1999 S.H.    */
 				/* 'z' changed to 'Z' --davidm 1/25/99 */
 
+	/* Reject out-of-range values early */
+	if (unlikely((int) size < 0)) {
+		/* There can be only one.. */
+		static int warn = 1;
+		if (warn) {
+			printk(KERN_WARNING "improper call of vsnprintf!\n");
+			dump_stack();
+			warn = 0;
+		}
+		return 0;
+	}
+
 	str = buf;
 	end = buf + size - 1;
 
@@ -488,7 +500,7 @@
  */
 int vsprintf(char *buf, const char *fmt, va_list args)
 {
-	return vsnprintf(buf, 0xFFFFFFFFUL, fmt, args);
+	return vsnprintf(buf, (~0U)>>1, fmt, args);
 }
 
 
diff -urN linux-2.4.25-rc2/net/core/ethtool.c linux-2.4.25-rc3/net/core/ethtool.c
--- linux-2.4.25-rc2/net/core/ethtool.c	2003-11-28 10:26:21.000000000 -0800
+++ linux-2.4.25-rc3/net/core/ethtool.c	2004-02-16 05:14:20.000000000 -0800
@@ -358,7 +358,7 @@
 {
 	struct ethtool_ringparam ringparam;
 
-	if (!dev->ethtool_ops->get_ringparam)
+	if (!dev->ethtool_ops->set_ringparam)
 		return -EOPNOTSUPP;
 
 	if (copy_from_user(&ringparam, useraddr, sizeof(ringparam)))
diff -urN linux-2.4.25-rc2/net/decnet/dn_rules.c linux-2.4.25-rc3/net/decnet/dn_rules.c
--- linux-2.4.25-rc2/net/decnet/dn_rules.c	2001-12-21 09:42:05.000000000 -0800
+++ linux-2.4.25-rc3/net/decnet/dn_rules.c	2004-02-16 05:14:20.000000000 -0800
@@ -335,7 +335,7 @@
 
 nlmsg_failure:
 rtattr_failure:
-	skb_put(skb, b - skb->tail);
+	skb_trim(skb, b - skb->data);
 	return -1;
 }
 
diff -urN linux-2.4.25-rc2/net/ipv4/fib_rules.c linux-2.4.25-rc3/net/ipv4/fib_rules.c
--- linux-2.4.25-rc2/net/ipv4/fib_rules.c	2001-12-21 09:42:05.000000000 -0800
+++ linux-2.4.25-rc3/net/ipv4/fib_rules.c	2004-02-16 05:14:21.000000000 -0800
@@ -438,7 +438,7 @@
 
 nlmsg_failure:
 rtattr_failure:
-	skb_put(skb, b - skb->tail);
+	skb_trim(skb, b - skb->data);
 	return -1;
 }
 
diff -urN linux-2.4.25-rc2/net/sched/sch_sfq.c linux-2.4.25-rc3/net/sched/sch_sfq.c
--- linux-2.4.25-rc2/net/sched/sch_sfq.c	2003-08-25 04:44:44.000000000 -0700
+++ linux-2.4.25-rc3/net/sched/sch_sfq.c	2004-02-16 05:14:21.000000000 -0800
@@ -341,6 +341,7 @@
 
 	/* Is the slot empty? */
 	if (q->qs[a].qlen == 0) {
+		q->ht[q->hash[a]] = SFQ_DEPTH;
 		a = q->next[a];
 		if (a == old_a) {
 			q->tail = SFQ_DEPTH;
