diff -u --recursive --new-file v1.3.7/linux/CREDITS linux/CREDITS
--- v1.3.7/linux/CREDITS	Fri Jul  7 08:54:43 1995
+++ linux/CREDITS	Fri Jul  7 12:29:29 1995
@@ -233,6 +233,13 @@
 S: S-143 32 VARBY
 S: Sweden
 
+N: Paal-Kristian Engstad
+E: engstad@funcom.com
+D: Wrote smbfs (to mount WfW, NT and OS/2 network drives.)
+S: Oscars gt. 35
+S: N-0258 OSLO
+S: Norway
+
 N: Doug Evans
 E: dje@cygnus.com
 D: Wrote Xenix FS (part of standard kernel since 0.99.15)
@@ -451,6 +458,14 @@
 N: Rudolf Koenig
 E: rfkoenig@immd4.informatik.uni-erlangen.de
 D: The Linux Support Team Erlangen
+
+N: Markus Kuhn
+E: mskuhn@cip.informatik.uni-erlangen.de
+W: http://wwwcip.informatik.uni-erlangen.de/user/mskuhn
+D: Unicode, time, standards
+S: Schlehenweg 9
+S: D-91080 Uttenreuth
+S: Germany
 
 N: Bas Laarhoven
 E: bas@vimec.nl
diff -u --recursive --new-file v1.3.7/linux/Makefile linux/Makefile
--- v1.3.7/linux/Makefile	Fri Jul  7 08:54:43 1995
+++ linux/Makefile	Fri Jul  7 13:17:32 1995
@@ -1,6 +1,6 @@
 VERSION = 1
 PATCHLEVEL = 3
-SUBLEVEL = 7
+SUBLEVEL = 8
 
 ARCH = i386
 
diff -u --recursive --new-file v1.3.7/linux/arch/i386/config.in linux/arch/i386/config.in
--- v1.3.7/linux/arch/i386/config.in	Fri Jul  7 08:54:44 1995
+++ linux/arch/i386/config.in	Thu Jul  6 18:34:23 1995
@@ -112,7 +112,7 @@
 bool 'Trantor T128/T128F/T228 SCSI support' CONFIG_SCSI_T128 n
 bool 'UltraStor SCSI support' CONFIG_SCSI_ULTRASTOR n
 bool '7000FASST SCSI support' CONFIG_SCSI_7000FASST n
-#bool 'EATA ISA/EISA (DPT PM2011/021/012/022/122/322) support' CONFIG_SCSI_EATA n
+bool 'EATA ISA/EISA (DPT PM2011/021/012/022/122/322) support' CONFIG_SCSI_EATA n
 #bool 'SCSI debugging host adapter' CONFIG_SCSI_DEBUG n
 fi
 
diff -u --recursive --new-file v1.3.7/linux/arch/i386/lib/checksum.c linux/arch/i386/lib/checksum.c
--- v1.3.7/linux/arch/i386/lib/checksum.c	Fri Jul  7 08:54:44 1995
+++ linux/arch/i386/lib/checksum.c	Fri Jul  7 08:54:18 1995
@@ -180,7 +180,7 @@
 	movw %%cx, (%%edi)
 	leal 2(%%edi), %%edi
 	je 6f
-	shll $16,%%edx
+	shll $16,%%ecx
 5:	movb %%fs:(%%esi), %%cl
 	movb %%cl, (%%edi)
 6:	addl %%ecx, %%eax
@@ -275,7 +275,7 @@
 	movw %%cx, (%%edi)
 	leal 2(%%edi), %%edi
 	je 6f
-	shll $16,%%edx
+	shll $16,%%ecx
 5:	movb (%%esi), %%cl
 	movb %%cl, (%%edi)
 6:	addl %%ecx, %%eax
diff -u --recursive --new-file v1.3.7/linux/drivers/net/lance.c linux/drivers/net/lance.c
--- v1.3.7/linux/drivers/net/lance.c	Fri Jul  7 08:54:47 1995
+++ linux/drivers/net/lance.c	Fri Jul  7 11:45:45 1995
@@ -1000,7 +1000,6 @@
 			}
 			skb->dev = dev;
 			skb_reserve(skb,2);	/* 16 byte align */
