diff -urpNX build-tools/dontdiff linux-2.5.75/fs/sysfs/dir.c linux-2.5.75-willy/fs/sysfs/dir.c
--- linux-2.5.75/fs/sysfs/dir.c	2003-07-10 14:08:25.000000000 -0600
+++ linux-2.5.75-willy/fs/sysfs/dir.c	2003-08-06 12:25:15.000000000 -0600
@@ -30,7 +30,7 @@ int sysfs_create_dir(struct kobject * ko
 {
 	struct dentry * dentry = NULL;
 	struct dentry * parent;
-	int error = 0;
+	int error;
 
 	if (!kobj)
 		return -EINVAL;
@@ -44,15 +44,18 @@ int sysfs_create_dir(struct kobject * ko
 
 	down(&parent->d_inode->i_sem);
 	dentry = sysfs_get_dentry(parent,kobj->name);
-	if (!IS_ERR(dentry)) {
-		dentry->d_fsdata = (void *)kobj;
-		kobj->dentry = dentry;
-		error = sysfs_create(dentry,(S_IFDIR| S_IRWXU | S_IRUGO | S_IXUGO),
-				     init_dir);
-		if (!error)
-			parent->d_inode->i_nlink++;
-	} else
-		error = PTR_ERR(dentry);
+	error = PTR_ERR(dentry);
+	if (IS_ERR(dentry))
+		goto out;
+	error = sysfs_create(dentry, S_IFDIR | S_IRWXU | S_IRUGO | S_IXUGO,
+			     init_dir);
+	if (error)
+		goto out;
+	dentry->d_fsdata = kobj;
+	kobj->dentry = dentry;
+	parent->d_inode->i_nlink++;
+
+ out:
 	up(&parent->d_inode->i_sem);
 
 	return error;
