osc_ldlm_weigh_ast() uses osc_object from ldlm_lock
without taking a reference.
It should take a reference like osc_ldlm_glimpse_ast()/
osc_dlm_blocking_ast0() does.
Change-Id: I33a817e4c08c2955f5395b13ffe8cd11f3bdf691
Seagate-bug-id: MRP-4179
Signed-off-by: Andriy Skulysh <andriy.skulysh@seagate.com>
Reviewed-on: https://review.whamcloud.com/25700
Reviewed-by: Jinshan Xiong <jinshan.xiong@intel.com>
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Bobi Jam <bobijam@hotmail.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
RETURN(1);
LASSERT(dlmlock->l_resource->lr_type == LDLM_EXTENT);
+ lock_res_and_lock(dlmlock);
obj = dlmlock->l_ast_data;
+ if (obj)
+ cl_object_get(osc2cl(obj));
+ unlock_res_and_lock(dlmlock);
+
if (obj == NULL)
GOTO(out, weight = 1);
EXIT;
out:
+ if (obj)
+ cl_object_put(env, osc2cl(obj));
+
cl_env_put(env, &refcheck);
return weight;
}