diff -NurpP --minimal linux-2.6.26.3-vs2.3.0.35/fs/namei.c linux-2.6.26.3-vs2.3.0.35.1/fs/namei.c
--- linux-2.6.26.3-vs2.3.0.35/fs/namei.c	2008-08-12 01:42:21.000000000 -0400
+++ linux-2.6.26.3-vs2.3.0.35.1/fs/namei.c	2008-08-26 04:19:21.000000000 -0400
@@ -1972,15 +1972,18 @@ ok:
 		dentry = cow_break_link(pathname);
 		if (IS_ERR(dentry)) {
 			error = PTR_ERR(dentry);
-			goto exit;
+			goto exit_cow;
 		}
 		dput(dentry);
+		if (will_write)
+			mnt_drop_write(nd.path.mnt);
 		release_open_intent(&nd);
 		path_put(&nd.path);
 		flag = rflag;
 		mode = rmode;
 		goto restart;
 	}
+exit_cow:
 #endif
 	if (error) {
 		if (will_write)
