ocfs2: Check the owner of a lockres inside the spinlock
The checking of lockres owner in dlm_update_lvb() is not inside spinlock protection. I don't see problem in current call path of dlm_update_lvb(). But just for code robustness. Signed-off-by: Wengang Wang <wen.gang.wang@oracle.com> Signed-off-by: Joel Becker <joel.becker@oracle.com>
This commit is contained in:
parent
a03ab788d0
commit
428257f887
|
@ -185,9 +185,8 @@ static void dlm_update_lvb(struct dlm_ctxt *dlm, struct dlm_lock_resource *res,
|
||||||
BUG_ON(!lksb);
|
BUG_ON(!lksb);
|
||||||
|
|
||||||
/* only updates if this node masters the lockres */
|
/* only updates if this node masters the lockres */
|
||||||
|
spin_lock(&res->spinlock);
|
||||||
if (res->owner == dlm->node_num) {
|
if (res->owner == dlm->node_num) {
|
||||||
|
|
||||||
spin_lock(&res->spinlock);
|
|
||||||
/* check the lksb flags for the direction */
|
/* check the lksb flags for the direction */
|
||||||
if (lksb->flags & DLM_LKSB_GET_LVB) {
|
if (lksb->flags & DLM_LKSB_GET_LVB) {
|
||||||
mlog(0, "getting lvb from lockres for %s node\n",
|
mlog(0, "getting lvb from lockres for %s node\n",
|
||||||
|
@ -202,8 +201,8 @@ static void dlm_update_lvb(struct dlm_ctxt *dlm, struct dlm_lock_resource *res,
|
||||||
* here. In the future we might want to clear it at the time
|
* here. In the future we might want to clear it at the time
|
||||||
* the put is actually done.
|
* the put is actually done.
|
||||||
*/
|
*/
|
||||||
spin_unlock(&res->spinlock);
|
|
||||||
}
|
}
|
||||||
|
spin_unlock(&res->spinlock);
|
||||||
|
|
||||||
/* reset any lvb flags on the lksb */
|
/* reset any lvb flags on the lksb */
|
||||||
lksb->flags &= ~(DLM_LKSB_PUT_LVB|DLM_LKSB_GET_LVB);
|
lksb->flags &= ~(DLM_LKSB_PUT_LVB|DLM_LKSB_GET_LVB);
|
||||||
|
|
Loading…
Reference in New Issue