From dece70280b7075c4ca39472ad48e72d696b6fcf8 Mon Sep 17 00:00:00 2001 From: Patrick Farrell Date: Tue, 17 Jun 2014 21:48:44 -0500 Subject: [PATCH] LU-5221 vvp: release mmap_sem in error case 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 Change-Id: If172e7cb4c4e6400143d76eee8aa595ae767a20c Reviewed-on: http://review.whamcloud.com/10741 Tested-by: Jenkins Tested-by: Maloo Reviewed-by: Andreas Dilger Reviewed-by: Oleg Drokin --- lustre/llite/vvp_io.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lustre/llite/vvp_io.c b/lustre/llite/vvp_io.c index e95edcf..47e59ff 100644 --- a/lustre/llite/vvp_io.c +++ b/lustre/llite/vvp_io.c @@ -296,8 +296,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; -- 1.8.3.1