lkml.org 
[lkml]   [2006]   [Feb]   [4]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
SubjectOne more unlock missing in error case
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 ❖

[unhandled content-type:application/pgp-signature]
\
 
 \ /
  Last update: 2006-02-04 18:24    [W:2.042 / U:0.004 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site