From d821adb626e050206f1b4605f1159cf65ad22af5 Mon Sep 17 00:00:00 2001 From: Dmitry Eremin Date: Thu, 11 Apr 2013 15:55:57 +0400 Subject: [PATCH] LU-3157 llite: A not locked mutex can be unlocked. In case of memory pressure a not locked mutex can be unlocked in function ll_file_open(). This is not allowed and subsequent behavior is not defined. Signed-off-by: Dmitry Eremin Change-Id: I21368247cac23038f9b995e9de328f9286909731 Reviewed-on: http://review.whamcloud.com/6028 Reviewed-by: John Hammond Reviewed-by: Nikitas Angelinas Tested-by: Hudson Reviewed-by: Sebastien Buisson Tested-by: Maloo Reviewed-by: Andreas Dilger --- lustre/llite/file.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lustre/llite/file.c b/lustre/llite/file.c index ce4259d..85c3944 100644 --- a/lustre/llite/file.c +++ b/lustre/llite/file.c @@ -526,12 +526,12 @@ int ll_file_open(struct inode *inode, struct file *file) it = file->private_data; /* XXX: compat macro */ file->private_data = NULL; /* prevent ll_local_open assertion */ - fd = ll_file_data_get(); - if (fd == NULL) - GOTO(out_och_free, rc = -ENOMEM); + fd = ll_file_data_get(); + if (fd == NULL) + GOTO(out_openerr, rc = -ENOMEM); - fd->fd_file = file; - if (S_ISDIR(inode->i_mode)) { + fd->fd_file = file; + if (S_ISDIR(inode->i_mode)) { spin_lock(&lli->lli_sa_lock); if (lli->lli_opendir_key == NULL && lli->lli_sai == NULL && lli->lli_opendir_pid == 0) { @@ -540,7 +540,7 @@ int ll_file_open(struct inode *inode, struct file *file) opendir_set = 1; } spin_unlock(&lli->lli_sa_lock); - } + } if (inode->i_sb->s_root == file->f_dentry) { LUSTRE_FPRIVATE(file) = fd; -- 1.8.3.1