From: Andreas Gruenbacher agruenba@redhat.com
mainline inclusion from mainline-v6.6-rc1 commit 3c69c437bf9832d2201702c5ccc3b8a77a7e0aa3 category: bugfix bugzilla: https://gitee.com/src-openeuler/kernel/issues/IA6SA1 CVE: CVE-2024-38570
Reference: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=...
--------------------------------
Rename sd_glock_wait to sd_kill_wait: we'll use it for other things related to "killing" a filesystem on unmount soon (kill_sb).
Signed-off-by: Andreas Gruenbacher agruenba@redhat.com Conflicts: fs/gfs2/glock.c [Resolve conflicts due to several refactor patches not merged.] Signed-off-by: Zeng Heng zengheng4@huawei.com --- fs/gfs2/glock.c | 6 +++--- fs/gfs2/incore.h | 2 +- fs/gfs2/ops_fstype.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/fs/gfs2/glock.c b/fs/gfs2/glock.c index ee5cca5926ed..b1cc826f1e5a 100644 --- a/fs/gfs2/glock.c +++ b/fs/gfs2/glock.c @@ -169,7 +169,7 @@ void gfs2_glock_free(struct gfs2_glock *gl) wake_up_glock(gl); call_rcu(&gl->gl_rcu, gfs2_glock_dealloc); if (atomic_dec_and_test(&sdp->sd_glock_disposal)) - wake_up(&sdp->sd_glock_wait); + wake_up(&sdp->sd_kill_wait); }
/** @@ -1097,7 +1097,7 @@ int gfs2_glock_get(struct gfs2_sbd *sdp, u64 number, kfree(gl->gl_lksb.sb_lvbptr); kmem_cache_free(cachep, gl); if (atomic_dec_and_test(&sdp->sd_glock_disposal)) - wake_up(&sdp->sd_glock_wait); + wake_up(&sdp->sd_kill_wait);
out: return ret; @@ -2010,7 +2010,7 @@ void gfs2_gl_hash_clear(struct gfs2_sbd *sdp) flush_workqueue(glock_workqueue); glock_hash_walk(clear_glock, sdp); flush_workqueue(glock_workqueue); - wait_event_timeout(sdp->sd_glock_wait, + wait_event_timeout(sdp->sd_kill_wait, atomic_read(&sdp->sd_glock_disposal) == 0, HZ * 600); glock_hash_walk(dump_glock_func, sdp); diff --git a/fs/gfs2/incore.h b/fs/gfs2/incore.h index f8858d995b24..4025d2be8016 100644 --- a/fs/gfs2/incore.h +++ b/fs/gfs2/incore.h @@ -741,7 +741,7 @@ struct gfs2_sbd { struct gfs2_glock *sd_rename_gl; struct gfs2_glock *sd_freeze_gl; struct work_struct sd_freeze_work; - wait_queue_head_t sd_glock_wait; + wait_queue_head_t sd_kill_wait; wait_queue_head_t sd_async_glock_wait; atomic_t sd_glock_disposal; struct completion sd_locking_init; diff --git a/fs/gfs2/ops_fstype.c b/fs/gfs2/ops_fstype.c index 648f7336043f..f6166f590fc9 100644 --- a/fs/gfs2/ops_fstype.c +++ b/fs/gfs2/ops_fstype.c @@ -87,7 +87,7 @@ static struct gfs2_sbd *init_sbd(struct super_block *sb) set_bit(SDF_NOJOURNALID, &sdp->sd_flags); gfs2_tune_init(&sdp->sd_tune);
- init_waitqueue_head(&sdp->sd_glock_wait); + init_waitqueue_head(&sdp->sd_kill_wait); init_waitqueue_head(&sdp->sd_async_glock_wait); atomic_set(&sdp->sd_glock_disposal, 0); init_completion(&sdp->sd_locking_init);