Whamcloud - gitweb
LU-5221 vvp: release mmap_sem in error case
authorPatrick Farrell <paf@cray.com>
Wed, 18 Jun 2014 02:48:44 +0000 (21:48 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Mon, 11 Aug 2014 15:36:46 +0000 (11:36 -0400)
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 673c383..eb67f65 100644 (file)
@@ -275,8 +275,10 @@ static int vvp_mmap_locks(const struct lu_env *env,
                                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;