diff -u --new-file --recursive v1.1.6/linux/Makefile linux/Makefile
--- v1.1.6/linux/Makefile	Tue Apr 19 22:20:34 1994
+++ linux/Makefile	Tue Apr 19 22:07:43 1994
@@ -1,6 +1,6 @@
 VERSION = 1
 PATCHLEVEL = 1
-SUBLEVEL = 6
+SUBLEVEL = 7
 
 all:	Version zImage
 
diff -u --new-file --recursive v1.1.6/linux/mm/memory.c linux/mm/memory.c
--- v1.1.6/linux/mm/memory.c	Tue Apr 19 10:53:05 1994
+++ linux/mm/memory.c	Tue Apr 19 22:07:30 1994
@@ -916,11 +916,23 @@
 		return;
 	}
 	if (address < PAGE_SIZE) {
-		printk("Unable to handle kernel NULL pointer dereference");
+		printk(KERN_ALERT "Unable to handle kernel NULL pointer dereference");
 		pg0[0] = PAGE_SHARED;
 	} else
-		printk("Unable to handle kernel paging request");
-	printk(" at address %08lx\n",address);
+		printk(KERN_ALERT "Unable to handle kernel paging request");
+	printk(" at kernel address %08lx\n",address);
+	address += TASK_SIZE;
+	__asm__("movl %%cr3,%0" : "=r" (user_esp));
+	printk(KERN_ALERT "current->tss.cr3 = %08lx, %%cr3 = %08lx\n",
+		current->tss.cr3, user_esp);
+	user_esp = ((unsigned long *) user_esp)[address >> 22];
+	printk(KERN_ALERT "*pde = %08lx\n", user_esp);
+	if (user_esp & PAGE_PRESENT) {
+		user_esp &= PAGE_MASK;
+		address &= 0x003ff000;
+		user_esp = ((unsigned long *) user_esp)[address >> PAGE_SHIFT];
+		printk(KERN_ALERT "*pte = %08lx\n", user_esp);
+	}
 	die_if_kernel("Oops", regs, error_code);
 	do_exit(SIGKILL);
 }
diff -u --new-file --recursive v1.1.6/linux/net/inet/raw.c linux/net/inet/raw.c
--- v1.1.6/linux/net/inet/raw.c	Tue Apr 19 22:20:35 1994
+++ linux/net/inet/raw.c	Tue Apr 19 21:58:43 1994
@@ -197,6 +197,9 @@
 	if (sin.sin_port == 0) 
 		sin.sin_port = sk->protocol;
   
+	if (sin.sin_addr.s_addr == INADDR_ANY)
+		sin.sin_addr.s_addr = ip_my_addr();
+
 	if (sk->broadcast == 0 && ip_chk_addr(sin.sin_addr.s_addr)==IS_BROADCAST)
 		return -EACCES;
 
diff -u --new-file --recursive v1.1.6/linux/net/inet/sock.c linux/net/inet/sock.c
--- v1.1.6/linux/net/inet/sock.c	Tue Apr 19 22:20:36 1994
+++ linux/net/inet/sock.c	Tue Apr 19 21:58:43 1994
@@ -1144,6 +1144,7 @@
   {
   	struct sock *sk=(struct sock *)newsock->data;
   	newsock->data=NULL;
+  	sk->dead = 1;
   	destroy_sock(sk);
   }
   
diff -u --new-file --recursive v1.1.6/linux/net/inet/udp.c linux/net/inet/udp.c
--- v1.1.6/linux/net/inet/udp.c	Tue Apr 19 22:20:38 1994
+++ linux/net/inet/udp.c	Tue Apr 19 21:58:43 1994
@@ -35,6 +35,7 @@
  *		Alan Cox	:	No wakeup calls. Instead we now use the callbacks.
  *		Alan Cox	:	Use ip_tos and ip_ttl
  *		Alan Cox	:	SNMP Mibs
+ *		Alan Cox	:	MSG_DONTROUTE, and 0.0.0.0 support.
  *
  *
  *		This program is free software; you can redistribute it and/or
@@ -395,6 +396,10 @@
   	 *	BSD socket semantics. You must set SO_BROADCAST to permit
   	 *	broadcasting of data.
   	 */
+  	 
+  	if(sin.sin_addr.s_addr==INADDR_ANY)
+  		sin.sin_addr.s_addr=ip_my_addr();
+  		
   	if(!sk->broadcast && ip_chk_addr(sin.sin_addr.s_addr)==IS_BROADCAST)
 	    	return -EACCES;			/* Must turn broadcast on first */
 
