From 5b1b742e87431da52842fad3ba80a251dc2e7455 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 673c383..eb67f65 100644 --- a/lustre/llite/vvp_io.c +++ b/lustre/llite/vvp_io.c @@ -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; -- 1.8.3.1