diff options
author | Wengang Wang <wen.gang.wang@oracle.com> | 2010-03-24 10:40:44 -0400 |
---|---|---|
committer | Joel Becker <joel.becker@oracle.com> | 2010-03-30 15:55:55 -0400 |
commit | 428257f8870f0e72e85ce782d091fa1f366de7df (patch) | |
tree | b705c3aa023b88595adb4d18a455e0c67c18a7f2 /fs | |
parent | a03ab788d070c256eff1ac24cf0e3bc2ca148096 (diff) |
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>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/ocfs2/dlm/dlmast.c | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/fs/ocfs2/dlm/dlmast.c b/fs/ocfs2/dlm/dlmast.c index dccc439fa087..b7a25ef18e2a 100644 --- a/fs/ocfs2/dlm/dlmast.c +++ b/fs/ocfs2/dlm/dlmast.c | |||
@@ -185,9 +185,8 @@ static void dlm_update_lvb(struct dlm_ctxt *dlm, struct dlm_lock_resource *res, | |||
185 | BUG_ON(!lksb); | 185 | BUG_ON(!lksb); |
186 | 186 | ||
187 | /* only updates if this node masters the lockres */ | 187 | /* only updates if this node masters the lockres */ |
188 | spin_lock(&res->spinlock); | ||
188 | if (res->owner == dlm->node_num) { | 189 | if (res->owner == dlm->node_num) { |
189 | |||
190 | spin_lock(&res->spinlock); | ||
191 | /* check the lksb flags for the direction */ | 190 | /* check the lksb flags for the direction */ |
192 | if (lksb->flags & DLM_LKSB_GET_LVB) { | 191 | if (lksb->flags & DLM_LKSB_GET_LVB) { |
193 | mlog(0, "getting lvb from lockres for %s node\n", | 192 | 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, | |||
202 | * here. In the future we might want to clear it at the time | 201 | * here. In the future we might want to clear it at the time |
203 | * the put is actually done. | 202 | * the put is actually done. |
204 | */ | 203 | */ |
205 | spin_unlock(&res->spinlock); | ||
206 | } | 204 | } |
205 | spin_unlock(&res->spinlock); | ||
207 | 206 | ||
208 | /* reset any lvb flags on the lksb */ | 207 | /* reset any lvb flags on the lksb */ |
209 | lksb->flags &= ~(DLM_LKSB_PUT_LVB|DLM_LKSB_GET_LVB); | 208 | lksb->flags &= ~(DLM_LKSB_PUT_LVB|DLM_LKSB_GET_LVB); |