diff -Nur linux-2.6.0.devfs.1/fs/devfs/base.c linux-2.6.0.devfs.2/fs/devfs/base.c
--- linux-2.6.0.devfs.1/fs/devfs/base.c	2003-12-28 13:28:56.000000000 +0800
+++ linux-2.6.0.devfs.2/fs/devfs/base.c	2003-12-28 01:05:20.000000000 +0800
@@ -756,8 +756,15 @@
 
 typedef struct devfs_entry *devfs_handle_t;
 
+struct devfs_options {
+	char *name;
+	unsigned int mask;
+	unsigned int *opt;
+};
+
+
 struct directory_type {
-	rwlock_t lock;		/*  Lock for searching(R)/updating(W)   */
+	rwlock_t lock;		/* Lock for searching(R)/updating(W) */
 	struct devfs_entry *first;
 	struct devfs_entry *last;
 	unsigned char no_more_additions:1;
@@ -816,8 +823,8 @@
 static struct devfs_entry *root_entry;
 
 struct devfsd_buf_entry {
-	struct devfs_entry *de;		/*  The name is generated with this */
-	unsigned short type;		/*  The type of event               */
+	struct devfs_entry *de;		/* The name is generated with this */
+	unsigned short type;		/* The type of event               */
 	umode_t mode;
 	uid_t uid;
 	gid_t gid;
@@ -827,7 +834,7 @@
 /* This structure is for the mounted devfs */
 struct fs_info {
 	struct super_block *sb;
-	spinlock_t devfsd_buffer_lock;	/*  Lock when inserting/deleting events  */
+	spinlock_t devfsd_buffer_lock;	/* Lock when inserting/deleting events */
 	struct devfsd_buf_entry *devfsd_first_event;
 	struct devfsd_buf_entry *devfsd_last_event;
 	volatile int devfsd_sleeping;
@@ -837,8 +844,8 @@
 	struct devfsd_notify_struct *devfsd_info;
 	volatile unsigned long devfsd_event_mask;
 	atomic_t devfsd_overrun_count;
-	wait_queue_head_t devfsd_wait_queue;	 /*  Wake devfsd on input    */
-	wait_queue_head_t revalidate_wait_queue; /*  Wake when devfsd sleeps */
+	wait_queue_head_t devfsd_wait_queue;	 /* Wake devfsd on input    */
+	wait_queue_head_t revalidate_wait_queue; /* Wake when devfsd sleeps */
 };
 
 static struct fs_info fs_info = {.devfsd_buffer_lock = SPIN_LOCK_UNLOCKED};
@@ -994,7 +1001,8 @@
 	if (name && (namelen < 1))
 		namelen = strlen(name);
 
-	if ((new = kmalloc(sizeof *new + namelen, GFP_KERNEL)) == NULL)
+	new = kmalloc(sizeof *new + namelen, GFP_KERNEL);
+	if (!new)
 		return NULL;
 
 	memset(new, 0, sizeof *new + namelen);	/*  Will set '\0' on name  */
@@ -1095,11 +1103,12 @@
 	struct devfs_entry *new;
 	static spinlock_t root_lock = SPIN_LOCK_UNLOCKED;
 
-	/* Always ensure the root is created */
+	/*  Always ensure the root is created  */
 	if (root_entry)
 		return root_entry;
 
-	if ((new = _devfs_alloc_entry(NULL, 0, MODE_DIR)) == NULL)
+	new = _devfs_alloc_entry(NULL, 0, MODE_DIR);
+	if (!new)
 		return NULL;
 
 	spin_lock(&root_lock);
@@ -1111,8 +1120,9 @@
 	root_entry = new;
 	spin_unlock(&root_lock);
 
-	/* And create the entry for ".devfsd" */
-	if ((new = _devfs_alloc_entry(".devfsd", 0, S_IFCHR | S_IRUSR | S_IWUSR)) == NULL)
+	/*  And create the entry for ".devfsd"  */
+	new = _devfs_alloc_entry(".devfsd", 0, S_IFCHR | S_IRUSR | S_IWUSR);
+	if (!new)
 		return NULL;
 
 	new->u.cdev.dev = devfs_alloc_devnum(S_IFCHR | S_IRUSR | S_IWUSR);
@@ -1120,7 +1130,8 @@
 	_devfs_append_entry(root_entry, new, NULL);
 
 #ifdef CONFIG_DEVFS_DEBUG
-	if ((new = _devfs_alloc_entry(".stat", 0, S_IFCHR | S_IRUGO | S_IWUGO)) == NULL)
+	new = _devfs_alloc_entry(".stat", 0, S_IFCHR | S_IRUGO | S_IWUGO);
+	if (!new)
 		return NULL;
 
 	new->u.cdev.dev = devfs_alloc_devnum(S_IFCHR | S_IRUGO | S_IWUGO);
@@ -1175,10 +1186,10 @@
 {
 	int next_pos = 0;
 
-	if (dir == NULL)
+	if (!dir)
 		dir = _devfs_get_root_entry();
 
-	if (dir == NULL)
+	if (!dir)
 		return NULL;
 
 	devfs_get(dir);
@@ -1189,7 +1200,8 @@
 	for (; namelen > 0; name += next_pos, namelen -= next_pos) {
 		struct devfs_entry *de, *old = NULL;
 
-		if ((de = _devfs_descend(dir, name, namelen, &next_pos)) == NULL) {
+		de = _devfs_descend(dir, name, namelen, &next_pos);
+		if (!de) {
 			de = _devfs_alloc_entry(name, next_pos, MODE_DIR);
 			devfs_get(de);
 
@@ -1230,12 +1242,14 @@
 	struct devfs_entry *de;
 
 	namelen = strlen(name);
-	if ((*dir = _devfs_make_parent_for_leaf(*dir, name, namelen, &leaf_pos)) == NULL) {
+	*dir = _devfs_make_parent_for_leaf(*dir, name, namelen, &leaf_pos);
+	if (!(*dir)) {
 		PRINTK("(%s): could not create parent path\n", name);
 		return NULL;
 	}
 
-	if ((de = _devfs_alloc_entry(name + leaf_pos, namelen - leaf_pos, mode)) == NULL) {
+	de = _devfs_alloc_entry(name + leaf_pos, namelen - leaf_pos, mode);
+	if (!de) {
 		PRINTK("(%s): could not allocate entry\n", name);
 		devfs_put(*dir);
 		return NULL;
@@ -1250,10 +1264,10 @@
 {
 	int next_pos = 0;
 
-	if (dir == NULL)
+	if (!dir)
 		dir = _devfs_get_root_entry();
 
-	if (dir == NULL)
+	if (!dir)
 		return NULL;
 
 	devfs_get(dir);
@@ -1265,7 +1279,8 @@
 			return NULL;
 		}
 
-		if ((de = _devfs_descend(dir, name, namelen, &next_pos)) == NULL) {
+		de = _devfs_descend(dir, name, namelen, &next_pos);
+		if (!de) {
 			devfs_put(dir);
 			return NULL;
 		}
@@ -1333,7 +1348,7 @@
 
 static struct devfs_entry * get_devfs_entry_from_vfs_inode(struct inode *inode)
 {
-	if (inode == NULL)
+	if (!inode)
 		return NULL;
 
 	VERIFY_ENTRY((struct devfs_entry *) inode->u.generic_ip);
@@ -1360,7 +1375,7 @@
 	spin_unlock(&dcache_lock);
 
 	/* Forcefully remove the inode */
-	if (dentry->d_inode != NULL)
+	if (dentry->d_inode)
 		dentry->d_inode->i_nlink = 0;
 
 	d_drop(dentry);
@@ -1378,21 +1393,21 @@
 	struct task_struct *p = current;
 
 	if (p == fs_info->devfsd_task)
-		return (TRUE);
+		return TRUE;
 
 	if (process_group(p) == fs_info->devfsd_pgrp)
-		return (TRUE);
+		return TRUE;
 
 	read_lock(&tasklist_lock);
 	for (; p != &init_task; p = p->real_parent) {
 		if (p == fs_info->devfsd_task) {
 			read_unlock(&tasklist_lock);
-			return (TRUE);
+			return TRUE;
 		}
 	}
 	read_unlock(&tasklist_lock);
 
-	return (FALSE);
+	return FALSE;
 }
 
 /**
@@ -1417,13 +1432,13 @@
 	DECLARE_WAITQUEUE(wait, current);
 
 	if (fs_info->devfsd_task == NULL)
-		return (TRUE);
+		return TRUE;
 
 	if (devfsd_queue_empty(fs_info) && fs_info->devfsd_sleeping)
 		return TRUE;
 
 	if (is_devfsd_or_child(fs_info))
-		return (FALSE);
+		return FALSE;
 
 	set_current_state(TASK_UNINTERRUPTIBLE);
 	add_wait_queue(&fs_info->revalidate_wait_queue, &wait);
@@ -1435,7 +1450,7 @@
 	remove_wait_queue(&fs_info->revalidate_wait_queue, &wait);
 	__set_current_state(TASK_RUNNING);
 
-	return (TRUE);
+	return TRUE;
 }
 
 /**
@@ -1458,11 +1473,12 @@
 	struct devfs_entry *curr;
 
 	if (!(fs_info->devfsd_event_mask & (1 << type)))
-		return (FALSE);
+		return FALSE;
 
-	if ((entry = kmem_cache_alloc(devfsd_buf_cache, SLAB_KERNEL)) == NULL) {
+	entry = kmem_cache_alloc(devfsd_buf_cache, SLAB_KERNEL);
+	if (!entry) {
 		atomic_inc(&fs_info->devfsd_overrun_count);
-		return (FALSE);
+		return FALSE;
 	}
 
 	for (curr = de; curr != NULL; curr = curr->parent)
@@ -1487,7 +1503,7 @@
 
 	wake_up_interruptible(&fs_info->devfsd_wait_queue);
 
-	return (TRUE);
+	return TRUE;
 }
 
 /**
@@ -1602,7 +1618,7 @@
  *	@de: The entry to unhook.
  *
  *	Returns %TRUE if the entry was unhooked, else %FALSE if it was
- *	 previously unhooked. The caller must have a write lock on the
+ *	 previously unhooked. The caller must have a write lock on thei
  *	 parent directory.
  */
 static int _devfs_unhook(struct devfs_entry *de)
@@ -1614,12 +1630,12 @@
 
 	parent = de->parent;
 
-	if (de->prev == NULL)
+	if (!de->prev)
 		parent->u.dir.first = de->next;
 	else
 		de->prev->next = de->next;
 
-	if (de->next == NULL)
+	if (!de->next)
 		parent->u.dir.last = de->prev;
 	else
 		de->next->prev = de->prev;
@@ -1690,27 +1706,29 @@
 	char *newlink;
 	struct devfs_entry *de;
 
-	if (handle != NULL)
+	if (handle)
 		*handle = NULL;
 
-	if (name == NULL) {
+	if (!name) {
 		PRINTK("(): NULL name pointer\n");
 		return -EINVAL;
 	}
 
-	if (link == NULL) {
+	if (!link) {
 		PRINTK("(%s): NULL link pointer\n", name);
 		return -EINVAL;
 	}
 
 	linklength = strlen(link);
-	if ((newlink = kmalloc(linklength + 1, GFP_KERNEL)) == NULL)
+	newlink = kmalloc(linklength + 1, GFP_KERNEL);
+	if (!newlink)
 		return -ENOMEM;
 
 	memcpy(newlink, link, linklength);
 	newlink[linklength] = '\0';
 
-	if ((de = _devfs_prepare_leaf(&dir, name, S_IFLNK | S_IRUGO | S_IXUGO)) == NULL) {
+	de = _devfs_prepare_leaf(&dir, name, S_IFLNK | S_IRUGO | S_IXUGO);
+	if (!de) {
 		PRINTK("(%s): could not prepare leaf\n", name);
 		kfree(newlink);
 		return -ENOTDIR;
@@ -1720,7 +1738,8 @@
 	de->u.symlink.linkname = newlink;
 	de->u.symlink.length = linklength;
 
-	if ((err = _devfs_append_entry(dir, de, NULL)) != 0) {
+	err = _devfs_append_entry(dir, de, NULL);
+	if (err) {
 		PRINTK("(%s): could not append to parent, err: %d\n", name,
 		       err);
 		devfs_put(dir);
@@ -1735,7 +1754,7 @@
 	spin_unlock(&stat_lock);
 #endif
 
-	if (handle != NULL)
+	if (handle)
 		*handle = de;
 
 	return 0;
@@ -1866,7 +1885,7 @@
 	path[buflen - 1] = '\0';
 
 	/*  Don't prepend root  */
-	if (de->parent == NULL)
+	if (!de->parent)
 		return buflen - 1;
 
 	pos = buflen - de->namelen - 1;
@@ -1922,11 +1941,7 @@
 static int __init devfs_setup(char *str)
 {
 
-	static struct {
-		char *name;
-		unsigned int mask;
-		unsigned int *opt;
-	} devfs_options_tab[] __initdata = {
+	static struct devfs_options devfs_options_tab[] __initdata = {
 #ifdef CONFIG_DEVFS_DEBUG
 		{"dall", DEBUG_ALL, &devfs_debug_init},
 		{"dmod", DEBUG_MODULE_LOAD, &devfs_debug_init},
@@ -2042,15 +2057,15 @@
 	struct fs_info *fs_info = inode->i_sb->s_fs_info;
 
 	de = get_devfs_entry_from_vfs_inode(inode);
-	if (de == NULL)
+	if (!de)
 		return -ENODEV;
 
 	retval = inode_change_ok(inode, iattr);
-	if (retval != 0)
+	if (retval)
 		return retval;
 
 	retval = inode_setattr(inode, iattr);
-	if (retval != 0)
+	if (retval)
 		return retval;
 
 	DPRINTK(DEBUG_I_CHANGE, "(%d): VFS inode: %p  devfs_entry: %p\n",
@@ -2071,8 +2086,8 @@
 	de->inode.mtime = inode->i_mtime;
 	de->inode.ctime = inode->i_ctime;
 
-	if ((iattr->ia_valid & (ATTR_MODE | ATTR_UID | ATTR_GID)) &&
-			!is_devfsd_or_child(fs_info))
+	if (!is_devfsd_or_child(fs_info) &&
+			(iattr->ia_valid & (ATTR_MODE | ATTR_UID | ATTR_GID)))
 		devfsd_notify_de(de, DEVFSD_NOTIFY_CHANGE, inode->i_mode,
 				 inode->i_uid, inode->i_gid, fs_info);
 
@@ -2102,7 +2117,8 @@
 	if (de->prev == de)
 		return NULL;	/*  Quick check to see if unhooked  */
 
-	if ((inode = new_inode(sb)) == NULL) {
+	inode = new_inode(sb);
+	if (!inode) {
 		PRINTK("(%s): new_inode() failed, de: %p\n", de->name, de);
 		return NULL;
 	}
@@ -2136,11 +2152,11 @@
 
 	if (S_ISCHR(de->mode)) {
 		inode->i_rdev = de->u.cdev.dev;
-	} else if (S_ISBLK(de->mode))
+	} else if (S_ISBLK(de->mode)) {
 		init_special_inode(inode, de->mode, de->u.bdev.dev);
-	else if (S_ISFIFO(de->mode))
+	} else if (S_ISFIFO(de->mode)) {
 		inode->i_fop = &def_fifo_fops;
-	else if (S_ISDIR(de->mode)) {
+	} else if (S_ISDIR(de->mode)) {
 		inode->i_op = &devfs_dir_iops;
 		inode->i_fop = &devfs_dir_fops;
 	} else if (S_ISLNK(de->mode)) {
@@ -2246,7 +2262,7 @@
 	struct file_operations *ops;
 
 	de = get_devfs_entry_from_vfs_inode(inode);
-	if (de == NULL)
+	if (!de)
 		return -ENODEV;
 
 	if (S_ISDIR(de->mode))
@@ -2261,7 +2277,9 @@
 
 		if (file->f_op) {
 			lock_kernel();
-			err = file->f_op->open ? (*file->f_op->open) (inode, file) : 0;
+			err = 0;
+			if (file->f_op->open)
+				err = file->f_op->open(inode, file);
 			unlock_kernel();
 		} else
 			err = chrdev_open(inode, file);
@@ -2344,7 +2362,7 @@
 		dentry->d_op = &devfs_dops;
 
 	/*  Unhash dentry if negative (has no inode)  */
-	if (inode == NULL) {
+	if (!inode) {
 		DPRINTK(DEBUG_D_DELETE, "(%p): dropping negative dentry\n",
 			dentry);
 		return 1;
@@ -2380,13 +2398,13 @@
 		if (dentry->d_inode)
 			return 1;
 
-		if (de == NULL) {
+		if (!de) {
 			read_lock(&parent->u.dir.lock);
 			de = _devfs_search_dir(parent, dentry->d_name.name,
 					       dentry->d_name.len);
 			read_unlock(&parent->u.dir.lock);
 
-			if (de == NULL)
+			if (!de)
 				return 1;
 
 			lookup_info->de = de;
@@ -2409,7 +2427,7 @@
 		return 1;
 	}
 
-	if (lookup_info == NULL)
+	if (!lookup_info)
 		return 1;
 
 	read_lock(&parent->u.dir.lock);
@@ -2470,7 +2488,8 @@
 	init_waitqueue_head(&lookup_info.wait_queue);
 	dentry->d_fsdata = &lookup_info;
 
-	if (de == NULL) {
+	if (!de) {
+		int status;
 		/*
 		 * Try with devfsd. For any kind of failure, leave a negative
 		 * dentry so someone else can deal with it (in the case where
@@ -2478,8 +2497,10 @@
 		 * before hashing the dentry, so that the devfsd queue is
 		 * filled before revalidates can start
 		 */
-		if (try_modload(parent, fs_info,
-			dentry->d_name.name, dentry->d_name.len, &tmp) < 0) {
+		status = try_modload(parent, fs_info,
+				     dentry->d_name.name, dentry->d_name.len,
+				     &tmp);
+		if (status < 0) {
 			/*  Lookup event was not queued to devfsd  */
 			d_add(dentry, NULL);
 			return NULL;
@@ -2507,12 +2528,12 @@
 	if (dentry->d_inode)
 		goto out;
 
-	if (de == NULL) {
+	if (!de) {
 		read_lock(&parent->u.dir.lock);
 		de = _devfs_search_dir(parent, dentry->d_name.name,
 				       dentry->d_name.len);
 		read_unlock(&parent->u.dir.lock);
-		if (de == NULL)
+		if (!de)
 			goto out;
 		/* OK, there's an entry now, but no VFS inode yet */
 	}
@@ -2554,7 +2575,7 @@
 
 	DPRINTK(DEBUG_I_UNLINK, "(%s): de: %p\n", dentry->d_name.name, de);
 
-	if (de == NULL)
+	if (!de)
 		return -ENOENT;
 
 	if (!de->vfs_deletable)
@@ -2586,7 +2607,7 @@
 
 	/* First try to get the devfs entry for this directory */
 	parent = get_devfs_entry_from_vfs_inode(dir);
-	if (parent == NULL)
+	if (!parent)
 		return -ENOENT;
 
 	err = devfs_do_symlink(parent, dentry->d_name.name, symname, &de);
@@ -2605,7 +2626,8 @@
 	de->inode.mtime = CURRENT_TIME;
 	de->inode.ctime = CURRENT_TIME;
 
-	if ((inode = _devfs_get_vfs_inode(dir->i_sb, de, dentry)) == NULL)
+	inode = _devfs_get_vfs_inode(dir->i_sb, de, dentry);
+	if (!inode)
 		return -ENOMEM;
 
 	DPRINTK(DEBUG_DISABLED,
@@ -2631,7 +2653,7 @@
 	/*  VFS doesn't pass S_IFMT part  */
 	mode = (mode & ~S_IFMT) | S_IFDIR;
 	parent = get_devfs_entry_from_vfs_inode(dir);
-	if (parent == NULL)
+	if (!parent)
 		return -ENOENT;
 
 	de = _devfs_alloc_entry(dentry->d_name.name, dentry->d_name.len, mode);
@@ -2640,7 +2662,8 @@
 
 	de->vfs_deletable = TRUE;
 
-	if ((err = _devfs_append_entry(parent, de, NULL)) != 0)
+	err = _devfs_append_entry(parent, de, NULL);
+	if (err)
 		return err;
 
 	de->inode.uid = current->euid;
@@ -2649,7 +2672,8 @@
 	de->inode.mtime = CURRENT_TIME;
 	de->inode.ctime = CURRENT_TIME;
 
-	if ((inode = _devfs_get_vfs_inode(dir->i_sb, de, dentry)) == NULL)
+	inode = _devfs_get_vfs_inode(dir->i_sb, de, dentry);
+	if (!inode)
 		return -ENOMEM;
 
 	DPRINTK(DEBUG_DISABLED,
@@ -2676,7 +2700,7 @@
 		return -EINVAL;
 
 	de = get_devfs_entry_from_vfs_inode(inode);
-	if (de == NULL)
+	if (!de)
 		return -ENOENT;
 
 	if (!S_ISDIR(de->mode))
@@ -2727,7 +2751,7 @@
 		dentry->d_name.name, mode, MAJOR(rdev), MINOR(rdev));
 
 	parent = get_devfs_entry_from_vfs_inode(dir);
-	if (parent == NULL)
+	if (!parent)
 		return -ENOENT;
 
 	de = _devfs_alloc_entry(dentry->d_name.name, dentry->d_name.len, mode);
@@ -2749,7 +2773,8 @@
 	de->inode.mtime = CURRENT_TIME;
 	de->inode.ctime = CURRENT_TIME;
 
-	if ((inode = _devfs_get_vfs_inode(dir->i_sb, de, dentry)) == NULL)
+	inode = _devfs_get_vfs_inode(dir->i_sb, de, dentry);
+	if (!inode)
 		return -ENOMEM;
 
 	DPRINTK(DEBUG_I_MKNOD, ":   new VFS inode(%u): %p  dentry: %p\n",
@@ -2816,7 +2841,7 @@
 {
 	struct inode *root_inode = NULL;
 
-	if (_devfs_get_root_entry() == NULL)
+	if (!_devfs_get_root_entry())
 		goto out_no_root;
 
 	atomic_set(&fs_info.devfsd_overrun_count, 0);
@@ -2829,7 +2854,8 @@
 	sb->s_magic = DEVFS_SUPER_MAGIC;
 	sb->s_op = &devfs_sops;
 
-	if ((root_inode = _devfs_get_vfs_inode(sb, root_entry, NULL)) == NULL)
+	root_inode = _devfs_get_vfs_inode(sb, root_entry, NULL);
+	if (!root_inode)
 		goto out_no_root;
 
 	sb->s_root = d_alloc_root(root_inode);
@@ -2955,6 +2981,8 @@
 	}
 
 	if ((rpos >= devname_offset) && (len > 0)) {
+		void *to;
+
 		/*  Copy the name  */
 		tlen = info->namelen + 1;
 
@@ -2963,7 +2991,8 @@
 		else
 			done = TRUE;
 
-		if (copy_to_user(buf, info->devname + pos + rpos - devname_offset, tlen)) {
+		to = info->devname + pos + rpos - devname_offset;
+		if (copy_to_user(buf, to, tlen)) {
 			return -EFAULT;
 		}
 
@@ -2977,7 +3006,7 @@
 
 		spin_lock(&fs_info->devfsd_buffer_lock);
 		fs_info->devfsd_first_event = entry->next;
-		if (entry->next == NULL)
+		if (!entry->next)
 			fs_info->devfsd_last_event = NULL;
 		spin_unlock(&fs_info->devfsd_buffer_lock);
 
@@ -3177,7 +3206,7 @@
 		return;
 
 	err = do_mount("none", "/dev", "devfs", 0, "");
-	if (err == 0)
+	if (!err)
 		printk(KERN_INFO "Mounted devfs on /dev\n");
 	else
 		PRINTK("(): unable to mount devfs, err: %d\n", err);
