Whamcloud - gitweb
LU-5221 vvp: release mmap_sem in error case 41/10741/2
authorPatrick Farrell <paf@cray.com>
Wed, 18 Jun 2014 02:48:44 +0000 (21:48 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Wed, 18 Jun 2014 19:26:11 +0000 (19:26 +0000)
The mmap_sem is downed in vvp_mmap_locks, but in case of
error from cl_io_lock_alloc_add, it is not upped.

Credit to Paul Casella at Cray for finding this.

Signed-off-by: Patrick Farrell <paf@cray.com>
Change-Id: If172e7cb4c4e6400143d76eee8aa595ae767a20c
Reviewed-on: http://review.whamcloud.com/10741
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Andreas Dilger <andreas.dilger@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
lustre/llite/vvp_io.c

index e95edcf..47e59ff 100644 (file)
@@ -296,8 +296,10 @@ static int vvp_mmap_locks(const struct lu_env *env,
                                descr->cld_mode, descr->cld_start,
                                descr->cld_end);
 
                                descr->cld_mode, descr->cld_start,
                                descr->cld_end);
 
-                        if (result < 0)
-                                RETURN(result);
+                       if (result < 0) {
+                               up_read(&mm->mmap_sem);
+                               RETURN(result);
+                       }
 
                         if (vma->vm_end - addr >= count)
                                 break;
 
                         if (vma->vm_end - addr >= count)
                                 break;