-			skb_put(skb,pkt_len);	/* Make room */
 			eth_copy_and_sum(skb_put(skb,pkt_len),
 				   (unsigned char *)(lp->rx_ring[entry].base & 0x00ffffff),
 				   pkt_len,0);
Binary files v1.3.7/linux/drivers/scsi/aic7770 and linux/drivers/scsi/aic7770 differ
diff -u --recursive --new-file v1.3.7/linux/drivers/scsi/eata.c linux/drivers/scsi/eata.c
--- v1.3.7/linux/drivers/scsi/eata.c	Thu Jun 29 19:02:49 1995
+++ linux/drivers/scsi/eata.c	Thu Jul  6 18:34:23 1995
@@ -1,6 +1,9 @@
 /*
  *      eata.c - Low-level driver for EATA/DMA SCSI host adapters.
  *
+ *       6 Jul 1995 rev. 2.01 for linux 1.3.7
+ *          Update required by the new /proc/scsi support.
+ *
  *      11 Mar 1995 rev. 2.00 for linux 1.2.0
  *          Fixed a bug which prevented media change detection for removable
  *          disk drives.
@@ -118,6 +121,7 @@
 #include <linux/ioport.h>
 #include <asm/io.h>
 #include <asm/system.h>
+#include <linux/proc_fs.h>
 #include "../block/blk.h"
 #include "scsi.h"
 #include "hosts.h"
diff -u --recursive --new-file v1.3.7/linux/drivers/scsi/eata.h linux/drivers/scsi/eata.h
--- v1.3.7/linux/drivers/scsi/eata.h	Thu Jun 29 19:02:49 1995
+++ linux/drivers/scsi/eata.h	Thu Jul  6 18:34:23 1995
@@ -7,16 +7,19 @@
 
 #include <linux/scsicam.h>
 
-#define EATA_VERSION "2.00.00"
-
 int eata2x_detect(Scsi_Host_Template *);
 int eata2x_queuecommand(Scsi_Cmnd *, void (*done)(Scsi_Cmnd *));
 int eata2x_abort(Scsi_Cmnd *);
 int eata2x_reset(Scsi_Cmnd *);
 
+#define EATA_VERSION "2.01.00"
+
 #define EATA {                                                 \
 		NULL, /* Ptr for modules */                    \
 		NULL, /* usage count for modules */	       \
+		NULL,                                          \
+		"eata2x",                                      \
+		PROC_SCSI_EATA2X,                              \
 		"EATA/DMA 2.0x rev. " EATA_VERSION " ",        \
 		eata2x_detect,				       \
 		NULL, /* Release */     		       \
diff -u --recursive --new-file v1.3.7/linux/fs/binfmt_elf.c linux/fs/binfmt_elf.c
--- v1.3.7/linux/fs/binfmt_elf.c	Thu Jun 29 19:02:54 1995
+++ linux/fs/binfmt_elf.c	Fri Jul  7 13:11:37 1995
@@ -53,11 +53,17 @@
 static int elf_core_dump(long signr, struct pt_regs * regs);
 extern int dump_fpu (elf_fpregset_t *);
 
+/*
+ * Please do not change the default core dump format to ELF when most people
+ * do not have a gdb capable of interpreting ELF core files.  Once a gdb has
+ * been released that understands ELF, *THEN* switch the core dump format.
+ */
+
 struct linux_binfmt elf_format = {
 #ifndef MODULE
-	NULL, NULL, load_elf_binary, load_elf_library, elf_core_dump
+	NULL, NULL, load_elf_binary, load_elf_library, aout_core_dump
 #else
-	NULL, &mod_use_count_, load_elf_binary, load_elf_library, elf_core_dump
+	NULL, &mod_use_count_, load_elf_binary, load_elf_library, aout_core_dump
 #endif
 };
 
diff -u --recursive --new-file v1.3.7/linux/fs/exec.c linux/fs/exec.c
--- v1.3.7/linux/fs/exec.c	Fri Jul  7 08:54:51 1995
+++ linux/fs/exec.c	Fri Jul  7 13:14:12 1995
@@ -50,7 +50,6 @@
 
 static int load_aout_binary(struct linux_binprm *, struct pt_regs * regs);
 static int load_aout_library(int fd);
