osc_page_putref_lock() used to check cl_lock's refcount and
corresponding osc_lock's ols_hold without any protection, this
is racy because other process can change the lock state so as to
make the assertion be false.
Signed-off-by: Jinshan Xiong <jinshan.xiong@whamcloud.com>
Change-Id: I65fe1fa7fc55e8642fea6789784d7bb92a45d56f
Reviewed-on: http://review.whamcloud.com/2616
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Niu Yawei <niu@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
cfs_atomic_dec(&olock->ols_pageref);
opg->ops_lock = NULL;
- /*
- * Note: usually this won't be the last reference of the lock, but if
- * it is, then all the lock_put do is at most just freeing some memory,
- * so it would be OK that caller is holding spinlocks.
- */
- LASSERT(cfs_atomic_read(&lock->cll_ref) > 1 || olock->ols_hold == 0);
cl_lock_put(env, lock);
}