diff -urpN --exclude-from=/home/davej/.exclude bk-linus/fs/jffs2/dir.c linux-2.5/fs/jffs2/dir.c
--- bk-linus/fs/jffs2/dir.c	2002-11-21 02:20:18.000000000 +0000
+++ linux-2.5/fs/jffs2/dir.c	2002-11-21 18:02:17.000000000 +0000
@@ -785,6 +785,18 @@ static int jffs2_rename (struct inode *o
 	if (S_ISDIR(old_dentry->d_inode->i_mode) && !victim_f)
 		new_dir_i->i_nlink++;
 
+	if (victim_f) {
+		/* There was a victim. Kill it off nicely */
+		new_dentry->d_inode->i_nlink--;
+		/* Don't oops if the victim was a dirent pointing to an
+		   inode which didn't exist. */
+		if (victim_f->inocache) {
+			down(&victim_f->sem);
+			victim_f->inocache->nlink--;
+			up(&victim_f->sem);
+		}
+	}
+
 	/* Unlink the original */
 	ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i), 
 		      old_dentry->d_name.name, old_dentry->d_name.len, NULL);
