public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* One more unlock missing in error case
@ 2006-02-04 17:23 Ulrich Drepper
  2006-02-05  0:08 ` Andrew Morton
  0 siblings, 1 reply; 4+ messages in thread
From: Ulrich Drepper @ 2006-02-04 17:23 UTC (permalink / raw)
  To: Linux Kernel, Linus Torvalds, Andrew Morton

[-- Attachment #1: Type: text/plain, Size: 1151 bytes --]

This patch is needed to in addition to the other unlocking fix which is
already applied.  It should be obvious that the system will deadlock in
case this isn't done.

(Andrew, I once again used a goto in the third error case because the
common code is again larger.)

Signed-Off-By: Ulrich Drepper <drepper@redhat.com>

--- fs/namei.c	2006-02-01 09:29:49.000000000 -0800
+++ fs/namei.c-new	2006-02-04 09:18:02.000000000 -0800
@@ -1096,6 +1096,7 @@

 		file = fget_light(dfd, &fput_needed);
 		if (!file) {
+			read_unlock(&current->fs->lock);
 			retval = -EBADF;
 			goto out_fail;
 		}
@@ -1104,15 +1105,15 @@

 		if (!S_ISDIR(dentry->d_inode->i_mode)) {
 			retval = -ENOTDIR;
+		unlock_fail:
 			fput_light(file, fput_needed);
+			read_unlock(&current->fs->lock);
 			goto out_fail;
 		}

 		retval = file_permission(file, MAY_EXEC);
-		if (retval) {
-			fput_light(file, fput_needed);
-			goto out_fail;
-		}
+		if (retval)
+			goto unlock_fail;

 		nd->mnt = mntget(file->f_vfsmnt);
 		nd->dentry = dget(dentry);


-- 
➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 251 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-02-05  1:46 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-02-04 17:23 One more unlock missing in error case Ulrich Drepper
2006-02-05  0:08 ` Andrew Morton
2006-02-05  0:49   ` Ulrich Drepper
2006-02-05  1:46   ` Adrian Bunk

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox