From: Niu Yawei Date: Mon, 4 Feb 2013 03:49:26 +0000 (-0500) Subject: LU-2737 osc: double unlock in osc_lru_shrink() X-Git-Tag: 2.3.61~37 X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=commitdiff_plain;h=065288d9ca770c8f3c7130cd4791445decb469a7;ds=sidebyside LU-2737 osc: double unlock in osc_lru_shrink() It could unlock twice in osc_lru_shrink() if the cl_io_init() failed. Signed-off-by: Niu Yawei Change-Id: Idf3ebafced7f7d3a68c13ea20d12cf221e9d74ce Reviewed-on: http://review.whamcloud.com/5258 Reviewed-by: Bobi Jam Tested-by: Hudson Tested-by: Maloo Reviewed-by: Jinshan Xiong Reviewed-by: Andreas Dilger --- diff --git a/lustre/osc/osc_page.c b/lustre/osc/osc_page.c index 75e6108..5c6102a 100644 --- a/lustre/osc/osc_page.c +++ b/lustre/osc/osc_page.c @@ -718,11 +718,13 @@ int osc_lru_shrink(struct client_obd *cli, int target) clobj = tmp; io->ci_obj = clobj; rc = cl_io_init(env, io, CIT_MISC, clobj); + + client_obd_list_lock(&cli->cl_lru_list_lock); + if (rc != 0) break; ++maxscan; - client_obd_list_lock(&cli->cl_lru_list_lock); continue; }