-static int aout_core_dump(long signr, struct pt_regs * regs);
 
 extern void dump_thread(struct pt_regs *, struct user *);
 
@@ -163,7 +162,7 @@
  * field, which also makes sure the core-dumps won't be recursive if the
  * dumping of the process results in another error..
  */
-static int aout_core_dump(long signr, struct pt_regs * regs)
+int aout_core_dump(long signr, struct pt_regs * regs)
 {
 	struct inode * inode = NULL;
 	struct file file;
diff -u --recursive --new-file v1.3.7/linux/fs/ext2/namei.c linux/fs/ext2/namei.c
--- v1.3.7/linux/fs/ext2/namei.c	Wed Mar 22 10:33:59 1995
+++ linux/fs/ext2/namei.c	Fri Jul  7 08:46:20 1995
@@ -759,7 +759,7 @@
 	for (l = 0; l < inode->i_sb->s_blocksize - 1 &&
 	     symname [l]; l++)
 		;
-	if (l >= EXT2_N_BLOCKS * sizeof (unsigned long)) {
+	if (l >= EXT2_N_BLOCKS * sizeof (__u32)) {
 
 		ext2_debug ("l=%d, normal symlink\n", l);
 
diff -u --recursive --new-file v1.3.7/linux/fs/isofs/dir.c linux/fs/isofs/dir.c
--- v1.3.7/linux/fs/isofs/dir.c	Fri Jul  7 08:54:51 1995
+++ linux/fs/isofs/dir.c	Fri Jul  7 13:11:38 1995
@@ -231,6 +231,7 @@
 			/* rrflag == 1 means that we have a new name (kmalloced) */
 			if (rrflag == 1) {
 				rrflag = filldir(dirent, name, len, filp->f_pos, inode_number);
+				dcache_add(inode, name, len, inode_number);
 				kfree(name); /* this was allocated in get_r_r_filename.. */
 				if (rrflag < 0)
 					break;
@@ -243,6 +244,7 @@
 			len = isofs_name_translate(name, len, tmpname);
 			if (filldir(dirent, tmpname, len, filp->f_pos, inode_number) < 0)
 				break;
+			dcache_add(inode, tmpname, len, inode_number);
 			filp->f_pos += de_len;
 			continue;
 		}
@@ -250,6 +252,7 @@
 		if (filldir(dirent, name, len, filp->f_pos, inode_number) < 0)
 			break;
 
+		dcache_add(inode, name, len, inode_number);
 		filp->f_pos += de_len;
 		continue;
 	}
diff -u --recursive --new-file v1.3.7/linux/include/asm-alpha/socket.h linux/include/asm-alpha/socket.h
--- v1.3.7/linux/include/asm-alpha/socket.h	Thu Jan  1 02:00:00 1970
+++ linux/include/asm-alpha/socket.h	Fri Jul  7 13:09:26 1995
@@ -0,0 +1,31 @@
+#ifndef _ASM_SOCKET_H
+#define _ASM_SOCKET_H
+
+/* For setsockoptions(2) */
+/*
+ * Note: we only bother about making the SOL_SOCKET options
+ * same as OSF/1, as that's all that "normal" programs are
+ * likely to set.  We don't necessarily want to be binary
+ * compatible with _everything_. 
+ */
+#define SOL_SOCKET	0xffff
+
+#define SO_DEBUG	0x0001
+#define SO_REUSEADDR	0x0004
+#define SO_KEEPALIVE	0x0008
+#define SO_DONTROUTE	0x0010
+#define SO_BROADCAST	0x0020
+#define SO_LINGER	0x0080
+#define SO_OOBINLINE	0x0100
+/* To add :#define SO_REUSEPORT 0x0200 */
+
+#define SO_TYPE		0x1008
+#define SO_ERROR	0x1007
+#define SO_SNDBUF	0x1001
+#define SO_RCVBUF	0x1002
+
+/* linux-specific, might as well be the same as on i386 */
+#define SO_NO_CHECK	11
+#define SO_PRIORITY	12
+
+#endif /* _ASM_SOCKET_H */
diff -u --recursive --new-file v1.3.7/linux/include/asm-i386/socket.h linux/include/asm-i386/socket.h
--- v1.3.7/linux/include/asm-i386/socket.h	Thu Jan  1 02:00:00 1970
+++ linux/include/asm-i386/socket.h	Fri Jul  7 13:09:26 1995
@@ -0,0 +1,22 @@
+#ifndef _ASM_SOCKET_H
+#define _ASM_SOCKET_H
+
+/* For setsockoptions(2) */
+#define SOL_SOCKET	1
+
+#define SO_DEBUG	1
+#define SO_REUSEADDR	2
+#define SO_TYPE		3
+#define SO_ERROR	4
+#define SO_DONTROUTE	5
+#define SO_BROADCAST	6
+#define SO_SNDBUF	7
+#define SO_RCVBUF	8
+#define SO_KEEPALIVE	9
+#define SO_OOBINLINE	10
+#define SO_NO_CHECK	11
+#define SO_PRIORITY	12
+#define SO_LINGER	13
+/* To add :#define SO_REUSEPORT 14 */
+
+#endif /* _ASM_SOCKET_H */
diff -u --recursive --new-file v1.3.7/linux/include/linux/binfmts.h linux/include/linux/binfmts.h
--- v1.3.7/linux/include/linux/binfmts.h	Fri Jun 16 22:02:55 1995
+++ linux/include/linux/binfmts.h	Fri Jul  7 13:14:12 1995
@@ -44,6 +44,7 @@
 	char * addr, unsigned long count, int to_kmem);
 
 extern int open_inode(struct inode * inode, int mode);
+extern int aout_core_dump(long signr, struct pt_regs * regs);
 
 extern void flush_old_exec(struct linux_binprm * bprm);
 extern unsigned long setup_arg_pages(unsigned long text_size,unsigned long * page);
diff -u --recursive --new-file v1.3.7/linux/include/linux/proc_fs.h linux/include/linux/proc_fs.h
--- v1.3.7/linux/include/linux/proc_fs.h	Fri Jun 30 16:22:30 1995
+++ linux/include/linux/proc_fs.h	Thu Jul  6 18:34:23 1995
@@ -127,6 +127,7 @@
 	PROC_SCSI_NCR53C7xx,
 	PROC_SCSI_ULTRASTOR,
 	PROC_SCSI_7000FASST,
+	PROC_SCSI_EATA2X,
 	PROC_SCSI_SCSI_DEBUG,	
 	PROC_SCSI_NOT_PRESENT,
 	PROC_SCSI_FILE,                        /* I'm asuming here that we */
diff -u --recursive --new-file v1.3.7/linux/include/linux/sched.h linux/include/linux/sched.h
--- v1.3.7/linux/include/linux/sched.h	Fri Jul  7 08:54:54 1995
+++ linux/include/linux/sched.h	Fri Jul  7 11:12:17 1995
@@ -225,7 +225,7 @@
  * your own risk!. Base=0, limit=0x1fffff (=2MB)
  */
 #define INIT_TASK \
-/* state etc */	{ 0,15,15,0,0,0,0, \
+/* state etc */	{ 0,15*HZ/100,15*HZ/100,0,0,0,0, \
 /* debugregs */ { 0, },            \
 /* exec domain */&default_exec_domain, \
 /* binfmt */	NULL, \
diff -u --recursive --new-file v1.3.7/linux/include/linux/socket.h linux/include/linux/socket.h
--- v1.3.7/linux/include/linux/socket.h	Tue Jun  6 11:22:12 1995
+++ linux/include/linux/socket.h	Fri Jul  7 13:09:31 1995
@@ -1,6 +1,7 @@
 #ifndef _LINUX_SOCKET_H
 #define _LINUX_SOCKET_H
 
+#include <asm/socket.h>			/* arch-dependent defines	*/
 #include <linux/sockios.h>		/* the SIOCxxx I/O controls	*/
 
 
@@ -59,7 +60,6 @@
 #define MSG_DONTROUTE	4
 
 /* Setsockoptions(2) level. Thanks to BSD these must match IPPROTO_xxx */
-#define SOL_SOCKET	1
 #define SOL_IP		0
 #define SOL_IPX		256
 #define SOL_AX25	257
@@ -67,22 +67,6 @@
 #define	SOL_NETROM	259
 #define SOL_TCP		6
 #define SOL_UDP		17
-
-/* For setsockoptions(2) */
-#define SO_DEBUG	1
-#define SO_REUSEADDR	2
-#define SO_TYPE		3
-#define SO_ERROR	4
-#define SO_DONTROUTE	5
-#define SO_BROADCAST	6
-#define SO_SNDBUF	7
-#define SO_RCVBUF	8
-#define SO_KEEPALIVE	9
-#define SO_OOBINLINE	10
-#define SO_NO_CHECK	11
-#define SO_PRIORITY	12
-#define SO_LINGER	13
-/* To add :#define SO_REUSEPORT 14 */
 
 /* IP options */
 #define IP_TOS		1
diff -u --recursive --new-file v1.3.7/linux/kernel/ksyms.c linux/kernel/ksyms.c
--- v1.3.7/linux/kernel/ksyms.c	Fri Jul  7 08:54:56 1995
+++ linux/kernel/ksyms.c	Fri Jul  7 13:11:37 1995
@@ -176,6 +176,7 @@
 	X(__wait_on_buffer),
 	X(dcache_lookup),
 	X(dcache_add),
+	X(aout_core_dump),
 
 	/* device registration */
 	X(register_chrdev),
diff -u --recursive --new-file v1.3.7/linux/net/appletalk/ddp.c linux/net/appletalk/ddp.c
--- v1.3.7/linux/net/appletalk/ddp.c	Fri Jul  7 08:54:56 1995
+++ linux/net/appletalk/ddp.c	Fri Jul  7 13:09:31 1995
@@ -958,7 +958,7 @@
 			}
 			break;
 			
-		case SOL_SOCKET:		
+		case SOL_SOCKET:
 			return sock_setsockopt(sk,level,optname,optval,optlen);
 
 		default:
diff -u --recursive --new-file v1.3.7/linux/net/core/dev.c linux/net/core/dev.c
--- v1.3.7/linux/net/core/dev.c	Fri Jul  7 08:54:56 1995
+++ linux/net/core/dev.c	Fri Jul  7 12:31:31 1995
@@ -356,7 +356,8 @@
 
 	save_flags(flags);
 	cli();	
-	if (dev_nit && !where) 
+	if (/*dev_nit && */!where) 	/* Always keep order. It helps other hosts
+					   far more than it costs us */
 	{
 		skb_queue_tail(dev->buffs + pri,skb);
 		skb_device_unlock(skb);		/* Buffer is on the device queue and can be freed safely */
@@ -381,6 +382,7 @@
 				if ((skb2 = skb_clone(skb, GFP_ATOMIC)) == NULL)
 					break;
 				skb2->h.raw = skb2->data + dev->hard_header_len;
+				skb2->mac.raw = skb2->data;
 				ptype->func(skb2, skb->dev, ptype);
 				nitcount--;
 			}
diff -u --recursive --new-file v1.3.7/linux/net/core/skbuff.c linux/net/core/skbuff.c
--- v1.3.7/linux/net/core/skbuff.c	Fri Jul  7 08:54:57 1995
+++ linux/net/core/skbuff.c	Fri Jul  7 12:22:10 1995
@@ -613,6 +613,7 @@
 	n->when=skb->when;
 	n->dev=skb->dev;
 	n->h.raw=skb->h.raw+offset;
+	n->mac.raw=skb->mac.raw+offset;
 	n->ip_hdr=(struct iphdr *)(((char *)skb->ip_hdr)+offset);
 	n->saddr=skb->saddr;
 	n->daddr=skb->daddr;
@@ -674,8 +675,11 @@
 
 struct sk_buff *dev_alloc_skb(unsigned int length)
 {
-	struct sk_buff *skb=alloc_skb(length+16, GFP_ATOMIC);
-	skb_reserve(skb,16);
+	struct sk_buff *skb;
+
+	skb = alloc_skb(length+16, GFP_ATOMIC);
+	if (skb)
+		skb_reserve(skb,16);
 	return skb;
 }
 
diff -u --recursive --new-file v1.3.7/linux/net/core/sock.c linux/net/core/sock.c
--- v1.3.7/linux/net/core/sock.c	Fri Jul  7 08:54:57 1995
+++ linux/net/core/sock.c	Fri Jul  7 13:09:31 1995
@@ -129,7 +129,7 @@
   	if(err)
   		return err;
   	
-  	val = get_fs_long((unsigned long *)optval);
+  	val = get_user((int *)optval);
   	valbool = val?1:0;
   	
   	switch(optname) 
diff -u --recursive --new-file v1.3.7/linux/net/ipv4/af_inet.c linux/net/ipv4/af_inet.c
--- v1.3.7/linux/net/ipv4/af_inet.c	Fri Jul  7 08:54:57 1995
+++ linux/net/ipv4/af_inet.c	Fri Jul  7 11:15:18 1995
@@ -1280,7 +1280,7 @@
 {
 	struct sock *sk=(struct sock *)sock->data;
 	int err;
-	int tmp;
+	int pid;
 
 	switch(cmd) 
 	{
@@ -1289,11 +1289,11 @@
 			err=verify_area(VERIFY_READ,(int *)arg,sizeof(long));
 			if(err)
 				return err;
-			tmp = get_fs_long((int *) arg);
+			pid = get_user((int *) arg);
 			/* see inet_fcntl */
-			if (current->pid != tmp && current->pgrp != -tmp && !suser())
+			if (current->pid != pid && current->pgrp != -pid && !suser())
 				return -EPERM;
-			sk->proc = tmp;
+			sk->proc = pid;
 			return(0);
 		case FIOGETOWN:
 		case SIOCGPGRP:
diff -u --recursive --new-file v1.3.7/linux/net/ipv4/ip.c linux/net/ipv4/ip.c
--- v1.3.7/linux/net/ipv4/ip.c	Fri Jul  7 08:54:57 1995
+++ linux/net/ipv4/ip.c	Thu Jul  6 18:29:02 1995
@@ -1660,7 +1660,7 @@
 	extern struct device loopback_dev;
 	struct device *dev=&loopback_dev;
 	int len=skb->len-old_dev->hard_header_len;
-	struct sk_buff *newskb=dev_alloc_skb(len+dev->hard_header_len);
+	struct sk_buff *newskb=dev_alloc_skb(len+dev->hard_header_len+15);
 	
 	if(newskb==NULL)
 		return;
diff -u --recursive --new-file v1.3.7/linux/net/ipv4/tcp.c linux/net/ipv4/tcp.c
--- v1.3.7/linux/net/ipv4/tcp.c	Fri Jul  7 08:54:57 1995
+++ linux/net/ipv4/tcp.c	Fri Jul  7 13:09:32 1995
@@ -2020,7 +2020,7 @@
 	while (len > 0) 
 	{
 		struct sk_buff * skb;
-		unsigned long offset;
+		u32 offset;
 	
 		/*
 		 * Are we at urgent data? Stop if we have read anything.
@@ -2125,7 +2125,7 @@
 		
 		if (sk->urg_data) 
 		{
-			unsigned long urg_offset = sk->urg_seq - *seq;
+			u32 urg_offset = sk->urg_seq - *seq;
 			if (urg_offset < used) 
 			{
 				if (!urg_offset) 
@@ -4085,7 +4085,7 @@
  
 static void tcp_check_urg(struct sock * sk, struct tcphdr * th)
 {
-	unsigned long ptr = ntohs(th->urg_ptr);
+	u32 ptr = ntohs(th->urg_ptr);
 
 	if (ptr)
 		ptr--;
@@ -4118,7 +4118,7 @@
 extern __inline__ int tcp_urg(struct sock *sk, struct tcphdr *th,
 	unsigned long saddr, unsigned long len)
 {
-	unsigned long ptr;
+	u32 ptr;
 
 	/*
 	 *	Check if we get a new urgent pointer - normally not 
diff -u --recursive --new-file v1.3.7/linux/net/ipx/af_ipx.c linux/net/ipx/af_ipx.c
--- v1.3.7/linux/net/ipx/af_ipx.c	Fri Jul  7 08:54:57 1995
+++ linux/net/ipx/af_ipx.c	Fri Jul  7 13:09:32 1995
@@ -1298,7 +1298,7 @@
 			}
 			break;
 			
-		case SOL_SOCKET:		
+		case SOL_SOCKET:
 			return sock_setsockopt(sk,level,optname,optval,optlen);
 
 		default:
