diff -urN oldtree/net/core/dev.c newtree/net/core/dev.c
--- oldtree/net/core/dev.c	2006-08-18 15:01:22.000000000 -0400
+++ newtree/net/core/dev.c	2006-08-19 17:16:26.442219000 -0400
@@ -79,6 +79,7 @@
 #include <linux/cpu.h>
 #include <linux/types.h>
 #include <linux/kernel.h>
+#include <linux/ctype.h>
 #include <linux/sched.h>
 #include <linux/mutex.h>
 #include <linux/string.h>
@@ -636,11 +637,25 @@
  */
 int dev_valid_name(const char *name)
 {
-	return !(*name == '\0'
-		 || strlen(name) >= IFNAMSIZ
-		 || !strcmp(name, ".")
-		 || !strcmp(name, "..")
-		 || strchr(name, '/'));
+        if (*name == '\0')       /* null string */
+                return 0;
+ 
+        if (*name == '.') {
+                if (name[1] == '\0')    /* can't have . in directory */
+                        return 0;
+                if (name[1] == '.' && name[2] == '\0')
+                        return 0;       /* or .. */
+        }
+ 
+        /* Check for blanks and slash because it confuses sysfs interfaces */
+        do {
+                if (*name == '/')
+                        return 0;
+                if (isspace(*name))
+                        return 0;
+        } while (*++name);
+
+        return 1;
 }
 
 /**
