gfs2: Protect gl->gl_object by spin lock
Put all remaining accesses to gl->gl_object under the gl->gl_lockref.lock spinlock to prevent races. Signed-off-by: Andreas Gruenbacher <agruenba@redhat.com> Signed-off-by: Bob Peterson <rpeterso@redhat.com>
Tento commit je obsažen v:

odevzdal
Bob Peterson

rodič
4fd1a57952
revize
6f6597baae
@@ -705,9 +705,7 @@ void gfs2_clear_rgrpd(struct gfs2_sbd *sdp)
|
||||
rb_erase(n, &sdp->sd_rindex_tree);
|
||||
|
||||
if (gl) {
|
||||
spin_lock(&gl->gl_lockref.lock);
|
||||
gl->gl_object = NULL;
|
||||
spin_unlock(&gl->gl_lockref.lock);
|
||||
glock_set_object(gl, NULL);
|
||||
gfs2_glock_add_to_lru(gl);
|
||||
gfs2_glock_put(gl);
|
||||
}
|
||||
@@ -917,7 +915,7 @@ static int read_rindex_entry(struct gfs2_inode *ip)
|
||||
error = rgd_insert(rgd);
|
||||
spin_unlock(&sdp->sd_rindex_spin);
|
||||
if (!error) {
|
||||
rgd->rd_gl->gl_object = rgd;
|
||||
glock_set_object(rgd->rd_gl, rgd);
|
||||
rgd->rd_gl->gl_vm.start = (rgd->rd_addr * bsize) & PAGE_MASK;
|
||||
rgd->rd_gl->gl_vm.end = PAGE_ALIGN((rgd->rd_addr +
|
||||
rgd->rd_length) * bsize) - 1;
|
||||
|
Odkázat v novém úkolu
Zablokovat Uživatele