From: Herbert Poetzl (herbert_at_13thfloor.at)
Date: Sun 22 Dec 2002 - 01:46:35 GMT
On Sat, Dec 21, 2002 at 07:49:26PM -0500, tedsuo wrote:
> > >     Hi, we got strange bug with our server during the period after the
> > >    reboot to kernel 2.4.20 with the CTX16 patch for vserver. The
> > >    server has crash many times (5 in a day). We have found that AMD
> > >    machine running VIA Technologies, Inc. VT8363/8365 [KT133/KM133] (rev
> > >    03) were not compatible with kernel 2.4.20. It seem that there is a
> > >    bug between the kernel compatibility with the AMD hardware. Running
> > >    lspci can show you the version. I was wondering if it is possible to
> > >    get a ctx16 patch for linux 2.4.19 kernel. We do not confirm that
> > >    kernel 2.4.20 is 100% unstable with these machine but we will do
> > >    troubleshooting and find out if this kernel 2.4.20 is really unstable
> > >    with this hardware.
> >
> > please try to patch the acpi in for athlon based systems ...
> > (you can find a patchset at
> http://www.13thfloor.at/VServer/patches-2.4.20/)
> >
> 
> any way to get ctx16 patch for linux 2.4.19 kernel??
here is your patch ... (everithing except whitespace)
apply it after the 2.4.19ctx15 patch ...
best,
Herbert
--- cut here ---
diff -NurbP --minimal linux-2.4.20-ctx15/Makefile linux-2.4.20-ctx16/Makefile
--- linux-2.4.20-ctx15/Makefile	Mon Dec 16 19:54:35 2002
+++ linux-2.4.20-ctx16/Makefile	Mon Dec 16 19:52:25 2002
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 4
 SUBLEVEL = 19
-EXTRAVERSION =ctx-15
+EXTRAVERSION =ctx-16
 
 KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
diff -NurbP --minimal linux-2.4.20-ctx15/include/net/route.h linux-2.4.20-ctx16/include/net/route.h
--- linux-2.4.20-ctx15/include/net/route.h	Mon Dec 16 19:54:36 2002
+++ linux-2.4.20-ctx16/include/net/route.h	Mon Dec 16 19:52:25 2002
@@ -164,14 +164,20 @@
 static inline int ip_route_connect(struct rtable **rp, u32 dst, u32 src, u32 tos, int oif)
 {
         int err;
-	if (current->ip_info != NULL){
-		__u32 ipv4root = current->ip_info->ipv4[0];
+	struct iproot_info *ip_info = current->ip_info;
+	if (ip_info != NULL){
+		__u32 ipv4root = ip_info->ipv4[0];
                 if (ipv4root != 0){
                         if (src == 0){
                                 src = dst == 0x0100007f
                                         ? 0x0100007f: ipv4root;
-			}else if (ipv4root != src){
-				return -EPERM;
+			}else{
+				int n=ip_info->nbipv4;
+				int i;
+				for (i=0; i<n; i++){
+					if (ip_info->ipv4[i] == src) break;
+				}
+				if (i==n) return -EPERM;
                         }
                         if (dst == 0x0100007f && current->s_context != 0){
                                 dst = ipv4root;