Re: [PATCH] cifs: fix fh_mutex locking in cifs_reopen_file

Steve French <[email protected]>
Newsgroups gmane.linux.kernel,gmane.linux.file-systems.cifs
Message-ID <[email protected]>
Good catch .

I have reviewed and merged into cifs-2.6.git. Merge requested for upstream.

On Sat, Jun 27, 2009 at 6:04 AM, Jeff Layton<[email protected]> wrote:
> Fixes a regression caused by commit a6ce4932fbdbcd8f8e8c6df76812014351c32892
>
> When this lock was converted to a mutex, the locks were turned into
> unlocks and vice-versa.
>
> Signed-off-by: Jeff Layton <[email protected]>
> Cc: Stable Tree <[email protected]>
> ---
>  fs/cifs/file.c |   10 +++++-----
>  1 files changed, 5 insertions(+), 5 deletions(-)
>
> diff --git a/fs/cifs/file.c b/fs/cifs/file.c
> index ebdbe62..97ce4bf 100644
> --- a/fs/cifs/file.c
> +++ b/fs/cifs/file.c
> @@ -493,9 +493,9 @@ static int cifs_reopen_file(struct file *file, bool can_flush)
>                return -EBADF;
>
>        xid = GetXid();
> -       mutex_unlock(&pCifsFile->fh_mutex);
> +       mutex_lock(&pCifsFile->fh_mutex);
>        if (!pCifsFile->invalidHandle) {
> -               mutex_lock(&pCifsFile->fh_mutex);
> +               mutex_unlock(&pCifsFile->fh_mutex);
>                rc = 0;
>                FreeXid(xid);
>                return rc;
> @@ -527,7 +527,7 @@ static int cifs_reopen_file(struct file *file, bool can_flush)
>        if (full_path == NULL) {
>                rc = -ENOMEM;
>  reopen_error_exit:
> -               mutex_lock(&pCifsFile->fh_mutex);
> +               mutex_unlock(&pCifsFile->fh_mutex);
>                FreeXid(xid);
>                return rc;
>        }
> @@ -569,14 +569,14 @@ reopen_error_exit:
>                         cifs_sb->local_nls, cifs_sb->mnt_cifs_flags &
>                                CIFS_MOUNT_MAP_SPECIAL_CHR);
>        if (rc) {
> -               mutex_lock(&pCifsFile->fh_mutex);
> +               mutex_unlock(&pCifsFile->fh_mutex);
>                cFYI(1, ("cifs_open returned 0x%x", rc));
>                cFYI(1, ("oplock: %d", oplock));
>        } else {
>  reopen_success:
>                pCifsFile->netfid = netfid;
>                pCifsFile->invalidHandle = false;
> -               mutex_lock(&pCifsFile->fh_mutex);
> +               mutex_unlock(&pCifsFile->fh_mutex);
>                pCifsInode = CIFS_I(inode);
>                if (pCifsInode) {
>                        if (can_flush) {
> --
> 1.6.0.6
>
>



-- 
Thanks,

Steve
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.